一、場景說明:
需要使用Zabbix監控服務器上各個磁盤的I/O使用率,當zabbix自身帶的item
無法滿足我們的時候,則需自定義item。
包括:
-
磁盤讀的次數
-
磁盤讀的毫秒數
-
磁盤寫的次數
-
磁盤寫的毫秒數
-
正在處理的輸入/輸出請求數
-
花費在I/O操作上的毫秒數
-
讀扇區的次數(一個扇區等於512B)
-
寫扇區的次數(一個扇區等於512B)
注意:本環境要監控的服務器在阿里雲上,所以每台服務器上的設備名稱不同,為解決此問題,我定義了多個模板來解決此問題!
各位小伙伴請根據實際情況進行配置
二、步驟概覽
1.數據來源:/proc/diskstats
/proc/diskstats文件說明
$1: 主設備號
$2: 次設備號
$3: 設備名稱
$4: 讀完成次數
$6: 讀扇區的次數(一個扇區等於512B)
$7: 讀磁盤的毫秒數
$8: 寫完成次數
$10: 寫扇區的次數(一個扇區等於512B)
$11: 磁盤寫的毫秒數
$12: 正在處理的輸入/輸出請求數
$13: 花費在I/O操作上的毫秒數
2.自定義item
3.在zabbix_server端測試
4.配置Zabbix-server WEB UI
5.監測最新數據
二、操作步驟:
1.自定義item並重新加載Agent.
~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_disk_io.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}' #花費在IO操作上的毫秒數 UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}' #讀扇區的次數(一個扇區的等於512B) UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}' #寫扇區的次數(一個扇區的等於512B) UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10} ~]# systemctl restart zabbix-agent
2.在zabbix-server端測試
~]# zabbix_get -s 192.168.1.100 -k custom.vfs.dev.io.ms[xvda1] // 如果沒有這個命令的話則需要使用yum安裝(yum -y install zabbix-get) 2547825 ~]# zabbix_get -s 192.168.1.100 -k custom.vfs.dev.read.sectors[xvda1] 7716602 ....等等,當全部數據都可獲取時,則說明item生效.
3.配置Zabbix-server WEB UI
(1)如圖操作:配置 → 模板 → 創建模板.

(2)如圖操作:自定義模板名稱 → 將被監控主機群組加入到"群組"中.

(3)如圖操作:監控項 → 創建監控項

(4)如圖操作:自定義名稱 → 采集數據的方式 → 手動指定鍵值 → 指定單位 → 指定應用集 → 進程 → 每秒更改 → 點擊更新.

(5)如圖操作:再次新建監控項 → 名稱 → 獲取數據方式 → 自定義key → 數值類型 → 數據單位 → 進程 → 自定義倍數(512) → 每秒更改 → 更新.


(6)如圖所示:下面的操作都與上述描述差的不多,在此不做注釋.


(7) 如圖操作:


(8)如圖操作:


(9) 如圖操作:


4.監測最新數據,如圖所示(如果有多塊磁盤,那么就配置多個模板,模板間可互相克隆后修改$1位置的磁盤名稱)
