環(huán)境:公司剛小批量使用docker容器,沒有使用k8s之類的統(tǒng)一管理docker容器。初期要監(jiān)控docker每個container的運行狀態(tài),并結(jié)合nagios報警通知。
由于沒有多余時間去搭建docker專門的監(jiān)控管理工具,就用最簡單的古老的方法,用shell腳本獲取 docker ps -a 里面的status,狀態(tài)為非UP就報警;
腳本內(nèi)容如下:
#!/bin/bash
STATUS=`sudo docker ps -a |grep jenkins|awk '{print $9}'`
if [? "$STATUS" == "Up" ]; then
? ? echo docker container jenkins status is "$STATUS"
? ? exit 0
else
? ? echo "docker container jenkins is not running!"
? ? exit 2
fi
內(nèi)容很丑也簡單粗暴。
然后慣例在nrpe.cfg里面添加
command[check_docker_jenkins]=/usr/local/nagios/libexec/check_docker_jenkins
服務(wù)端也配置好之后監(jiān)控一直報 docker container jenkins is not running
原因:
docker用root賬戶起的,而且非docker運行賬戶使用docker ps 根本看不到里面跑的容器。
解決辦法:(操作系統(tǒng)為centos7.2)
1 :修改/etc/sudoers
修改Defaults????requiretty ? 為 ?Defaults:nagios ?!requiretty (表示僅 nagios 用戶不需要控制終端)
添加nagios ALL=NOPASSWD:ALL ?(表示nagios用戶使用sudo直接不輸入密碼)
2?在nrpe.cfg里面修改(sudo的路徑先which一下)
command[check_docker_jenkins]=/bin/sudo /usr/local/nagios/libexec/check_docker_jenkins
3然后重啟nrpe
這樣就能正常監(jiān)控了,特此記錄一下,舉一反三。