轉載至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)$
添加模板稍後就會畫出圖形