×

扫描二维码登录本站

QQ登录

只需一步,快速开始

ZABBIX动态发现了磁盘监控

标签: 暂无标签

ZABBIX动态发现磁盘监控

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

参考h /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 导入模板
    导入后点击
    1.png
    编辑监控的选项
    将原来的监控键值都删除,添加在zabbix客户端配置文件中的对应键值
    监控磁盘每秒钟读取的字节数
    1.png
    监控磁盘每秒中写入的字节数
    1.png
    磁盘每秒钟读操作的次数
    1.png
    每秒钟写操作次数
    1.png
    磁盘每次读操作花费的毫秒
    1.png
    写花费的毫秒
    1.png
    添加绘图
    1.png
    1.png
    1.png
    1.png

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


    原创:大志




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

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

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

    成为第一个吐槽的人

    手机版|小黑屋|最新100贴|论坛版块|ITIL先锋论坛 |粤ICP备11099876号|网站地图
    Powered by Discuz! X3.4 Licensed  © 2001-2017 Comsenz Inc.
    返回顶部