Linux Perf Check 是一个通过 SSH 远程连接 Linux 服务器,自动化采集系统指标并生成专业巡检报告的 Python 工具。它把运维日常的「看系统、查日志、摸数据库」变成一条命令。
传统运维巡检的痛点:
| 痛点 | 本工具的解法 |
|---|---|
| 每次巡检要敲几十条命令 | --check all 一键跑完 20 个模块 |
| 多台服务器重复操作 | --inventory 批量并发巡检,自动汇总 |
| 巡检完还得自己出报告 | 自动生成 txt + json + html 三格式报告 |
| 数据库检查太零散 | 内置 MySQL/PostgreSQL/Oracle 深度诊断 |
| Java 宕机排查费时间 | 自动采集 jstack/jmap/jstat,AI 辅助分析 |
| 巡检一次要 20+ 分钟 | 模块并发执行,全量巡检压缩到 1-2 分钟 |
pip install paramiko# 生成专用密钥
ssh-keygen -t ed25519 -C "perf-check" -f ~/.ssh/id_ed25519_perf
# 上传到目标服务器
ssh-copy-id -i ~/.ssh/id_ed25519_perf.pub root@<服务器IP># 密码认证
python linux_inspection.py --host 192.168.1.100 --user root --password redhat --check all
# 密钥认证
python linux_inspection.py --host 192.168.1.100 --user root --key ~/.ssh/id_ed25519_perf --check all
# 快速巡检(只查 CPU/内存/磁盘/告警)
python linux_inspection.py --host 192.168.1.100 --user root --password redhat --check cpu,memory,disk,alert| 分类 | 模块 | 巡检内容 |
|---|---|---|
| 基础巡检 | system |
系统版本、内核、主机名、IP/网关/DNS、运行时长、时区 |
cpu |
CPU 型号/核数、使用率、1/5/15min 负载、高占用进程 | |
memory |
物理/缓存/缓冲区、Swap 分区、OOM 日志 | |
disk |
磁盘使用率、inode、大文件、IO 繁忙度、只读挂载 | |
network |
网卡流量、监听端口、TCP 连接、防火墙、丢包延迟 | |
process |
业务进程存活、僵尸进程、定时任务、异常进程 | |
log |
系统日志、安全日志、内核报错、崩溃/OOM | |
security |
可疑账号、空密码、特权用户、sudo 权限、SSH 配置 | |
hardware |
CPU 温度、硬盘健康、RAID 阵列、DMI 信息 | |
middleware |
MySQL/Redis/Nginx/Tomcat/Docker 状态、连接数、慢查询 | |
backup |
备份任务、备份文件、业务端口、SSL 证书 | |
alert |
CPU>80%、内存>85%、磁盘>85%、Swap>50% 等阈值告警 | |
| Java 诊断 | jvm_crash |
Java 进程检测、crash log、jstack 死锁、jmap 堆对象、jstat GC |
| MySQL 深度诊断 | mysql_deep |
23 项:连接使用率、缓冲池命中率、DB/表大小、慢查询、索引分析、主从复制、InnoDB 引擎、回表检测、参数调优 |
db_health |
健康评分、容量预测、瓶颈分析(CPU/IO/锁/连接/慢查询五大方向) | |
db_security |
SQL 注入检测、敏感数据扫描、权限审计、密码策略(7 维度安全评分 A/B/C/D/F) | |
db_locks |
当前锁统计、死锁检测、阻塞链追踪 | |
db_backup |
全量/增量备份(mysqldump/pg_dump/expdp)、Cron 调度、备份验证 | |
db_sql |
SQL 规范审核(5 维度)、DDL 影响分析、重写优化、Schema 查询、数据导出导入 |
💡 数据库模块支持 MySQL / PostgreSQL / Oracle 三种数据库,通过
db_auth字段统一配置。
创建 inventory.json:
{
"servers": [
{
"alias": "生产 MySQL 服务器",
"host": "IP地址",
"port": 22,
"user": "root",
"auth": { "type": "password", "value": "redhat" },
"enabled": true,
"tags": ["生产", "MySQL"],
"databases": [
{ "type": "mysql", "host": "127.0.0.1", "port": 3306, "user": "root", "password": "mysql_pwd" }
]
},
{
"alias": "测试服务器",
"host": "192.168.26.100",
"port": 22,
"user": "root",
"auth": { "type": "key", "value": "~/.ssh/id_ed25519_perf" },
"enabled": true,
"tags": ["测试"]
}
],
"settings": {
"check_modules": "all",
"workers": 3,
"module_workers": 5,
"generate_html": true
}
}执行批量巡检:
# 基础批量巡检
python linux_inspection.py --inventory inventory.json
# 生成 HTML 可视化报告
python linux_inspection.py --inventory inventory.json --html# MySQL 23 项深度诊断
python linux_inspection.py --host 192.168.26.66 --user root --password xxx \
--check mysql_deep --mysql-user app --mysql-password dbpwd
# 数据库健康评分 + 容量预测
python linux_inspection.py --host 192.168.26.66 --user root --password xxx \
--check db_health --mysql-user root --mysql-password dbpwd
# 安全审计(匿名用户、弱密码、权限越界)
python linux_inspection.py --host 192.168.26.66 --user root --password xxx \
--check db_security --mysql-user root --mysql-password dbpwd# 自动采集 jstack/jmap/jstat + AI 辅助诊断
python linux_inspection.py --host 192.168.26.66 --user root --password xxx --check jvm_crash
# 典型场景:运维报「服务器卡」─ CPU/内存/Java/告警 四件套
python linux_inspection.py --host 192.168.26.66 --user root --password xxx \
--check cpu,memory,jvm_crash,alert# SQL 审核(5 维度评分 + 问题清单)
python linux_inspection.py --host 192.168.26.66 --user root --password xxx \
--check db_sql --sql "SELECT * FROM users WHERE name LIKE '%test%'"| 指标 | 正常 | 告警 | 危险 |
|---|---|---|---|
| CPU 使用率 | < 70% | 70%-80% | > 80% |
| 内存使用率 | < 70% | 70%-85% | > 85% |
| 磁盘使用率 | < 70% | 70%-85% | > 85% |
| Swap 使用率 | < 30% | 30%-50% | > 50% |
| 缓冲池命中率 | > 95% | 90%-95% | < 90% |
| 数据库连接使用率 | < 60% | 60%-80% | > 80% |
| 主从复制延迟 | < 10s | 10-60s | > 60s |
巡检完成后自动生成三类报告:
reports/
├── 192_168_26_66_20260604_143000.txt # 结构化文本报告
├── 192_168_26_66_20260604_143000.json # 机器可读 JSON
├── batch_summary_20260604_143000.txt # 批量汇总(文本)
└── batch_report_20260604_143000.html # 批量汇总(可视化 HTML)
# Linux 服务器巡检报告
## 基本信息
- 巡检时间: 2026-06-04 14:30:00
- 目标主机: 192.168.26.66:22
- 操作用户: root
## 告警汇总
| 级别 | 模块 | 问题描述 | 处理建议 |
|------|------|----------|----------|
| 🔴 危险 | disk | /data 使用率 92% | 清理日志或扩容 |
| 🟡 告警 | mysql | 缓冲池命中率 88.5% | 增大 innodb_buffer_pool_size |
| 🟡 告警 | security | SSH 密码认证未关闭 | 修改为密钥认证 |
经过两轮架构优化后,全量巡检时间从 20+ 分钟压缩到 1-2 分钟:
| 优化轮次 | 核心措施 | 预估耗时 |
|---|---|---|
| — | 原始版本(串行全盘扫描) | 20+ min |
| 1st | 限缩扫描目录 + 合并 DB 查询 + 超时控制 | 3-6 min |
| 2nd | 模块多线程并发(ThreadPoolExecutor, 5 线程) | 1-2 min |
| 累计 | 提升 90%+ | — |
- 密钥优先:推荐 SSH 密钥认证,支持 ed25519 高强度密钥
- 密码不落地:MySQL 密码通过
MYSQL_PWD环境变量传递,不暴露在进程列表中 - 只读原则:默认仅执行 SELECT 查询,禁止 INSERT/UPDATE/DELETE
- 操作分级:高危操作(KILL 事务 / DROP / TRUNCATE)需用户明确确认
- 超时兜底:每个模块独立超时,单模块卡死不影响全局
| 参数 | 内容 | 需要凭证 |
|---|---|---|
all |
一键全量(展开为全部 20 个模块) | — |
system |
系统基础信息 | SSH |
cpu |
CPU 负载 | SSH |
memory |
内存 & Swap | SSH |
disk |
磁盘空间 | SSH |
network |
网络状态 | SSH |
process |
进程 & 服务 | SSH |
log |
日志巡检 | SSH |
security |
用户与安全 | SSH |
hardware |
硬件状态 | SSH |
middleware |
数据库/中间件 | SSH |
backup |
备份 & 业务 | SSH |
alert |
阈值告警汇总 | SSH |
| 参数 | 内容 | 需要凭证 |
|---|---|---|
jvm_crash |
Java 宕机分析(jstack/jmap/jstat) | SSH |
mysql_deep |
MySQL 深度诊断(23 项) | ⚡ DB 凭证 |
db_health |
数据库健康诊断(MySQL/PG/Oracle) | ⚡ DB 凭证 |
db_security |
数据库安全审计(三库通用) | ⚡ DB 凭证 |
db_locks |
数据库锁分析(三库通用) | ⚡ DB 凭证 |
db_backup |
数据库备份调度(三库通用) | ⚡ DB 凭证 |
db_sql |
SQL 审核与执行(三库通用) | ⚡ DB 凭证 |
⚡ 标记的模块需要数据库连接凭证(
--mysql-user/--mysql-password或inventory.json中的databases[])。数据库模块缺凭证时会自动跳过,不报错。
Q: 数据库模块怎么跳过不报错?
是的,这是设计行为。--check all 时,系统巡检模块正常执行;数据库模块如果没有提供 DB 凭证,会自动跳过并在报告末尾标注。
Q: 支持哪些操作系统?
服务端支持 CentOS 7/8、RHEL、Ubuntu、Debian 等主流 Linux 发行版。巡检脚本在 Python 3.8+ 的任意平台运行(Windows/macOS/Linux 都可以)。
Q: 能只巡检 CPU 和磁盘吗?
当然可以:--check cpu,disk,多个模块逗号分隔。
Q: 生产环境安全吗?
工具设计为只读巡检,不修改任何配置。但 jmap -histo:live 会触发一次 Full GC(如果你在意这点,可以用不带 :live 的版本)。建议先在测试环境跑一遍再上生产。
Q: 能定时自动巡检吗?
可以通过 Cron / 计划任务 + 脚本组合实现:
# crontab -e
0 9 * * * cd /opt/linux-perf-check && python linux_inspection.py --inventory inventory.json --html- 基础系统巡检(14 大类)
- SSH 密钥 + 密码双认证
- 批量巡检 + HTML 汇总报告
- 模块多线程并发(性能提升 90%)
- Java 宕机自动诊断
- MySQL 深度诊断(23 项)
- PostgreSQL / Oracle 数据库支持
- 数据库安全审计 + 锁分析 + 备份调度 + SQL 审核
- 钉钉/企业微信/飞书告警推送
- Web Dashboard 可视化面板
- 巡检历史趋势对比
- Ansible/Puppet 集成
- Docker/K8s 容器巡检扩展
MIT License — 自由使用,欢迎 PR 和 Star ⭐