使用Python写个小监控

  • Post category:Python

下面是使用Python写一个小监控的完整攻略。

1. 概述

监控系统是一个广泛应用的系统,在网络、服务器等方面都有着重要的作用。在本攻略中,我们将使用Python写一个小型的监控系统来监控网络服务的可用性和性能。

2. 实现过程

2.1 确定监控目标

首先,确定我们要监控的目标。在本攻略中,我们选择监控一个Web服务器的可用性和负载情况。

2.2 安装必要的Python库

安装必要的Python库来获取Web服务器的状态和性能信息。在这里,我们使用以下库:

  • requests:用于向Web服务器发送HTTP请求,获取响应状态码;
  • psutil:用于获取当前系统的性能指标,如CPU和内存使用率。

你可以使用以下命令来安装这些库:

pip install requests psutil

2.3 编写Python脚本

编写Python脚本来实现监控系统的逻辑。在这里,我们编写脚本 monitor.py

import requests
import psutil

# 网站URL
url = "http://example.com"

# 发送HTTP请求,获取响应状态码
response = requests.get(url)
status_code = response.status_code

# 获取系统的CPU和内存使用率
cpu_usage_percent = psutil.cpu_percent()
mem_usage_percent = psutil.virtual_memory().percent

# 输出监控结果
print(f"Status code: {status_code}")
print(f"CPU usage: {cpu_usage_percent}%")
print(f"Memory usage: {mem_usage_percent}%")

在代码中,我们首先定义了要监控的Web服务器的URL。然后,我们使用requests库发送一个HTTP GET请求并获取响应状态码。接着,我们使用psutil库获取系统的CPU和内存使用率,并将这些监控结果打印到控制台输出。

2.4 定时执行监控任务

为了保证监控系统的时效性,我们需要定时执行监控任务。在这里,我们使用Python内置的 timeschedule 库来实现定时执行。我们在 monitor.py 中添加以下代码:

import time
import schedule

def monitor():
    # TODO: 监控代码放在这里
    pass

# 每5秒执行一次监控任务
schedule.every(5).seconds.do(monitor)

while True:
    schedule.run_pending()
    time.sleep(1)

在代码中,我们首先定义了 monitor 函数来包含所有的监控代码。然后,我们使用 schedule.every() 函数来指定定时任务的执行时间间隔,这里是每5秒执行一次监控任务。最后,我们使用一个无限循环来不断执行定时任务。

2.5 启动监控系统

完成了代码的编写之后,我们可以运行 monitor.py 来启动监控系统了。

python monitor.py

3. 示例说明

以下是两个使用示例:

3.1 监控Web服务器的可用性和性能

在这个示例中,我们使用 monitor.py 监控一个Web服务器的可用性和性能指标。

首先,我们修改 monitor.py 中的 url 变量,将其设置为要监控的Web服务器的URL。

url = "http://example.com"

然后,我们在终端中运行 monitor.py

python monitor.py

在控制台输出中,我们将看到Web服务器的状态码、CPU使用率和内存使用率等监控结果。

3.2 监控本地进程的CPU使用率

在这个示例中,我们使用 monitor.py 监控本地运行的某个进程的CPU使用率。

首先,我们修改 monitor.py 中的 monitor 函数,使用psutil库获取指定进程的CPU使用率。

import psutil

def monitor():
    # 获取指定进程的CPU使用率(这里以notepad.exe为例)
    process_name = "notepad.exe"
    process = psutil.Process()
    cpu_percent = process.cpu_percent(interval=1)

    # 输出监控结果
    print(f"CPU usage of {process_name}: {cpu_percent}%")

然后,我们在终端中运行 monitor.py

python monitor.py

在控制台输出中,我们将看到指定进程的CPU使用率的监控结果。