当前位置: 首页 > news >正文

Python 实现服务器自动故障处理工具:从监控到自愈的完整方案

在服务器运维过程中,80% 的故障都是重复性的简单问题(如磁盘空间不足、内存泄漏、服务进程挂掉等)。本文将介绍如何使用 Python 开发一款轻量级自动故障处理工具,通过状态监控、异常诊断、自动修复三个核心模块,实现服务器常见故障的无人值守处理。

核心依赖库

  • psutil:跨平台系统监控库,用于获取磁盘、内存、进程等硬件及运行时信息,替代传统的 shell 命令调用方式
  • requests:HTTP 客户端库,用于故障处理结果的消息推送(支持企业微信、钉钉、邮件等多渠道)
  • subprocess:Python 内置模块,用于执行系统命令(如日志清理、服务重启等修复操作)

安装命令:

pip install psutil requests

工作流程图

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐

│ 状态采集 │───>│ 异常检测 │───>│ 自动修复 │───>│ 结果通知 │

└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘

│ │ │ │

└─────────────────┴─────────────────┴─────────────────┘

循环执行(默认60秒/次)

工具采用轮询机制,默认每 60 秒执行一次检测流程:

  1. 状态采集模块通过 psutil 获取系统关键指标
  1. 异常检测模块将采集数据与预设阈值对比,判断是否存在故障
  1. 自动修复模块针对不同故障类型执行预设修复命令
  1. 结果通知模块将处理过程及结果通过 Webhook 推送至指定渠道

核心模块实现

1. 配置参数模块

将可配置项集中管理,便于根据不同服务器环境调整:

class Config:

# 监控阈值配置

DISK_THRESHOLD = 10 # 磁盘可用空间低于此值(%)触发清理

MEM_THRESHOLD = 90 # 内存使用率高于此值(%)触发减负

CHECK_INTERVAL = 60 # 检测间隔时间(秒)

# 需监控的服务列表

MONITORED_SERVICES = ["nginx", "docker", "prometheus"]

# 安全进程列表(禁止杀死)

SAFE_PROCESSES = ["systemd", "kubelet", "sshd", "python3"]

# 日志清理配置

LOG_PATHS = ["/var/log", "/var/lib/docker/containers"] # 日志路径

LOG_RETENTION_DAYS = 7 # 日志保留天数

# 通知配置

WECHAT_WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"

2. 状态采集模块

封装 psutil 库的调用,获取磁盘、内存、服务状态等关键信息:

import psutil

import subprocess

class ServerMonitor:

@staticmethod

def get_disk_usage(path="/"):

"""获取指定路径的磁盘使用率"""

disk = psutil.disk_usage(path)

return {

"total": disk.total / 1024 / 1024 / 1024, # GB

"used": disk.used / 1024 / 1024 / 1024,

"free": disk.free / 1024 / 1024 / 1024,

http://www.dtcms.com/a/302540.html

相关文章:

  • 日志分析-windows日志分析base--笔记ing
  • lesson26-2:使用Tkinter打造简易画图软件优化版
  • 深入解析MIPI C-PHY (五) MIPI C-PHY 与 A-PHY 的对比分析
  • 重生之我在暑假学习微服务第三天《Docker-上篇》
  • 【Unity笔记】Unity Camera.cullingMask 使用指南:Layer 精准控制、XR 多视图与性能提升
  • ERC20 和 XCM Precompile|详解背后技术逻辑
  • 学习Python中Selenium模块的基本用法(2:下载浏览器驱动)
  • js的学习2
  • JavaScript:数组常用操作方法的总结表格
  • Webhook技术深度解析:从原理到实现全指南
  • Item17:以独立语句将newed对象置入智能指针
  • MDM五十万台设备高并发场景解决方案【后台管理】
  • Taro 位置相关 API 介绍
  • C# 状态机以及状态机编程模式
  • Java设计模式-通俗举例
  • 【智慧物联网平台】编译jar环境 Linux 系统Maven 安装——仙盟创梦IDE
  • Leaflet 综合案例-聚类图层控制
  • django ManyToManyField 如何添加数据
  • Django缓存机制详解:从配置到实战应用
  • MGRE 实验
  • Django 视图详解(View):处理请求与返回响应的核心
  • Linux IPC实战:管道与命名管道的进程对话术
  • 语音识别数据增强
  • llama系列
  • 1688寻源通接口接入要点||电商API接口
  • 电脑ip地址在哪里看
  • 如何提升 TCP 传输数据的性能?详解
  • 信息收集工具ARL资产侦察灯塔系统搭建教程
  • 最新的前端技术和趋势(2025)
  • STM32启动流程