暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

企业微信告警机器人告警监控

Juhytin 2024-04-11
710

1、获取机器人Webhook地址

打开并登录企业微信。
创建群聊,单击企业微信群右上角的
图标,然后单击添加群机器人。
在添加机器人页面单击新创建一个机器人。
在创建机器人页面自定义机器人名称,然后单击添加机器人。
单击复制地址,保存企业微信机器人的Webhook地址。



2、pyhton实现代码
robotAlarm.py

# encoding: utf-8
'''
@author: xxxxx
@file: robotAlarm.py
@time: 2021/10/26 16:47
@desc:企业微信的微信群机器人告警类
主要功能:get_curl_cmd_alarm() 生成告警信息
exec_alarm_cmd 将告警信息发送到企业微信群
调用示例:
alarm = Robot_Alarm(alarm_tile,alarm_msg,alarm_time,details_msg)
alarm.exec_alarm_cmd()
/ alarm.send_alarm_info()
'''
import json
import subprocess
import requests

class Robot_Alarm:

def __init__(self,alarm_title,alarm_msg,alarm_time,details_msg):
'''
初始化函数
:param alarm_title: 告警标题
:param alarm_msg: 告警信息
:param alarm_time: 告警时间
:param details_msg: 告警详情
'''
self.alarm_title = alarm_title
self.alarm_msg = alarm_msg
self.alarm_time = alarm_time
self.details_msg = details_msg

def get_curl_cmd_alarm(self):
'''
获取发送企业微信群机器人告警信息的命令
:return: 返回发送企业微信群机器人告警信息的命令内容
'''
return '''
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*****e' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "markdown",
"markdown": {
"content": ">%s \n >告警信息:%s \n >告警时间:%s \n >告警详情:%s \n "
}
}'
''' %(self.alarm_title,self.alarm_msg,self.alarm_time,self.details_msg)
def exec_alarm_cmd(self):
'''
执行发送企业微信群机器人告警信息
:return: 无返回值
'''
cmd = self.get_curl_cmd_alarm()
if subprocess.call(cmd, shell=True, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT):
raise Exception("{} 执行失败".format(cmd))

def send_alarm_info(self):
'''
使用requests.post()方法发送企业微信群机器人告警信息
:return:
'''
req_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*****e'
headers ={'Content-Type':'application/json'}
body ={
"msgtype": "markdown",
"markdown": {
"content":'>' +self.alarm_title + "\n" +">告警信息:"+self.alarm_msg + "\n" + ">告警时间:" + self.alarm_time + "\n" +">告警详情:" + self.details_msg +"\n "
}
}
body_json = json.dumps(body)
# print(body_json)
ret = requests.post(req_url,data=body_json,headers=headers)
if ret.status_code == 200:
print("告警信息发送成功!")
else:
print('告警信息发送失败!')

调用示例:
# encoding: utf-8
'''
@author: xxxxx
@file: wx_robot_alarm.py
@time: 2021/10/26 14:01
@desc:
'''
import os
import socket
import sys
import time
from pathlib import Path

from robotAlarm import Robot_Alarm


def div_fun(a,b):
try:
c = a / b
return c
except Exception as e:
file_name = sys._getframe().f_code.co_filename # 当前位置所在的文件名
fun_name = sys._getframe().f_code.co_name # 当前位置所在的函数名
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
alarm_tile = '企业微信数据更新程序监控'
# print(alarm_tile)
alarm_msg = fun_name + '()计算出错'
# print(alarm_msg)
alarm_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# print(alarm_time)
details_msg = 'hostname:' + hostname + ',ip:' + ip + ',filename:' + file_name + ',errmsg:' +str(e)
# print(details_msg)
alarm = Robot_Alarm(alarm_tile,alarm_msg,alarm_time,details_msg)
alarm.send_alarm_info()
return -1

if __name__ == '__main__':
result = div_fun(1,0)
print(result)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论