运维日记2025/12/2

54 阅读3分钟

运维项目日记:系统监控脚本 V1.0

项目名称:Linux系统服务监控与自动化修复套件
版本:V1.0(基础功能版)
完成日期:2025年6月21日
开发周期:约3天


🎯 项目目标

构建一个能够自动监控关键系统服务状态,并在异常时提供修复选项的Python脚本。

核心需求

  1. 定时检查预设服务的运行状态(Nginx, MySQL, SSH, Cron)
  2. 提供清晰的状态报告(命令行 + HTML格式)
  3. 实现异常服务的自动重启尝试
  4. 支持定时自动化执行(Cron)

🔧 技术实现

1. 核心架构

python

# 三层次设计
service_monitor.py
├── 检测层 (check_service)
├── 修复层 (restart_service)
└── 报告层 (generate_html_report)

2. 关键技术点

  • 服务状态检测systemctl is-active 命令调用
  • 子进程管理:Python subprocess 模块的安全调用
  • 异常处理try-except 捕获命令执行异常
  • 定时调度:Cron任务配置与路径管理
  • 报告生成:HTML模板与动态内容填充

3. 代码亮点

python

# 智能重启逻辑
if not check_service(service_name):
    user_input = input("是否尝试自动修复?(y/N): ")
    if user_input == 'y':
        restart_service(service_name)
        # 二次验证确保重启成功

📊 功能特性清单

功能模块状态说明
基础监控✅ 完成检查4个核心服务状态
状态报告✅ 完成命令行彩色输出 + HTML报告
自动修复✅ 完成交互式重启异常服务
定时执行✅ 完成配置Cron每5分钟检查
日志记录✅ 完成输出重定向到日志文件

🚀 实际运行效果

控制台输出示例

text

🔍 服务状态检查报告
========================================
nginx           ✅ 运行中
mysql           ❌ 已停止
ssh             ✅ 运行中
cron            ✅ 运行中

⚠️  发现 1 个服务异常: mysql
是否要尝试自动修复?(y/N): y

🔄 尝试重启服务: mysql
✅ 成功重启服务: mysql

HTML报告

  • 生成美观的网页格式报告
  • 不同服务状态用颜色区分
  • 包含时间戳和详细状态信息

📝 遇到的问题与解决

  1. Cron环境问题

    • 现象:Cron任务找不到python3命令
    • 解决:使用绝对路径/usr/bin/python3
    • 原理:Cron的PATH环境变量与用户终端不同
  2. 权限问题

    • 现象:重启服务需要sudo权限
    • 解决:配置sudo免密码执行特定命令
    • 注意:生产环境需谨慎配置权限
  3. 编辑器切换

    • 现象crontab -e默认打开Vim
    • 解决:设置EDITOR环境变量为nano/micro
    • 命令export EDITOR=/usr/bin/micro

🎖️ 项目收获

技术层面

  • 掌握了Python与Linux系统服务的交互方法
  • 理解了Cron定时任务的工作原理和配置要点
  • 学会了编写具有实际用途的运维脚本

思维层面

  • 建立了“检测-报告-修复”的监控闭环思维
  • 理解了自动化工具的价值:解放人力,提高效率
  • 培养了从用户角度设计工具交互的习惯

📈 下一版本计划(V2.0)

计划新增功能

  1. 邮件/短信告警:服务异常时自动发送通知
  2. 历史趋势分析:记录服务状态变化,生成趋势图
  3. Web仪表盘:实时显示多台服务器的服务状态
  4. 配置化管理:通过配置文件添加/删除监控服务
  5. 性能监控:监控服务资源使用(CPU、内存)

💭 项目感想

“这个项目让我真正体会到‘用代码解决实际问题’的乐趣。从最初的只能手动检查服务,到现在的全自动监控,效率提升了不止十倍。最让我自豪的不是代码本身,而是这个工具真的能在日常工作中发挥作用——它不会累,不会忘,始终在后台默默守护着系统的健康。”

最大的领悟:最好的运维工具,往往是运维人员为自己量身定做的工具。

项目地址https://gitee.com/babylonyao/my-linux-scripts
版本:Service Monitor V1.0