ZABBIX監控每秒業務狀態
阿新 • • 發佈:2018-08-28
vpd The x86 -c 一分鐘 端口 done tor time 一、背景
有客戶監控MySQL的公網延遲,細粒度到每秒,對你沒聽錯是每秒,雲平臺級別的監控阿裏雲/騰訊雲雖都支持自定義監控,但是限於數據的存儲,粒度最小為每一分鐘,阿裏雲免費雲監控頻率是5分鐘,收費的粒度才可調至1分鐘,對此想到利用ZABBIX來進行每一秒的數據上報,最終利用其繪圖來進行展示。在此拋磚引玉,其他自定義監控均為此類方法,只需要簡單修改腳本獲取到需要上報的值即可。
二、部署
2.1 安裝ZABBIX SENDER
安裝與zabbix版本一樣的zabbix sender
例如此處安裝3.0的版本
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm yum install zabbix-sender -y
其核心為利用zabbix_sender來發送數據
zabbix_sender
-z zabbix服務器的地址
-s 創建主機的主機名稱
-k 鍵值名稱
-o 上報的數據
-p zabbix 服務器的端口
2.2 編寫腳本
在此只簡單來監控公網地址的ping延遲
#!/bin/bash #auth:kaliarch # ping可執行路徑 PINGCMD=/usr/bin/ping # zabbix_sender可執行文件路徑 SENDCMD=/usr/bin/zabbix_sender # ping測主機ip地址 CHECKHOST=baidu.com # zabbix服務器ip地址 ZABBIXSERVER=43.254.55.225 # zabbix服務器監聽端口 ZABBIXPORT=10051 # zabbix添加這條監控主機名 LOCALHOST=checkping_monitor # ping包的數量 PAG_NUM=1 # 添加監控項的鍵值 ZAX_KEY=ping_response # 獲取ping響應時間 check_ping() { RESPONSE_TIME=`$PINGCMD -c $PAG_NUM $CHECKHOST |head -2 |tail -1|awk ‘{print $7}‘|cut -d= -f2` if [ $? -eq 0 ];then echo $RESPONSE_TIME else echo 0 fi } # 發送數據到zabbixserver send_data() { DATA=`check_ping` $SENDCMD -z $ZABBIXSERVER -s $LOCALHOST -k $ZAX_KEY -o $DATA } while true do send_data sleep 0.5 done
其中上報給zabbix server端的數據可以根據自己實際自定義需求上報即可
在服務器上將腳本在後臺運行即可
nohup /bin/bash check_ping.sh &
2.3 ZABBIX WEB界面配置
- 添加主機
註意:此處的主機名稱為腳本中的-LOCALHOS
- 添加監控項
註意:此處類型選擇zabbix采集器,鍵值為腳本中的ZAX_KEY,下面填寫允許上報的主機IP
- 配置圖像
2.3 圖像查看
可以看到監控的粒度為1秒鐘
三、總結
- 其實對於監控數據上報頻率控制在1分鐘是比較理想的,不建議1秒鐘就進行數據上報,對於大規模監控就需要進行分布式部署或使用zabbix proxy來分攤server的壓力。
- 本次只是對於一些特殊客戶需求進行記錄,同時拋磚引玉可以利用此方法來上報任何自定義的數據。
ZABBIX監控每秒業務狀態