docker服务加健康检查和飞书告警

举报
fsifdds 发表于 2023/08/17 14:12:00 2023/08/17
【摘要】 1、docker服务加监控检查 2、检查的结果告警到飞书/钉钉等有机器人的群
任务:
1、docker服务加监控检查
2、检查的结果告警到飞书/钉钉等有机器人的群


docker服务加监控检查


原理就是每10s检查一次访问https://api.jd.com/routerjson?的网络码是否200,如果连续3次超时5s都没反应或者网络码不是200,则健康检查不通过,报unhealthy,反之healthy。
version: '3.4'

services:
  <service name>:
    container_name: <container_name>
    restart: on-failure
    image: <iamge>
    networks:
      - backend_net
    environment:
      TZ: "Asia/Shanghai"
      JVM_XMX: "1024m"
      JVM_XMS: "1024M"
      JVM_XMN: "512M"
      JAR_NAME: "xxx.jar"
      CUSTOM_SEARCH_LOCATION: "/opt/bootstrap.properties"
    volumes:
      - $PWD/xxx/bootstrap-v2.properties:/opt/bootstrap.properties:ro
      - $PWD/xxx/logs:/opt/logs:rw
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8082:8080
    healthcheck:
      test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' https://api.jd.com/routerjson? | grep -q 200"]
      interval: 10s
      timeout: 5s
      retries: 3

networks:
  backend_net:
    ipam:
      driver: default
      config:
        - subnet: 172.16.248.0/24

飞书告警到群


写个告警到飞书的脚本,然后crontab定时每5分钟执行一次,测到服务unhealthy就告警到告警群
[root@a ]# cat /root/alarm.sh
#!/bin/bash

api=https://open.feishu.cn/open-apis/bot/v2/hook/xxx  #飞书机器人webhook 地址
time=$(date "+%H:%M:%S")
restart_time=$(docker ps  |grep <service name>|awk '{print $10 $11}')
status=$(docker ps  |grep <service name>|grep -o '(.*)')
#status="unhealthy"
content="app:<service name>"  #要发送的信息

content="报警时间:$time\n报警事件:容器30s内3次访问https://api.jd.com/routerjson失败!\n报警规则:每10s访问一次url,连续3次没返回网络码200或超时5秒\n\n$content\n重启时间:$restart_time前\n状态:$status"
#换行用\n 空格用\t


function post(){
curl -X POST \
  $api \
  -H 'Content-Type: application/json' \
  -d '{
    "msg_type": "post",
    "content": {
        "post": {
            "zh_cn": {
                "title": "连接异常告警!",
                "content": [
                    [
                        {
                            "tag": "text",
                            "un_escape": true,
                            "text": "'$content'"
                        }
                    ],
                    [

                    ]
                ]
            }
        }
    }
}'
}
if [[ $status =~ "unhealthy" ]];then post;fi;

[root@a]# crontab -l
#告警服务不健康
*/5 * * * *  sh  /root/alarm.sh

告警效果图如下

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。