Skip to content

peopleurl/linux-patrol-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

服务器巡检脚本

项目简介

本项目提供了两个服务器巡检脚本,用于监控 Linux 服务器的各项状态指标,帮助管理员及时发现并解决服务器问题。

脚本列表

  • server_monitor.py - Python 版本的服务器巡检脚本
  • server_monitor.sh - Shell 版本的服务器巡检脚本

功能介绍

这两个脚本的主要区别:Python 版本可以生成报告文件,而 Shell 版本直接输出到终端。

  • 系统信息摘要:操作系统、内核版本、CPU 型号、核心数、总内存、总磁盘空间、公网 IP、负载平均值
  • CPU 状态:使用率、1分钟/5分钟/15分钟负载、负载状态
  • 内存状态:使用率、总内存、可用内存、状态
  • 磁盘状态:各挂载点的使用率、总空间、可用空间、状态
  • 磁盘 IO 状态:设备 IO 性能指标、状态
  • 进程状态:指定进程的运行状态
  • 系统服务状态:运行的服务数量、总服务数量、关键服务状态
  • Top 进程:CPU 和内存使用最高的前 5 个进程
  • 网络与安全状态:端口状态、防火墙状态、SELinux 状态
  • 系统启动时间:运行时间、启动时间
  • 僵尸进程:数量、状态
  • 网络状态:连接数、网络延迟、总发送/接收流量、接口信息
  • 安全状态:登录失败次数、失败的用户、权限问题、SSH 配置、自动更新、入侵防御系统、密码策略、SUID 文件检查、最近登录
  • 告警功能:支持钉钉和企业微信告警
  • 报告生成:生成文本和 CSV 格式的巡检报告

安装依赖

Python 版本依赖

  1. Python 3:确保系统安装了 Python 3
  2. Python 库
    pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple psutil requests

系统工具依赖

  • CentOS/RHEL

    yum install -y sysstat net-tools python3-pip procps
  • Ubuntu/Debian

    apt-get install sysstat net-tools procps

使用方法

server_monitor.py (Python 版本)

  1. 配置告警参数(可选): 编辑脚本中的 ALERT_CONFIG 部分,设置告警类型和 webhook URL

  2. 运行脚本

    python server_monitor.py
  3. 查看报告: 脚本会生成 server_monitor_YYYYMMDD_HHMMSS.txtserver_monitor_YYYYMMDD_HHMMSS.csv 格式的报告文件

server_monitor.sh (Shell 版本)

  1. 添加执行权限

    chmod +x server_monitor.sh
  2. 运行脚本

    ./server_monitor.sh

    结果会直接输出到终端

配置说明

修改检查的进程

  • Python 版本:在 server_monitor.py 中修改 CHECK_PROCESSES 列表:

    # 要检查的进程
    CHECK_PROCESSES = ['sshd', 'nginx', 'mysql', 'redis']
  • Shell 版本:在 server_monitor.sh 中修改 CHECK_PROCESSES 数组:

    # 要检查的进程
    CHECK_PROCESSES=(sshd nginx mysql redis)

修改检查的端口

  • Python 版本:在 server_monitor.py 中修改 CHECK_PORTS 列表:

    # 要检查的端口
    CHECK_PORTS = [22, 80, 443, 3306, 6379]
  • Shell 版本:在 server_monitor.sh 中修改 CHECK_PORTS 数组:

    # 要检查的端口
    CHECK_PORTS=(22 80 443 3306 6379)

修改检查的关键服务

  • Python 版本:在 server_monitor.py 中修改 CHECK_SERVICES 列表:

    # 要检查的关键服务
    CHECK_SERVICES = ['sshd', 'cron', 'syslog-ng', 'rsyslog']
  • Shell 版本:在 server_monitor.sh 中修改 CHECK_SERVICES 数组:

    # 要检查的关键服务
    CHECK_SERVICES=(sshd cron syslog-ng rsyslog)

示例:添加 Apache 服务监控

  • Python 版本

    # 修改检查的进程
    CHECK_PROCESSES = ['sshd', 'nginx', 'mysql', 'redis', 'apache2']
    # 修改检查的端口
    CHECK_PORTS = [22, 80, 443, 3306, 6379, 8080]
    # 修改检查的关键服务
    CHECK_SERVICES = ['sshd', 'cron', 'syslog-ng', 'rsyslog', 'apache2']
  • Shell 版本

    # 修改检查的进程
    CHECK_PROCESSES=(sshd nginx mysql redis apache2)
    # 修改检查的端口
    CHECK_PORTS=(22 80 443 3306 6379 8080)
    # 修改检查的关键服务
    CHECK_SERVICES=(sshd cron syslog-ng rsyslog apache2)

