zabbix自動發現磁盤並監控磁盤IO

轉載至http://www.jianshu.com/p/62c86a397b4d

服務器磁盤的運作情況在一定程度上反應系統的負載。
磁盤通常是服務器最慢的設備,極容易出現瓶頸,通過監控可以判斷出整個系統的短板。
zabbix自帶的“Template OS Linux”模板可自動發現磁盤並監控空間利用率,小編這次介紹利用zabbix LLD功能監控磁盤IO的方法,使用的到的系統命令有/proc/diskstats

動態磁盤IO監控用到的三個文件我已經上傳至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 "{\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 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)$

添加模板稍後就會畫出圖形

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章