1. 程式人生 > >ZABBIX監控每秒業務狀態

ZABBIX監控每秒業務狀態

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監控每秒業務狀態