详解Python实现URL监测与即时推送
作者:董式小爬虫 发布时间:2023-12-29 08:18:35
标签:Python,URL,监测,即时推送
原理
采用Python requests发起请求监测的URL,检测Http响应状态及是否超时,如果Http状态异常或响应超时,则通过聚合云推的消息推送API将预警消息发送至邮箱、钉钉机器人、企业微信机器人、微信公众号等,服务端通过crontab定时(每分钟)执行代码,实现动态监测功能。
环境
操作系统: CentOS 7.x
Python版本: 3.6
消息推送服务: tui.juhe.cn
代码
#!/usr/bin/python3
import requests
import time
import json
# 监测URL是否正常响应
def url_check(url):
# 当前时间
check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("开始监测:%s -- %s" % (url, check_time))
try:
# 请求URL, 设置3s超时
r = requests.get(url, timeout=3)
if r.status_code != 200:
# 请求响应状态异常
msg = "监控的URL:%s%sHttp状态异常:%s%s监测时间:%s" % (url, "\n\n", r.status_code, "\n\n", check_time)
print("监测结果:异常(Http状态异常:%s) -- %s" % (r.status_code, check_time))
# 通过云推推送消息
yuntui_push(msg)
else:
# 请求响应正常
print("监测结果:正常 -- %s" % check_time)
except requests.exceptions.ConnectTimeout:
# 请求响应超时
msg = "监控的URL:%s%s请求异常:%s%s监测时间:%s" % (url, "\n\n", "请求超时", "\n\n", check_time)
print("监测结果:超时 -- %s" % check_time)
# 通过云推推送消息
yuntui_push(msg)
# 将预警消息通过云推推送
def yuntui_push(content):
# 当前时间
push_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 云推接口的信息配置,可以通过 https://tui.juhe.cn 自行注册创建
# (可以配置邮件、钉钉机器人、微信公众号等接收方式)
token = "*****************"
service_id = "******"
title = "URL可用性监控预警"
doc_type = "markdown"
body = {"token": token, "service_id": service_id, "title": title, "content": content, "doc_type": doc_type}
try:
r = requests.post("https://tui.juhe.cn/api/plus/pushApi", data=body, timeout=15)
push_res = json.loads(r.content)
code = push_res['code']
if code == 200:
print("推送结果:成功 -- %s" % push_time)
else:
print("推送结果:失败(%s) -- %s" % (push_res['reason'], push_time))
except requests.exceptions.ConnectTimeout:
print("推送结果:超时 -- %s" % push_time)
# 执行URL可用性监测
if __name__ == '__main__':
# 监控URL可用性
# url_check("https://www.test.com")
url_check("https://www.baidu.com/")
如果requests未安装可以执行以下命令安装
pip3 install requests
crontab计划任务配置
命令行输入crontab -e
进入计划任务配置
# 每分钟执行一次
*/1 * * * * /usr/bin/python3 /data/check_url/main.py >> /data/log.txt
查看日志
cat /data/log.txt
开始监测:https://www.baidu.com/ -- 2021-11-16 15:04:01
监测结果:正常 -- 2021-11-16 15:04:01
开始监测:https://www.baidu.com/ -- 2021-11-16 15:05:02
监测结果:正常 -- 2021-11-16 15:05:02
开始监测:https://www.baidu.com/ -- 2021-11-16 15:06:01
监测结果:正常 -- 2021-11-16 15:06:01
开始监测:https://www.baidu.com/ -- 2021-11-16 15:07:01
监测结果:正常 -- 2021-11-16 15:07:01
开始监测:https://www.baidu.com/ -- 2021-11-16 15:08:01
监测结果:正常 -- 2021-11-16 15:08:01
开始监测:https://www.test.com -- 2021-11-16 15:11:01
监测结果:超时 -- 2021-11-16 15:11:01
推送结果:成功 -- 2021-11-16 15:11:04
开始监测:https://www.test.com -- 2021-11-16 15:12:01
监测结果:超时 -- 2021-11-16 15:12:01
推送结果:成功 -- 2021-11-16 15:12:04
预警消息效果
如果监测到异常结果,你在云推配置的接收终端将会收到通知,类似如下:
钉钉群机器人:
邮件:
微信公众号:
来源:https://blog.csdn.net/chasiona/article/details/121362182


猜你喜欢
- 在零售、经济和金融等行业,数据总是由于货币和销售而不断变化,生成的所有数据都高度依赖于时间。如果这些数据没有时间戳或标记,实际上很难管理所有
- 本篇文章适合css新手学习,对于已经掌握了css的朋友们也可以通过本片文章来复习知识。作者通过实践,认为在有些情况下css的代码是可以更加简
- Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理
- 从大的发展来看,网站就是一块试验田,一块在错误中成长、在错误中变强变大的试验田。这决定了互联网产品的成长路线,一定是一个反复修正和迭代的曲线
- 本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法。分享给大家供大家参考。具体方法如下:import simp
- 最近用到了docx生成word文档,docx本身用起来很方便,自带的各种样式都很好看,美中不足的就是对中文的支持不够好。在未设置中文字体的时
- MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、
- Mysql 查询时间段交集使用场景数据库表有两个字段starttime,endtime。现在给出(a,b)的时间段,查出和(starttim
- 一、前言今天我们将用Python来创建一个属于自己的音乐播放器。为此,我们将使用三个软件包:Tkinter:用于UIPygame:播放音乐o
- 1.原始数据是这样的2.脚本如下:import pandas as pddf = pd.read_excel(r'E:\untitl
- 目录mapfilterreducezipsortedmapmap其中,function 参数表示要传入一个函数,其可以是内置函数、自定义函数
- 前言:array数组要转换成矩阵(matrix)数据类型才能进行一系列的线性运算。matrix类型也有时候要转换成array数组。代码:1.
- 本文实例讲述了Python基于正则表达式实现文件内容替换的方法。分享给大家供大家参考,具体如下:最近因为有一个项目需要从普通的服务器移植到S
- 本文实例为大家分享了原生js实现波浪导航效果的具体代码,供大家参考,具体内容如下展示效果:源码展示:<!doctype html>
- Python 处理数据的实例详解最近用python(3.2的版本)写了根据特定规则,处理数据的一个小程序,用到了一些python常用的基础知
- explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间
- CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为
- 直接分析,如原矩阵如下(1): (1) 我们要截取的矩阵(取其一三行,和三四列数据构成矩阵)为如下(2): (2)错
- 1、新建链接服务器 在图1中选中“链接服务器”,右键选择“新建链接服务器”,如图2,配置相关参数。2、配置相关参数在“常规”选项中
- 本节笔者主将要介绍Active Server Page的另一对象Response,Response对象的作用是在向浏览器发送数据。将Resp