告警配置

对于 Python 版本,需要配置正确的 webhook URL 才能使用告警功能:

# 告警配置
ALERT_CONFIG = {
    'type': 'dingtalk',  # 可选: 'dingtalk' 或 'wecom'
    'webhook': 'https://oapi.dingtalk.com/robot/send?access_token=your_token'
}
  • 类型说明

    • dingtalk:钉钉机器人告警
    • wecom:企业微信机器人告警
  • 获取 webhook URL

    • 钉钉:在钉钉群中添加机器人,获取 webhook URL
    • 企业微信:在企业微信应用中创建机器人,获取 webhook URL
  • 示例:配置企业微信告警

    ALERT_CONFIG = {
        'type': 'wecom',
        'webhook': 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key'
    }

注意事项

  1. 权限要求

    • 某些系统信息需要 root 权限才能访问,请以 root 用户或使用 sudo 运行脚本
  2. 网络访问

    • 脚本需要访问外部网络来获取公网 IP 和测试网络延迟
    • 告警功能需要网络连接到钉钉或企业微信服务器
    • 网络延迟测试需要访问外部网络(默认测试百度),确保服务器可以访问互联网
  3. 性能影响

    • 脚本会占用一定的系统资源,建议在非高峰期运行
    • 特别是磁盘 IO 检查可能会对系统性能产生短暂影响
  4. 兼容性

    • Python 版本在不同 Linux 发行版上的兼容性更好
    • Shell 版本可能需要根据不同的 Linux 发行版进行调整
  5. 日志文件

    • Python 版本会生成报告文件,建议定期清理旧的报告文件
  6. 防火墙检测

    • 脚本会自动检测不同类型的防火墙(firewalld、ufw、iptables),适配不同的 Linux 发行版
  7. SELinux 检测

    • 脚本会检测 SELinux 的状态,并转换为更易理解的描述
  8. 登录记录

    • 最近登录记录只显示用户、IP 地址和登录时间,保护敏感信息
  9. 进程检测

    • CPU 和内存使用最高的进程使用系统 ps 命令获取,确保准确性
  10. 错误处理

    • 脚本包含完善的错误处理机制,即使某些检查项失败也不会影响整体执行
  11. 超时设置

    • 网络请求和告警发送都设置了超时,避免脚本因网络问题卡住

定期执行

可以将脚本添加到 crontab 中,定期执行巡检:

# 每小时执行一次 Python 版本
0 * * * * /usr/bin/python /path/to/server_monitor.py

# 每小时执行一次 Shell 版本,并将结果保存到日志文件
0 * * * * /path/to/server_monitor.sh >> /var/log/server_monitor.log 2>&1

示例输出

文本报告示例

===========================================
服务器巡检报告
===========================================
主机名: server-01
IP地址: 192.168.1.100
巡检时间: 2026-03-17 11:32:30

【CPU 状态】
使用率: 10.5%
1分钟负载: 0.25
5分钟负载: 0.15
15分钟负载: 0.10
负载状态: 正常

【内存状态】
使用率: 60.2%
总内存: 16.00GB
可用内存: 6.35GB
状态: 正常

...

最后

  1. 系统兼容性:本脚本未在所有版本的 Linux 系统上进行测试,可能在某些特定版本或配置的系统上存在兼容性问题

  2. 使用建议:由于水平有限,脚本可能存在未发现的 bug 或性能问题。请务必在测试环境中运行验证后,再在生产环境中使用

  3. 权限要求:部分监控功能需要 root 权限才能正常执行,请确保以适当的权限运行脚本

  4. 网络依赖:网络状态检测功能依赖于外部网络连接,请确保服务器能够正常访问外部网络

  5. 使用范围:本脚本仅用于服务器监控,使用过程中如有问题,请及时反馈

About

linux-patrol-scripts 是一个轻量级的 Linux 系统巡检工具集,包含 Shell 和 Python 脚本,旨在帮助系统管理员快速检查服务器状态、监控资源使用情况并识别潜在问题。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages