腳本監控服務狀態 微信-釘釘告警


介紹說明

  公司需要監控北京機房的一台服務器的服務狀態,服務器在北京機房內網中,由於策略問題不能裝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,請盡快處理!'\n'故障時間:${Date_time}'\n'主機名稱:${Host_name}'\n'IP地址:${IP_addr}'\n'${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,請盡快處理!\n故障時間:${Date_time}\n主機名稱:${Host_name}\nIP地址:${IP_addr}\n${TCP}端口狀
態:${Port_status}\n'},
 'at': {'atMobiles': ['${user}' ],  'isAtAll': false}
  }"
}
if [ $Port_status -lt 1 ]
 then
SendMessageToDingding
fi

 

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM