×

扫描二维码登录本站

标签: 暂无标签

ZABBIX动态发现磁盘监控

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

参考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客户端配置文件中的对应键值
    监控磁盘每秒钟读取的字节数
    监控磁盘每秒中写入的字节数
    磁盘每秒钟读操作的次数
    每秒钟写操作次数
    磁盘每次读操作花费的毫秒
    写花费的毫秒
    添加绘图

    对需要监控磁盘的主机链接模板
    查看正则配置,改配置默认在导入模板后会有,需要修改
    编辑,在正则中添加sda1
    查看监控结果


    原创:大志

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x




    上一篇:Zabbix3.0.0如何升级安装
    下一篇:如何使用Zabbix监控MySQL数据库
    monicazhang

    写了 2297 篇文章,拥有财富 12859,被 21 人关注

    您需要登录后才可以回帖 登录 | 立即注册
    B Color Link Quote Code Smilies

    成为第一个吐槽的人

    Powered by ITIL  © 2001-2025
    返回顶部