docker服务加健康检查和飞书告警
【摘要】 1、docker服务加监控检查
2、检查的结果告警到飞书/钉钉等有机器人的群
任务:
1、docker服务加监控检查
2、检查的结果告警到飞书/钉钉等有机器人的群
2、检查的结果告警到飞书/钉钉等有机器人的群
docker服务加监控检查
原理就是每10s检查一次访问https://api.jd.com/routerjson?的网络码是否200,如果连续3次超时5s都没反应或者网络码不是200,则健康检查不通过,报unhealthy,反之healthy。
修改yaml,添加healthcheck部分。
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)