ZABBIX动态发现磁盘监控

Posted 运维生存时间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZABBIX动态发现磁盘监控相关的知识,希望对你有一定的参考价值。

 

 ZABBIX动态发现磁盘监控

在linux下不同硬件或者系统版本不同识别到的块设备的名称各不相同,可能是sda、xda等等,因此通过zabbix监控磁盘普通的模板显得死板不不够灵活。通过zabbix的自动发现功能,通过脚本获取系统块设备的名称,然后保存到变量中,在通过zabbix客户端的自定义监控选项将监控的键值传给服务端。

参考http://www.ttlsa.com/zabbix/zabbix-lld-monitor-disk-io-stats/ 该文档部署,但需要修改zabbix服务端的模板文件,测试发生使用该文档提供的zbx_parse_iostat_values.sh获得的键值在zabbix服务端呈现图像时有问题,因此使用除了需要修改zabbix客户端的配置 文件中的自定义键值的获取方式外,还需要修改服务端模板文件

 

1创建自动发现脚本

 

vim /etc/zabbix/scripts/discover_disk.pl

#!/usr/bin/perl

# give disk dmname, returns Proxmox VM name

sub get_vmname_by_id

  {

  $vmname=`cat /etc/qemu-server/$_[0].conf | grep name | cut -d \: -f 2`;

  $vmname =~ s/^\s+//; #remove leading spaces

  $vmname =~ s/\s+$//; #remove trailing spaces

  return $vmname

  }

$first = 1;

print "{\n";

print "\t\"data\":[\n\n";

 

for (`cat /proc/diskstats`)

  {

  ($major,$minor,$disk) = m/^\s*([0-9]+)\s+([0-9]+)\s+(\S+)\s.*$/;

  $dmnamefile = "/sys/dev/block/$major:$minor/dm/name";

  $vmid= "";

  $vmname = "";

  $dmname = $disk;

  $diskdev = "/dev/$disk";

  # DM name

  if (-e $dmnamefile) {

    $dmname = `cat $dmnamefile`;

    $dmname =~ s/\n$//; #remove trailing \n

    $diskdev = "/dev/mapper/$dmname";

    # VM name and ID

    if ($dmname =~ m/^.*--([0-9]+)--.*$/) {

      $vmid = $1;

      #$vmname = get_vmname_by_id($vmid);

      }

    }

  #print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");

 

  print "\t,\n" if not $first;

  $first = 0;

 

  print "\t{\n";

  print "\t\t\"{#DISK}\":\"$disk\",\n";

  print "\t\t\"{#DMNAME}\":\"$dmname\",\n";

  print "\t\t\"{#VMNAME}\":\"$vmname\",\n";

  print "\t\t\"{#VMID}\":\"$vmid\"\n";

  print "\t}\n";

  }

 

print "\n\t]\n";

print "}\n";

 

# chmod 755 /etc/zabbix/scripts/discover_disk.pl


1ZABBIX客户端设置

 

# diskio discovery

UserParameter=discovery.disks.iostats,/etc/zabbix/scripts/discover_disk.pl

#读扇区的次数

UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'

#写扇区次数

UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'

#合并读完成次数

UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 |awk '{print $$4}'

#合并写完成次数

UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'

#读花费的毫秒数

UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'

#写操作花费的毫秒数

UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'


 


1重启ZABBIX客户端

使用zabbix_get测试这些自定义键值是否生效

 

zabbix_get s 127.0.0.1 k custom.vfs.dev.write.ms[sda1]

 

1配置服务端


导入模板文件zbx_export_templates.xml并修改

configuration-templates-import 导入模板

导入后点击

编辑监控的选项

将原来的监控键值都删除,添加在zabbix客户端配置文件中的对应键值

监控磁盘每秒钟读取的字节数

ZABBIX动态发现磁盘监控

监控磁盘每秒中写入的字节数

ZABBIX动态发现磁盘监控

磁盘每秒钟读操作的次数

ZABBIX动态发现磁盘监控

每秒钟写操作次数

ZABBIX动态发现磁盘监控

磁盘每次读操作花费的毫秒

ZABBIX动态发现磁盘监控

写花费的毫秒

ZABBIX动态发现磁盘监控

添加绘图

ZABBIX动态发现磁盘监控

ZABBIX动态发现磁盘监控

ZABBIX动态发现磁盘监控

ZABBIX动态发现磁盘监控

 

对需要监控磁盘的主机链接模板

ZABBIX动态发现磁盘监控

查看正则配置,改配置默认在导入模板后会有,需要修改

ZABBIX动态发现磁盘监控

编辑,在正则中添加sda1

查看监控结果

 

1作者

 大志@www.zhengdazhi.com,感谢投稿!


1. 回文章顶部,点“运维生存时间”进行订阅

3. 点击下方“阅读原文”

 

以上是关于ZABBIX动态发现磁盘监控的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix lld发现磁盘监控

分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

zabbix监控磁盘IO

分布式监控系统Zabbix4.2添加自动发现磁盘IO(实操)

zabbix之 自动发现磁盘io util 监控

zabbix模板的自动发现规则(ldd)实现被监控项自动发现