详解Python实现URL监测与即时推送

 更新时间:2021年11月17日 08:42:24   作者:董式小爬虫  
这篇文章主要为大家介绍了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

预警消息效果

如果监测到异常结果,你在云推配置的接收终端将会收到通知,类似如下:

钉钉群机器人:

image.png

邮件:

image.png

微信公众号:

image.png

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Python 实现取多维数组第n维的前几位

    Python 实现取多维数组第n维的前几位

    今天小编就为大家分享一篇Python 实现取多维数组第n维的前几位,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python实现简单的俄罗斯方块游戏

    Python实现简单的俄罗斯方块游戏

    这篇文章主要为大家详细介绍了Python实现简单的俄罗斯方块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python pickle 和 shelve模块的用法

    python pickle 和 shelve模块的用法

    pickle和shelve模块都可以把python对象存储到文件中,下面来看看它们的用法吧
    2013-09-09
  • Python动态声明变量赋值代码实例

    Python动态声明变量赋值代码实例

    这篇文章主要介绍了Python动态声明变量赋值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 深入讲解Python中面向对象编程的相关知识

    深入讲解Python中面向对象编程的相关知识

    这篇文章主要介绍了深入讲解Python中面向对象编程的相关知识,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python实现将字符串的首字母变为大写,其余都变为小写的方法

    Python实现将字符串的首字母变为大写,其余都变为小写的方法

    今天小编就为大家分享一篇Python实现将字符串的首字母变为大写,其余都变为小写的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • flask框架自定义url转换器操作详解

    flask框架自定义url转换器操作详解

    这篇文章主要介绍了flask框架自定义url转换器操作,结合实例形式分析了URL转换器的相关原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-01-01
  • Python中跨越多个文件使用全局变量的方法

    Python中跨越多个文件使用全局变量的方法

    全局变量是不属于函数范围的变量,可以在整个程序中使用,这表明全局变量也可以在函数体内部或外部使用,这篇文章主要介绍了Python中跨越多个文件使用全局变量,需要的朋友可以参考下
    2023-09-09
  • 10个Python办公自动化案例总结

    10个Python办公自动化案例总结

    Python作为一种简单而强大的编程语言,不仅在数据科学和软件开发领域广受欢迎,还在办公自动化方面发挥了巨大作用,通过Python,我们可以编写脚本来自动执行各种重复性任务,从而提高工作效率并减少错误,在本文中,我们总结了10个Python办公自动化案例
    2024-09-09
  • python字符串的方法与操作大全

    python字符串的方法与操作大全

    这篇文章主要介绍了python字符串的方法与操作大全,非常不错,具有参考借鉴借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论