Python3-实现钉钉报警,python3-报警,import req


import requestsimport sysimport jsondingding_url = ‘https://oapi.dingtalk.com/robot/send?access_token=6d11af3252812ea50410c2ccb861814a6ed11b2306606934a5d4ca9f2ec8c09‘data = {"msgtype": "markdown","markdown": {"title": "监控","text": "apche异常"}}headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}send_data = json.dumps(data).encode(‘utf-8‘)requests.post(url=dingding_url,data=send_data,headers=headers)
#coding: utf-8import psutilimport requestsimport timeimport osimport jsonmonitor_name = set([‘httpd‘,‘cobblerd‘])  # 用户指定监控的服务进程名称proc_dict = {}proc_name = set()  # 系统检测的进程名称monitor_map = {    ‘httpd‘: ‘systemctl restart httpd‘,    ‘cobblerd‘: ‘systemctl restart cobblerd‘  # 系统在进程down掉后,自动重启}dingding_url = ‘https://oapi.dingtalk.com/robot/send?access_token=b5258c4335ed8ab792075013c965efcbf4f8940f92e7bd936cdc7842d3bf9405‘# 钉钉机器人token使用参考文档:http://www.pc6.com/infoview/Article_108931.htmlwhile True:    for proc in psutil.process_iter(attrs=[‘pid‘,‘name‘]):        proc_dict[proc.info[‘pid‘]] = proc.info[‘name‘]        proc_name.add(proc.info[‘name‘])    proc_stop = monitor_name - proc_name  # 通过集合的形式来找出停掉的进程名,前者有但是后者没有的    if proc_stop: # 如果确实有监控的进程停掉了,那么我们需要告警以及自动重启功能        for p in proc_stop:            p_status = ‘停止‘            p_name = p            data = {                "msgtype": "markdown",                "markdown": {                    "title": "监控信息",                    "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +                    "> #### 服务名:%s \n\n" % p_name +                    "> #### 状态:%s \n\n" % p_status +                    "> #### 正在尝试启动"                },            }            headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}            send_data = json.dumps(data).encode(‘utf-8‘)            requests.post(url=dingding_url,data=send_data,headers=headers)            os.system(monitor_map[p_name]) # 执行重启命令,然后判断是否重启成功            proc_set = set()            for proc_again in psutil.process_iter(attrs=[‘pid‘,‘name‘]):                proc_set.add(proc_again.info[‘name‘])            if p in proc_set: # 如果进程启动成功,p是以前停掉的进程,proc_set是已经重启过一次后的所有进程集合                p_status = ‘成功‘                p_name = p                data = {                    "msgtype": "markdown",                    "markdown": {                        "title": "监控信息",                        "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +                        "> #### 服务名:%s \n\n" % p_name +                        "> #### 状态:%s \n\n" % p_status +                        "> #### 已经启动成功,服务正在运行!"                    },                }                headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}                send_data = json.dumps(data).encode(‘utf-8‘)                requests.post(url=dingding_url,data=send_data,headers=headers)            else:                p_status = ‘重启失败‘                p_name = p                data = {                    "msgtype": "markdown",                    "markdown": {                        "title": "监控信息",                        "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +                        "> #### 服务名:%s \n\n" % p_name +                        "> #### 状态:%s \n\n" % p_status +                        "> #### Sorry,服务启动失败鸟!"                    },                }                headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}                send_data = json.dumps(data).encode(‘utf-8‘)                requests.post(url=dingding_url,data=send_data,headers=headers)    time.sleep(5)

Python3-实现钉钉报警

评论关闭