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自动发现监控linux 磁盘IO

    zabbix LLD功能监控磁盘IO的方法,使用的到的系统命令有/proc/diskstats动态磁盘IO监控用到...

  • zabbix 扩展 | 动态磁盘IO监控

    服务器磁盘的运作情况在一定程度上反应系统的负载。磁盘通常是服务器最慢的设备,极容易出现瓶颈,通过监控可以判断出整个...

  • zabbix监控io磁盘

    1.导入模板 https://github.com/H-Software/Zabbix-II/blob/maste...

  • zabbix自动发现监控windows 磁盘IO

    上一篇写了zabbix自动发现监控linux磁盘IO,那个是需要使用脚本来实现的监控,今天的windows只要使用...

  • zabbix自动发现磁盘监控io

    使用背景: 生产环境中每台主机磁盘数量不同,磁盘名称不同,虚拟机磁盘名称为vd[a-z],阿里云为xvd[a-z]...

  • Zabbix系列之(九):自动发现并监控磁盘IO、报警

    引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只...

  • zabbix监控磁盘

    环境准备:这里假设zabbix服务端和客户端都已安装,并且在被监控主机添加zabbix用户到信任用户 1、接下来安...

  • 监控IO使用情况

    监控IO使用情况 监控目的 监控指标 监控命令 监控实现 一、磁盘说明 磁盘在系统中负责存储和读取任务,磁盘的处理...

  • ansible部署zabbix监控系统

    1、搭建zabbix服务,实现监控linux和windows的内存,cpu,磁盘,网络等基础指标 zabbix部署...

  • 监控磁盘IO

    磁盘工作原理 磁头读取磁盘表面磁方向和改变其方向,每个盘面有一个磁头,它极其贴近地悬浮在盘面上,但是绝对不与盘面接...

网友评论

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

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