最近比較忙,因此好久沒有寫博客了,如今分享一下如何使用lld來監控磁盤的吞吐量與iops。 python
以前使用zabbix監控磁盤的時候,都是固定的磁盤,好比sda、sdb什麼的,而後不一樣監控磁盤名作不一樣的模板,若是磁盤名多了起來就不多麻煩,因此爲了解決這個問題,使用了lld來監控。 正則表達式
下面是監控效果圖: shell
一、Disk - Read/Write ms By vdb json
二、Disk - IO By vdb bash
三、Disk - Bytes/second By vdb 服務器
四、Disk - iops/second By vdb ui
如何實現: spa
1、客戶端 code
一、監控內容的json化 get
在客戶端裏,須要把監控的內容json化展現,而後服務端能夠經過正則來過濾出結果
下面在是個人json展現
腳本內容以下:
10:12:14 # cat partition_low_discovery.sh #!/bin/bash #Fucation:zabbix low-level discovery partition() { port=($(grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions|awk '{print $4}')) printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then printf '\t {\n' printf "\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf '\t {\n' printf "\t\t\t\"{#PARTITIONNAME}\":\"${port[${key}]}\"}\n" fi done printf '\t ]\n' printf '}\n' } $1
把此文件存放到/usr/local/zabbix/bin裏,而後給與755權限,並修改用戶與組爲zabbix
#Disable requiretty
sed -i 's/^Defaults.*.requiretty/#Defaults requiretty/'/etc/sudoers
在zabbix_agentd.conf最後添加如下內容
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}' UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}' UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}' UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}' UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}' UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}' 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=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/partition_low_discovery.sh $1
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
2、服務端
一、模板導入
把Template partition Auto Discovery導入到zabbix裏(模板在附件),具體操做不介紹。
二、設置正則
在「管理」=》「通常」=》「正則表達式」裏,選擇「新的正則表達式」
而後設置相似以下
三、主機關聯模板
把須要監控partition實例的主機管理模板便可監控,默認是3600秒後自動更新,以下圖
爲何設置3600秒?緣由是若是設置時間太短,好比你設置60s,一個是服務器的壓力大,一個是若是你檢測的端口忽然當掉了,尚未來的急報警,主機經過json來獲取不到這個信息,就認爲沒有這個端口,模板裏會自動關閉這個監控項的內容(默認保留30天,而後自動刪除),這樣報警功能就基本沒有了,因此仍是發現的間隔時間長一些比較好。