zabbix 扩展 | 动态磁盘IO监控

作者: _简_述_ | 来源:发表于2016-12-20 15:51 被阅读1491次

    服务器磁盘的运作情况在一定程度上反应系统的负载。
    磁盘通常是服务器最慢的设备,极容易出现瓶颈,通过监控可以判断出整个系统的短板。
    zabbix自带的“Template OS Linux”模板可自动发现磁盘并监控空间利用率,小编这次介绍利用zabbix LLD功能监控磁盘IO的方法,使用的到的系统命令有/proc/diskstats


    cat /proc/diskstats
    • 动态磁盘IO监控用到的三个文件我已经上传至github点击下载
    #自动发现脚本文件
    /usr/local/zabbix/scripts/discover_disk.pl
    
    #模板文件web端导入即可
    Template_Linux_Disk_IO_Stats.xml
    
    #zabbix 自定义key文件
    /usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_io_stats
    

    自动发现脚本

    脚本非小编亲写,来自网络。

    #!/usr/bin/perl
    
    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\"{#DISKDEV}\":\"$diskdev\",\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";
    

    zabbix agent 配置

    • 编辑zabbix agent配置文件,设置Include目录:
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
    
    • 将key文件放置agent配置文件夹下,并重启客户端
    # diskio discovery
    UserParameter=discovery.disks.iostats,/usr/local/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}'
    

    Web配置

    • 导入Template_Linux_Disk_IO_Stats.xml
    • 管理 > 一般 > 正则表达式 > 新的正则表达式
      正则表达式内容根据自己主机硬盘名称填写,类型为结果为真
    #Linux disks for autodiscovery
    ^(xvda|xvdb|xvdc|sda|sdb|sdc)$
    
    新建正则表达式

    添加模板稍后就会画出图形


    相关文章

      网友评论

        本文标题:zabbix 扩展 | 动态磁盘IO监控

        本文链接:https://www.haomeiwen.com/subject/qebxvttx.html