1. Shell脚本
cat /opt/monitor/device/device.sh
#!/bin/bash
# 域名列表文件绝对路径
text_file="/opt/monitor/device/device.txt"
#PG数据库密码环境变量
export PGPASSWORD='8888888888888888'
#结果为0代表正常设备,非0代表有异常设备
sql_cmd="select count(1) from aio_brm.device where (org_id = 99999999999999999 or org_id = 988888888888888881) and del_flag = '0' and status = '0'"
psql -U database_user -d database_name -p 88888 -h sh-postgres-8888888888.sql.tencentcdb.com -c "$sql_cmd" > $text_file
#钉钉webhook
prod_webhook_url="https://oapi.dingtalk.com/robot/send?access_token=9999999999999999999999999999999999999"
test_webhook_url="https://oapi.dingtalk.com/robot/send?access_token=9999999999999999999888888888888888888"
MESSAGE=$(cat "$text_file")
# 要@的用户手机号(多个用户用逗号分隔)
AT_MOBILES="13088888888,13099999999"
#JSON_DATA=$(cat <<EOF { "msgtype": "text", "text": { "content": "$MESSAGE" } } EOF )
#curl -s -X POST -H 'Content-Type: application/json' -d "$JSON_DATA" "$webhook_url"
#钉钉推送告警信息
prod_dingding_push(){
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "告警内容:【生产环境告警,请及时处理】\n执行语句:【select count(1) from aio_brm.device where (org_id = 99999999999999999 or org_id = 988888888888888881) and del_flag = '0' and status = '0'】"
},
'at': {
'atMobiles': ['19099999999','180888888888'],
'isAtAll': false
}
}' $prod_webhook_url
}
test_dingding_push(){
curl -H "Content-Type: application/json" \
-d '{
"msgtype": "text",
"text": {
"content": "【生产环境告警,请及时处理】\n[0代表正常设备;大于0代表异常设备]:\n '"$MESSAGE"' \n"
},
'at': {
'atMobiles': ['19099999999','180888888888'],
'isAtAll': false
}
}' $test_webhook_url
}
#
MySQL_Results=$( cat "$text_file" | sed -n 3p)
if [ $MySQL_Results == 0 ] ; then
echo "Device is online"
else
prod_dingding_push && test_dingding_push
fi
2. 根据业务需求配置定时任务
[root@localhost]# crontab -l
30 08,16,23 * * * /opt/monitor/device/device.sh > /dev/null 2>&1