zabbixはディスクを自動的に発見し、ディスクIOを監視する


転載先http://www.jianshu.com/p/62c86a397b4d
サーバディスクの動作は、システムの負荷にある程度反応します.ディスクは通常、サーバが最も遅いデバイスであり、ボトルネックが発生しやすく、監視によってシステム全体のショートボードを判断することができます.zabbixが持参した「Template OS Linux」テンプレートは、ディスクを自動的に発見し、空間利用率を監視することができます.今回はzabbix LLD機能を利用してディスクIOを監視する方法を紹介します.使用するシステムコマンドは/proc/diskstatsです
ダイナミックディスクIOモニタで使用した3つのファイルをgithubにアップロードしました
https://github.com/JPOPS/Monitor/tree/master/zabbix-DiskIO
#        
/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/perlsub 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 "{
";print "\t\"data\":[

";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/
$//; #remove trailing 
    $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 
");   print "\t,
" if not $first;   $first = 0;  print "\t{
";  print "\t\t\"{#DISK}\":\"$disk\",
";  print "\t\t\"{#DISKDEV}\":\"$diskdev\",
";  print "\t\t\"{#DMNAME}\":\"$dmname\",
";  print "\t\t\"{#VMNAME}\":\"$vmname\",
";  print "\t\t\"{#VMID}\":\"$vmid\"
";  print "\t}
";   }print "
\t]
";print "}
";

zabbix agent構成
  • zabbix agentプロファイルを編集し、Includeディレクトリを設定する:
  • Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
  • keyファイルをagent構成フォルダの下に配置し、クライアント
  • を再起動する.
    # diskio discoveryUserParameter=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)$

    テンプレートを追加すると後でグラフィックが描画されます