Zabbix 監控磁盤IO狀態-PaulPeng整理


Zabbix 監控磁盤IO狀態

系統信息

[root@SZVMAPZABBIX02-UAT ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.7 (Santiago)
[root@SZVMAPZABBIX02-UAT ~]# uname -a
Linux SZVMAPZABBIX02-UAT 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@SZVMAPZABBIX02-UAT ~]#

一、監控原理

基本原理:通過分析/proc/diskstats文件,來對IO的性能進行監控。解釋如下:

+++++++++++++++++++++++++++對/proc/diskstats的解釋++++++++++++++++++++++++++

[root@SZVMAPZABBIX02-UAT scripts]# cat /proc/diskstats | grep sda | head -1
8 0 sda 18478 6919 738754 128827 212536 231189 3549992 8932028 0 3756735 9060752
[root@SZVMAPZABBIX02-UAT scripts]#

第一至第三個域,分別是主設備號,次設備號,設備名稱

第4個域:讀完成次數 ----- 讀磁盤的次數,成功完成讀的總次數。

第5個域:合並讀完成次數, 第9個域:合並寫完成次數。為了效率可能會合並相鄰的讀和寫。從而兩次4K的讀在它最終被處理到磁盤上之前可能會變成一次8K的讀,才被計數(和排隊),因此只有一次I/O操作。這個域使你知道這樣的操作有多頻繁。

第6個域:讀扇區的次數,成功讀過的扇區總次數。

第7個域:讀花費的毫秒數,這是所有讀操作所花費的毫秒數(用__make_request()到end_that_request_last()測量)。

第8個域:寫完成次數 ----寫完成的次數,成功寫完成的總次數。

第9個域:合並寫完成次數 -----合並寫次數。

第10個域:寫扇區次數 ---- 寫扇區的次數,成功寫扇區總次數。

第11個域:寫操作花費的毫秒數  ---  寫花費的毫秒數,這是所有寫操作所花費的毫秒數(用__make_request()到end_that_request_last()測量)。

第12個域:正在處理的輸入/輸出請求數 -- -I/O的當前進度,只有這個域應該是0。當請求被交給適當的request_queue_t時增加和請求完成時減小。

第13個域:輸入/輸出操作花費的毫秒數  ----花在I/O操作上的毫秒數,這個域會增長只要field 9不為0。

第14個域:輸入/輸出操作花費的加權毫秒數 -----  加權, 花在I/O操作上的毫秒數,在每次I/O開始,I/O結束,I/O合並時這個域都會增加。這可以給I/O完成時間和存儲那些可以累積的提供一個便利的測量標准。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

二、配置Key

本次介紹的方法是比較簡單的,並沒有設置自動發現本地磁盤,我們就假設我們的設備有兩個磁盤sda、sdb,如果你的設備是單個磁盤的話也很簡單,你只需要把sdb的Items禁用掉就可以了,后期會增加自動發現本地磁盤的方法。

cat /data/zabbix/etc/zabbix_agentd.conf
UserParameter=disk.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=disk.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
UserParameter=disk.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
UserParameter=disk.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'
UserParameter=disk.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=disk.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'
UserParameter=disk.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
UserParameter=disk.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'
UserParameter=nginx.status[*],/data/zabbix/scripts/ngx-status.sh $1

 

三、導入模版

模版在附件處,請下載

Template IO Status.xml

------------------------------------------分割線------------------------------------------

四、結果展示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM