目的:
此脚本是用来定时监控一个应用或者站点是否正常,如果定时监控到站点服务访问返回码不是200则认为是站点有可能发生异常,并通过企业微信机器人发送告警通知。
- 企微告警通知的模板内容可以根据自己的情况灵活更改。
- 可以自行修改定时脚本定时执行时间
- 使用脚本前需要将 webhook_key 替换成您自己的企微的key
- 脚本默认3s检查一次,连续3次检查站点返回码不是 200 就发送告警通知
- 将 app_url 替换成您自己的站点地址
- curl 超时时间是10秒
#!/bin/bash
# crontab 定时
# */15 * * * * /bin/bash check_app.sh >> /dev/null
# date 2023-06-7
# @土豆
app_url="http://localhost:8080"
webhook_key="替换成你企业微信的key"
# 企业微信告警
function send_wechat() {
# 请替换成你自定的企业微信机器人
#webhook_key="替换成你企业微信的key"
# 告警通知模板
message=$(cat << EOF
应用服务异常
异常访问地址: $app_url
主机名称: $(hostname -s)
IP地址: $(hostname -I)
请检查应用是否正常!!
EOF
)
# 发送post请求
curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$webhook_key" \
-H 'Content-Type: application/json' \
-d "{\"msgtype\": \"text\",\"text\": {\"content\": \"$message\"}}"
sleep 3s
exit # 完成发送通知,退出程序
}
# 检查应用状态,返回状态码不是 200 认为服务异常
function check_app(){
#app_url="http://localhost:8080"
local count=0
local response=200
# 每隔 3s 检查一次;连续3次检查失败,则发送告警通知
for ((i=0;i<=3;i++));do
response=$(curl --write-out %{http_code} --silent --max-time 10 --output /dev/null $app_url)
if [ "$response" -ne "200" ]; then
let count=$count+1
fi
sleep 3s
done
if [ $count -ge 3 ]; then
send_wechat
else
echo "站点服务正常"
fi
}
check_app