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的數據。
先了解一下這和目錄下數據的含義:
A B C 1 2 3 4 5 6 7 8 9 10 11 8 16 sdb 113686 7710 7704472 65448 225772 188612 184042704 298452 0 51952 363852
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