美文网首页
利用python建立web服务监控器,服务停止后邮件提醒

利用python建立web服务监控器,服务停止后邮件提醒

作者: zxws1009 | 来源:发表于2025-04-10 11:25 被阅读0次

1、安装 Python 环境

下载 Python 安装包
访问 Python 官方下载页面。
依据服务器的系统架构(32 位或者 64 位),挑选合适的 Python 版本(推荐 Python 3.9 及以上版本)进行下载。
运行安装程序
双击下载好的安装包,开启安装程序。
在安装界面,勾选 “Add Python to PATH” 选项,这样 Python 会被自动添加到系统的环境变量中,方便后续使用。
点击 “Install Now” 开始安装。
验证安装
打开命令提示符(可以通过按下 Win + R 组合键,输入 cmd 并回车来打开)。
在命令提示符中输入 python --version,若安装成功,会显示当前安装的 Python 版本号。

2、安装所需的 Python 库

打开命令提示符
以管理员身份运行命令提示符。在开始菜单中找到 “命令提示符”,右键单击并选择 “以管理员身份运行”。
安装 requests 和 yagmail 库
在命令提示符中输入以下命令来安装 requests 库:

pip install requests

输入以下命令来安装 yagmail 库:

pip install yagmail

3、发布监控代码

创建项目文件夹
在服务器上创建一个新的文件夹,例如 web_service_monitor,用于存放监控代码。
编写代码文件
使用文本编辑器(如记事本、Visual Studio Code 等)打开一个新的文件,将之前提供的监控代码复制到文件中。
按照实际情况修改代码中的邮箱信息和要监控的 Web 服务地址。
将文件保存为 monitor.py,并将其放置到之前创建的 web_service_monitor 文件夹中。

监控需求:

  • 可监控多个服务
  • 可发送到多个邮箱
  • 监控服务启动时发一次通知
  • 某个服务启动/停止时发通知,同一服务下次检查时如状态未变化不再发邮件

代码完整版:

import requests
import yagmail
import time

# 配置邮箱信息
email_host = 'smtp.163.com' # 邮箱SMTP服务器地址
sender_email = "xxx@163.com"  # 发送邮件的邮箱地址
sender_password = "xxxx"  # 邮箱密码,163邮箱一版16位授权码(非登录密码),需要去开启STMP设置
receiver_email = ["1@xx.com", "2@xx.com"]   # 接收通知的邮箱地址,可多个

# 要监控的 Web 服务列表,每个服务是一个字典,包含别名和 URL
web_services = [
    {"alias": "测试1", "url": "http://1.140.86.13:80/"},
    {"alias": "测试2", "url": "http://1.140.86.13:443/"},
    {"alias": "测试3", "url": "http://1.140.86.128:9601/"},
    # 可以继续添加更多服务
]

# 初始化每个服务的状态
service_status = {service["alias"]: None for service in web_services}

# 检查 Web 服务状态的函数
def check_web_service_status(url):
    try:
        response = requests.get(url)
        return response.status_code == 200
    except requests.RequestException:
        return False

# 发送邮件通知的函数
def send_email_notification(subject, body):
    yag = yagmail.SMTP(sender_email, sender_password, email_host)
    yag.send(to=receiver_email, subject=subject, contents=body)

# 发送服务启动邮件
startup_subject = "Web服务监控程序已启动"
startup_body = "Web服务监控程序已成功启动,开始监控服务状态。"
send_email_notification(startup_subject, startup_body)

# 主监控循环
while True:
    for service in web_services:
        alias = service["alias"]
        url = service["url"]
        current_status = check_web_service_status(url)
        previous_status = service_status[alias]

        if previous_status is None:
            # 首次检查,更新状态但不发邮件
            service_status[alias] = current_status
        elif current_status != previous_status:
            # 状态变化,发送邮件并更新状态
            if current_status:
                subject = f"{alias} Web服务已上线!"
                body = f"Web服务 {alias} ({url}) 目前已恢复可用。"
            else:
                subject = f"{alias} Web 服务已挂!"
                body = f"Web服务 {alias} ({url}) 目前不可用。请尽快检查。"
            send_email_notification(subject, body)
            service_status[alias] = current_status

    time.sleep(60) # 每60秒循环检查
    

4、设置任务计划程序(可选)

若要让监控代码定期运行,可以使用 Windows 的任务计划程序。
打开 “任务计划程序”(可以在开始菜单中搜索 “任务计划程序” 来找到它)。
在任务计划程序中,点击 “创建任务”。
在 “常规” 选项卡中,为任务命名,如 “Web 服务监控”。
在 “触发器” 选项卡中,点击 “新建”,设置任务的触发时间,例如每天、每小时等。
在 “操作” 选项卡中,点击 “新建”,在 “程序 / 脚本” 字段中输入 Python 解释器的路径(通常为 C:\PythonXX\python.exe,XX 为 Python 版本号),在 “添加参数(可选)” 字段中输入 monitor.py 文件的完整路径。
点击 “确定” 保存任务。

5、运行监控代码

手动运行
打开命令提示符,使用 cd 命令切换到 web_service_monitor 文件夹,例如:

输入以下命令来运行监控代码:cd C:\web_service_monitor
python monitor.py

后台运行
若希望代码在后台持续运行,可以使用 start 命令:

start python monitor.py

通过以上步骤,你就可以在 Windows Server 服务器上成功安装 Python 环境、安装所需的库,并发布和运行 Web 服务监控代码。

相关文章

  • Python3:发邮件

    利用python的组件进行发邮件1.构建邮件服务器设置、连接服务器、登录服务器2.构建邮件内容3.发送邮件,收件人...

  • python搭建简单的服务器

    利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:pyth...

  • 身份验证

    目前比较成熟的Web服务认证方式有HTTP认证、自定义认证、采用现有工具包。利用Web服务可以建立面向服务的架构(...

  • 1. Flask基础知识

    1. Flask的web服务器 1)WSGI Python Web服务器网关接口(Python Web Serve...

  • JavaMail

    相关概念 1. 邮箱服务器 就想web要有web服务器一样(tomcat等),邮件也有对应的邮件服务器 2. SM...

  • MySQL基础篇

    一、建立连接,登录MySQL库(1)下载成功后,启动MySQL服务。打开组件服务 启动或者停止来控制服务,开启后通...

  • python之flask快速实现接口服务

    flask是Python编写的web微框架,我们可以通过flask快速实现web服务,下面来看看如何利用flask...

  • Python入门系列--邮件--day02

    参考地址: Python发送邮件给多人 Python邮件功能 - 使用163邮箱SMTP服务器发送邮件

  • zabbix 邮箱报警设置

    zabbix 添加 邮件报警: 邮件报警 配置 有两块 : 1. 服务器邮件服务 2. web端配置 他们中间 串...

  • WSGI

    简介 Web服务器网关接口(WSGI)是用于Python编程语言的Web服务器(Web Server)和Web应用...

网友评论

      本文标题:利用python建立web服务监控器,服务停止后邮件提醒

      本文链接:https://www.haomeiwen.com/subject/gaxqbjtx.html