利用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
利用Shell脚本对docker容器服务进行健康检查监控钉钉告警并重启
声明: 本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Docker

提升安全性:掌握7种高效自动化Docker镜像漏洞扫描技巧

2024-12-9 14:52:39

Docker

nerdctl:一个酷似docker又胜于docker的命令行工具

2024-12-17 14:41:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索