请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站
联系我们
查看: 3239|回复: 0

ZABBIX动态发现磁盘监控

[复制链接]

141

主题

144

帖子

603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
603
发表于 2016-4-10 11:14:00 | 显示全部楼层 |阅读模式




    在Linux下不同硬件或者系统版本不同识别到的块设备的名称各不相同,可能是sda、xda等等,因此通过zabbix监控磁盘普通的模板显得死板不不够灵活。通过zabbix的自动发现功能,通过脚本获取系统块设备的名称,然后保存到变量中,在通过zabbix客户端的自定义监控选项将监控的键值传给服务端。
    需要修改zabbix服务端的模板文件,测试发生使用该文档提供的 zbx_parse_iostat_values.sh获得的键值在zabbix服务端呈现图像时有问题,因此使用除了需要修改zabbix客户端的配置文件中的自定义键值的获取方式外,还需要修改服务端模板文件
    创建自动发现脚本从网络上下载,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50

    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/$majorminor/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





    ZABBIX客户端设置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    # 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}'



  • 重启zabbix客户端
    使用zabbix_get测试这些自定义键值是否生效


    1

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




    配置服务端导入模板文件zbx_export_templates.xml并修改
    configuration-templates-import 导入模板
    导入后点击


    编辑监控的选项
    将原来的监控键值都删除,添加在zabbix客户端配置文件中的对应键值
    监控磁盘每秒钟读取的字节数


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

    磁盘每秒钟读操作的次数

    每秒钟写操作次数

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

    写花费的毫秒

    添加绘图





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

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

    编辑,在正则中添加sda1

    查看监控结果


    作者大志@www.zhengdazhi.com








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表