1、線上環(huán)境docker已經(jīng)運(yùn)行起來了,有時(shí)候容器掛掉之后沒有第一時(shí)間通知,之前已經(jīng)搭建好zabbix并配置好了微信告警
2、使用zabbix來監(jiān)控容器,并發(fā)送告警
3、首先創(chuàng)建一個(gè)自定義監(jiān)控腳本,來獲取監(jiān)控的值
#!/bin/bash
#監(jiān)控容器的運(yùn)行狀態(tài)
#容器名稱 傳入?yún)?shù)
containerName=$1
#當(dāng)前時(shí)間
now=`date +"%Y-%m-%d %H:%M:%S"`
# 查看進(jìn)程是否存在
exist=`docker inspect --format '{{.State.Status}}' ${containerName}`
if [ "${exist}" != "running" ]; then
#記錄日志
echo "${now} docker容器異常, 容器名稱:${containerName}" 請檢查 >> /home/work/monitor/docker_monitor.log
echo 0
else
echo 1
fi
腳本說明:通過docker inspect檢查容器狀態(tài)是否為runing,如果是則腳本反饋1,如果不是則返回0
4、修改zabbix_agentd.conf配置文件
vim /etc/zabbix/zabbix_agentd.conf
找到 UnsafeUserParameters=0 ,默認(rèn)是0,修改為1,
然后,為我們自定義監(jiān)控項(xiàng),格式為:UserParameter=<鍵值>,<命令>
UserParameter=janus_monitor,bash /home/work/monitor/docker_monitor.sh titan_janus_1
自定義鍵值為:janus_monitor 要執(zhí)行的命令為執(zhí)行docker_monitor.sh這個(gè)腳本 ,加上參數(shù)titan_janus_1(這個(gè)是需要監(jiān)控的容器名稱)

添加完成以后,重啟zabbix_agentd生效
5、在zabbix服務(wù)端檢查一下能不能獲取到監(jiān)控的指標(biāo)
zabbix_get -s 192.168.0.220 -p 10050 -k "janus_monitor"
結(jié)果是1,說明OK了,否則報(bào)錯(cuò)的話就要排查錯(cuò)誤,直到輸出結(jié)果是我們要的那個(gè)
其中
-s 客戶端的IP
-p 客戶端端口,默認(rèn)10050
-k 監(jiān)控項(xiàng)的key
6、zabbix面板創(chuàng)建監(jiān)控項(xiàng)

填好之后,保存
再為這個(gè)監(jiān)控項(xiàng)創(chuàng)建一個(gè)觸發(fā)器來發(fā)送告警

點(diǎn)擊添加

點(diǎn)擊插入,保存退出
檢查一下狀態(tài)

再創(chuàng)建一個(gè)圖形


過一段時(shí)間之后發(fā)現(xiàn)就有數(shù)據(jù)顯示了

7、測試一下告警有沒有生效,把這個(gè)容器stop
大約10s就觸發(fā)了告警
