zabbix3.0自動發現磁盤並監控磁盤IO


Zabbix 版本:3.0

操作系統:Ubuntu16.04

操作環境,在被監控的主機上安裝zabbix agent。安裝方式為源碼包安裝。

簡要安裝步驟:

參考:https://www.zabbix.com/documentation/3.0/manual/installation/install#installation_from_sources

wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.24/zabbix-3.0.24.tar.gz/download
mv download zabbix-3.0.tar.gz
tar zxf zabbix-3.0.tar.gz
mkdir zabbix
cd  zabbix
./configure --enable-agent --prefix=$HOME/zabbix

make install

需要的預備知識:

       我的監控方案參考很多網上的資源,具體鏈接就不在這里寫了。

       磁盤性能的數據來源主要是/proc/diskstats,其他方案用的大多數是iostat命令,但是這個命名需要安裝一個包(syststat)。生產環境不能連互聯網,也不想用源碼包安裝了,iostat取的好像也是/proc/diskstats的數據。

      先了解一下這和目錄下數據的含義:

diskstats各字段的含義:
官方解釋:https://www.kernel.org/doc/Documentation/iostats.txt
 
A    B  C                        6        7        8   9   10      11   
8      16 sdb 113686 7710 7704472 65448 225772 188612 184042704 298452 0  51952  363852

 

A:主設備號
B:次設備號
C:設備名稱
1:讀完成次數 ----- 讀磁盤的次數,成功完成讀的總次數。
2:合並讀完成次數,第6個域:合並寫完成次數。為了效率可能會合並相鄰的讀和寫。從而兩次4K的讀在它最終被處理到磁盤上之前可能會變成一次8K的讀,才被計數(和排隊),因此只有一次I/O操作。這個域使你知道這樣的操作有多頻繁。
3:讀扇區的次數,成功讀過的扇區總次數。
4:讀花費的毫秒數,這是所有讀操作所花費的毫秒數(用__make_request()到end_that_request_last()測量)
5:寫完成次數 ----寫完成的次數,成功寫完成的總次數。
6:合並寫完成次數 -----合並寫次數
7:寫扇區次數 ---- 寫扇區的次數,成功寫扇區總次數。
8:寫操作花費的毫秒數 --- 寫花費的毫秒數,這是所有寫操作所花費的毫秒數(用__make_request()到end_that_request_last()測量)
9:正在處理的輸入/輸出請求數 -- -I/O的當前進度,只有這個域應該是0。當請求被交給適當的request_queue_t時增加和請求完成時減小
10:輸入/輸出操作花費的毫秒數 ----花在I/O操作上的毫秒數,這個域會增長只要field 9不為0。
11:輸入/輸出操作花費的加權毫秒數 ----- 加權, 花在I/O操作上的毫秒數,在每次I/O開始,I/O結束,I/O合並時這個域都會增加。這可以給I/O完成時間和存儲那些可以累積的提供一個便利的測量標准。

 

agent安裝完之后開始改配置文件。

先改一下配置文件:etc/zabbix_agentd.conf

UnsafeUserParameters=1
# 把這個值改為1,因為自動發現的腳本中有一些特殊字符,被認為是不安全的因素,1表示允許這些字符存在(我的理解)如果不該,后期在Server端就會報錯,原因就在這里。

 

然后在etc/zabbix_agentd.conf末尾加兩行

# 第一行是自動發現腳本的路徑
UserParameter=disk.discovery,/home/zabbix/etc/zabbix_agentd.conf.d/disk_discovery.sh
# 第二行是檢測磁盤IO的腳本路徑
 UserParameter=disk.status[*],/home/zabbix/etc/zabbix_agentd.conf.d/disk_status.sh $1 $2

 

當然這兩行可以單獨寫在另一個配置文件中,注意路徑:

 # Include=/usr/local/etc/zabbix_agentd.userparams.conf
 # 在etc/zabbix_agentd.conf 中指明路徑。

 

自動發現腳本的文件內容:

#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[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"

 

檢測磁盤狀態的腳本內容

#/bin/sh

device=$1
DISK=$2

case $DISK in

         read.ops)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $4}'    #//磁盤讀的次數
            ;;
         read.merged)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $5}'      #//合並讀完成次數
            ;;
         read.sectors)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $6}'      #//讀扇區的次數(一個扇區的等於512B)
            ;;
         read.ms)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $7}'    #//磁盤讀的毫秒數
            ;;
         write.ops)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $8}'     #//磁盤寫的次數
            ;;
         write.merged)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $9}'      #//合並寫完成次數
            ;;           
         write.sectors)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $10}'     #//寫扇區的次數(一個扇區的等於512B)
            ;;
         write.ms)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $11}'    #//磁盤寫的毫秒數
            ;;
         io.active)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $12}'    #//I/O的當前進度,
            ;;
         io.ms)
            /bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $13}'      #//花費在IO操作上的毫秒數
            ;;

esac

 

然后啟動agent就可以了。啟動路徑在/sbin/zabbix-agentd

 

 到此agent端的配置完成,開始在server端配置。

1.創建一個模板(可選),建議配置一個,名字根據需求寫

配置--模板--創建模板 

2.創建自動發現

3. 在自動發現規則里選創建監控原型(注意這里,之前有一個文章直接在監控項里創建的,誤導了我一上午)

具體的監控項原型

 

 

效果圖:

 

 

 

 

詳細的步驟各解釋后期補充

 

參考鏈接:https://idc.wanyunshuju.com/zabbix/563.html


免責聲明!

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



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