脚本监控服务状态 微信-钉钉告警

Posted 菜鸟运维笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本监控服务状态 微信-钉钉告警相关的知识,希望对你有一定的参考价值。

介绍说明
公司需要监控北京机房的一台服务器的服务状态,服务器在北京机房内网中,由于策略问题不能装agant和暴露端口。
通过脚本服务器的服务/端口状态,并告警通知到企业微信中
准备环境
服务器需要能访问外网
需要企业微信以下信息
CropID、Secret、agentid、User
 
 
微信
脚本内容
[root@shvm01 scripts]# cat wechat_alarm.sh 
#!/bin/bash
############################################
#通过企业微信接口发送服务状态到企业微信
#雪文龙 2020-4-8 V1
#
#修改者:xxx
#修改时间:2020-xx-xx 
#修改内容:修改内容描述
############################################

 
#配置
 TCP="80"
 ifconfig="eth0"
 
#主机信息
 Date=`date +%Y-%m-%d`
 Date_time=`date "+%Y-%m-%d--%H:%M:%S"`
 Host_name=`hostname`
 IP_addr=`ifconfig $ifconfig | grep "inet" |awk ‘NR==1{ print $2}‘`
 
#监控项
 Port_status=`netstat -lntup |grep -w "$TCP" |wc -l`
 
#日志目录
if [ ! -d "/var/log/monitor_check" ];
 then 
 mkdir /var/log/monitor_check;
fi
 Logs_file=‘/var/log/monitor_check‘
#微信接口
 CropID=‘ww022bebbexuewenlong‘
 Secret=‘RauJ_-t-LxBhfEN7g1sh4OhVB_vRxuewenlong‘
 GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
 Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" ‘{print $10}‘)
 PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
 Agentid="1000004"
#添加多个收信人要以|分隔."user1|user2"
 senduser="xuewenlong"
 
#01告警推送消息
 if [ $Port_status -lt 1 ]
 then
 echo "$Date_time $TCP 端口 Down" >> $Logs_file/$Date.Port_status.log
 /usr/bin/curl --data-ascii ‘{ "touser": "${senduser}", "toparty": "2","msgtype": "text","agentid": "${Agentid}","text": {"content": "${TCP}端口down,请尽快处理!‘
‘故障时间:${Date_time}‘
‘主机名称:${Host_name}‘
‘IP地址:${IP_addr}‘
‘${TCP}端口状态:${Port_status}"}‘ $PURL
 else
 echo "$Date_time $TCP 端口 UP:$Port_status" >> $Logs_file/$Date.Port_status.log
fi

 

日志展示
技术图片
企业微信消息展示
技术图片
 
钉钉
钉钉接口文档
#!/bin/bash
 ############################################
#通过钉钉监控服务可用性
#雪文龙  2020-4-10  V1
#
#修改者:xxx
#修改时间:2020-xx-xx 
#修改内容:修改内容描述
############################################
#配置
 TCP="80"
 ifconfig="eth0"
 user="xuewenlong"
#主机信息
 Date=`date +%Y-%m-%d`
 Date_time=`date "+%Y-%m-%d--%H:%M:%S"`
 Host_name=`hostname`
 IP_addr=`ifconfig $ifconfig | grep "inet" |awk ‘NR==1{ print $2}‘`
 
#监控项
 Port_status=`netstat -lntup |grep -w "$TCP" |wc -l`
 
function SendMessageToDingding(){
#钉钉webhook
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=732b97ff63d6bce620025c3eb973ca39c668847260exuewenlong"
#发送钉钉消息
curl "${Dingding_Url}" -H ‘Content-Type: application/json‘ -d "
{
 ‘msgtype‘: ‘text‘,
 ‘text‘: {‘content‘: ‘${TCP}端口down,请尽快处理!
故障时间:${Date_time}
主机名称:${Host_name}
IP地址:${IP_addr}
${TCP}端口状
态:${Port_status}
‘},
 ‘at‘: {‘atMobiles‘: [‘${user}‘ ],  ‘isAtAll‘: false}
  }"
}
if [ $Port_status -lt 1 ]
 then
SendMessageToDingding
fi

 

 
技术图片
 

以上是关于脚本监控服务状态 微信-钉钉告警的主要内容,如果未能解决你的问题,请参考以下文章

钉钉消息监控

Linux----------zabbix监控-微信钉钉告警

Zabbix 配置钉钉脚本告警

2018-4-26 Python实现对服务进程的监控,告警给钉钉机器人及重启任务

ELK日志监控平台告警升级(邮件+钉钉)

zabbix实现钉钉监控告警