DevOps运维技术栈

利用Shell脚本对docker容器服务进行健康检查监控钉钉告警并重启

经常线上生产环境docker容器出现假死、或者容器异常退出,运维都是后知后觉,由运营部门反馈才知晓,于是研发领导提出对服务进行监控告警。这就有了下面对docker容器进行监控告警并进行容器重启的脚本。下面是具体配置步骤和脚本代码:

添加脚本文件cat /root/monitor.sh

#!/bin/bash

#docker容器名字
export scontainerName="memberapi"

#健康检查URL ,返回响应码是200则认为服务正常,否则异常进行重启
export healthCheckUrl="https://memberapi.linux66.cn/health"

function dingsend(){

curl https://oapi.dingtalk.com/robot/send?access_token=钉钉机器人token -H 'Content-Type: application/json' -d "
  {
    'msgtype': 'text',
    'text': {
      'content': '自动化通知,${scontainerName}容器已重启!'
    },
    'at': {
      'isAtAll': false
    }
  }"

}



num=0

for i in {1..15};
do

     # 发送HTTP请求并获取响应码
     response_code=$(curl -k -s -o /dev/null -w "%{http_code}\n" $healthCheckUrl)


     # 检查响应码是否为200
     if [ "$response_code" -eq 000 ]; then
           continue
     fi

     if [ "$response_code" -eq 200 ]; then
           echo "HTTP响应码为200"
     else
           echo "HTTP响应码不是200,而是 $response_code"
           let num++
     fi
     sleep 10

done



if [ $num -gt 5 ]; then
    echo "检测到http状态码非200共${num}次"
    echo "执行重启容器命令..."
    docker restart `docker ps -a|grep $scontainerName|awk '{print $1}'`
    dingsend
fi

给脚本设置可执行权限

chmod +x /root/monitor.sh

添加linux定时任务

crontab -e

*/1 * * * * /root/monitor.sh
退出移动版