- A+
所属分类:Python
开发思路
用于监控指定的URL,在我的场景中,我是从外网服务器上监控公司宽带出口,当URL访问超时时,即为宽带故障。
设计思路很简单,访问失败发送告警,访问成功发送恢复通知,同时要使用配置文件进行配置,防止持续重复告警。
绘制开发流程图
使用python语言实现
#!/usr/bin/python3 import requests import time import json import os # 监测URL是否正常响应 def url_check(url): # 当前时间 check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) try: # 请求URL, 设置3s超时, 忽略SSL证书 r = requests.get(url, timeout=3, verify=False) if r.status_code == 200: fo = open(config,"r") line = fo.read(1) print(line) #判断配置文件内容 if line == "1": print("发送报警") fo.close() fo = open(config, "w") fo.write('0') print("配置重置为0") # 请求响应状态 msg = "监控的URL:%s%sURL恢复状态正常:%s%s监测时间:%s" % ( url, "\n\n", r.status_code, "\n\n", check_time) # 推送消息 yun_push(msg) else: print("当前配置为",line) fo = open(config, "w") fo.write('0') print("配置重置为0") else: fo = open(config, "r") line = fo.read(1) print(line) if line == "1": print("退出程序") else: print("发送报警") fo.close() fo = open(config, "w") fo.write('1') print("配置重置为1") # 请求响应状态 msg = "监控的URL:%s%sURL访问异常:%s%s监测时间:%s" % ( url, "\n\n", r.status_code, "\n\n", check_time) # 推送消息 yun_push(msg) except: fo = open(config, "r") line = fo.read(1) print(line) if line == "1": print("退出程序") else: print("发送报警") fo.close() fo = open(config, "w") fo.write('1') print("配置重置为1") # 请求响应状态 msg = "监控的URL:%s%sURL访问失败,无法连接%s监测时间:%s" % ( url, "\n\n", "\n\n", check_time) # 推送消息 yun_push(msg) def yun_push(content): url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=用自己的' s = json.dumps({'msgtype': 'text', 'text': {"content" : content}}) print(requests.post(url, data=s).text) if __name__ == '__main__': #判断配置文件是否存在,不存在则生成配置文件并退出,配置文件则存在执行 config = './baidu.config' if not os.path.exists(config): print("配置文件不存在") file = open(config,'w') file.close() print("配置文件已生成") else: print("配置文件存在,执行URL检测") url_check("https://www.baidu.com/")
式使用
在VPS部署python脚本,并设置定时任务即可;
学习python两天半的练习生王忘杰,喜欢路由交换、linux、网络安全,开整!这是我的第二篇0基础python文章,请大家支持,谢谢~
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