自動發現硬盤IO

   首先創建Discovery rules,在agent端配置對應的UserParameter,調用編寫好的shell腳本,動態查找出已經掛載的磁盤分區;然後創建Item prototypes,使用vfs.dev.read[device,,]和vfs.dev.write[device,,]來監控磁盤分區的IO,包括磁盤讀寫速率、每秒讀寫扇區數、每秒讀寫操作數;然後創建Graph prototypes,生成磁盤IO圖表。 

一、自動發現腳本

discan.sh

#!/bin/bash
#written by boge
#mail:[email protected]
diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b|\bvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq   2>/dev/null`)
length=${#diskarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
        printf '\n\t\t{'
        printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf "}\n"
echo disk_scan>> /tmp/disk_scan
~


chmod +x discan.sh 

做下測試:
./discan.sh

{

"data":[

{"{#DISK_NAME}":"sda"},

{"{#DISK_NAME}":"sdb"}

]

}

該腳本路徑是/opt/zabbix/bin下。


二、iostat輸出

需要寫到定時任務的文件中去。

0 * * * * /usr/bin/iostat -m -x -d 30 120 >/tmp/iostat_output 2>&1

30秒執行一次iostat,執行120次、一個小時執行一次該腳本。


三、自定義key配置文件

該文件的路徑在/opt/zabbix/etc/zabbix_agentd.conf.d下。文件名爲iostat.conf


UserParameter=io.scandisk[*],/opt/zabbix/bin/disk_scan.sh $1

UserParameter=io.rps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b"|tail -1|awk '{print $$4}'

UserParameter=io.wps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$5}'

UserParameter=io.rMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$6}'

UserParameter=io.wMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$7}'

UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$8}'

UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$9}'

UserParameter=io.await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$10}'

UserParameter=io.svctm[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$11}'

UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$12}'

一共有9個鍵值

四、web頁面添加自動發現

  1. 創建模板iostat

  2. 在該模板下創建探索iostat_discovery

3、創建項目原型。->針對九個鍵值來創建項目原型

例子:名稱:IO_avgqu-sz on $1

鍵值:io.avgqu-sz[{#DISK_NAME}]

數據類型:建議設爲浮點型。

單位:需要看iostat的輸出各個屬性的單位對應起來即可。

其他選項均可默認。

因爲每個Userparameter都要有個項目原型與其對應。所以針對此例子需要做九個項目原型。

名稱  鍵值 間隔 歷史記錄 趨勢 類型 應用集狀態 
IO_avgqu-sz on {#DISK_NAME}io.avgqu-sz[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_avgrq-sz on {#DISK_NAME}io.avgrq-sz[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_await on {#DISK_NAME}io.await[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_rMBps on {#DISK_NAME}io.rMBps[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_rps on {#DISK_NAME}io.rps[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_svctm on {#DISK_NAME}io.svctm[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_util on {#DISK_NAME}io.util[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_wMBps on {#DISK_NAME}io.wMBps[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用
IO_wps on {#DISK_NAME}io.wps[{#DISK_NAME}]30090365Zabbix 代理iostat已啓用

啓用所選的停用所選的刪除所選的
4.創建圖形原型

根據需要可以將幾個key值放在一個圖形裏。

例如:

  • 名稱

  • 圖形類別

    正常層積的Pie爆發的

  • 展示圖標

  • 展示工作時間

  • 展示觸發器

  • 百分比線(左)

     

  • 百分比線(右)

     

  • 縱軸Y最小值MIN

    計算的固定的項目

  • 縱軸最大值

    計算的固定的項目

  • 項目



    名稱功能繪圖風格縱軸Y側顏色動作

    1:iostat: IO_await on {#DISK_NAME}  所有  最小  平均  最大    線  填滿的區域  粗線  點  虛線  梯度線    左側  右   

       


    2:iostat: IO_svctm on {#DISK_NAME}  所有  最小  平均  最大    線  填滿的區域  粗線  點  虛線  梯度線    左側  右   

       

       

到此爲止。自動發現做完了。可以自己再創建觸發器來設置閥值。。。

可以通過server的輸出日誌來解決錯誤。


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