Skip to main content

linux-perf-check

SSH远程连接Linux服务器进行全量巡检的技能。支持单机和批量巡检,覆盖系统基础信息、CPU负载、内存&Swap、磁盘空间、网络状态、进程&服务、日志、用户与安全、硬件状态、数据库/中间件、备份&业务、资源阈值告警、Java 宕机分析、MySQL深度诊断(23项)、数据库健康诊断、数据库安全审计、数据库锁分析、数据库备份调度、SQL审核执行,全面支持 MySQL/PostgreSQL/Oracle 三大数据库。 ⚠️ 安全要求:SSH密钥认证登录,禁止密码登录;仅执行只读命令,禁止修改服务器配置;数据库仅允许SELECT查询,禁止INSERT/UPDATE/DELETE/DROP/ALTER等任何写入操作。 🚀 性能优化(2026-06-04):模块级多线程并发执行,默认5线程并发巡检,单机全量巡检从20+分钟压至1-2分钟;阻塞模块自动跳过不卡死。 新增数据库模块(2026-05-30):db_health(健康诊断)、db_security(安全审计)、db_locks(锁分析)、db_backup(备份调度)、db_sql(SQL审核执行),均支持 MySQL/PostgreSQL/Oracle 三库。 使用场景包括但不限于: - "帮我巡检XX服务器" - "检查192.168.26.66的系统状态" - "批量巡检所有服务器" - "Linux服务器巡检报告" - "服务器负载过高排查" - "运维巡检" - "一键巡检所有指标"

Jump to install

Source facts

Repository
wanghel2020/linux-perf-check
Last source activity
June 4, 2026 at 09:22
Detected SKILL.md language
Chinese
Stars
32
Forks
12

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
linux-perf-check
description
SSH远程连接Linux服务器进行全量巡检的技能。支持单机和批量巡检,覆盖系统基础信息、CPU负载、内存&Swap、磁盘空间、网络状态、进程&服务、日志、用户与安全、硬件状态、数据库/中间件、备份&业务、资源阈值告警、Java 宕机分析、MySQL深度诊断(23项)、数据库健康诊断、数据库安全审计、数据库锁分析、数据库备份调度、SQL审核执行,全面支持 MySQL/PostgreSQL/Oracle 三大数据库。 ⚠️ 安全要求:SSH密钥认证登录,禁止密码登录;仅执行只读命令,禁止修改服务器配置;数据库仅允许SELECT查询,禁止INSERT/UPDATE/DELETE/DROP/ALTER等任何写入操作。 🚀 性能优化(2026-06-04):模块级多线程并发执行,默认5线程并发巡检,单机全量巡检从20+分钟压至1-2分钟;阻塞模块自动跳过不卡死。 新增数据库模块(2026-05-30):db_health(健康诊断)、db_security(安全审计)、db_locks(锁分析)、db_backup(备份调度)、db_sql(SQL审核执行),均支持 MySQL/PostgreSQL/Oracle 三库。 使用场景包括但不限于: - "帮我巡检XX服务器" - "检查192.168.26.66的系统状态" - "批量巡检所有服务器" - "Linux服务器巡检报告" - "服务器负载过高排查" - "运维巡检" - "一键巡检所有指标"
agent_created
true
# Linux 服务器全量巡检技能 ## 功能概述 通过SSH远程连接Linux服务器,自动收集系统指标(含数据库深度诊断),生成专业巡检报告。覆盖基础巡检 14 项 + Java 宕机诊断 + 数据库深度诊断(MySQL/PostgreSQL/Oracle 三大库,共 10 个数据库专用模块)。 **支持两种模式:** - **单机巡检**:指定单台服务器直接巡检 - **批量巡检**:通过 `inventory.json` 服务器清单,并发巡检多台服务器,生成汇总报告 ## 巡检覆盖范围(14大类) | 模块 | 名称 | 核心指标 | |------|------|----------| | `system` | 系统基础信息 | 系统版本、内核、主机名、IP/网关/DNS、运行时长、时区、登录用户 | | `cpu` | CPU负载巡检 | CPU型号/核数、使用率、1/5/15分钟负载、高占用进程 | | `memory` | 内存&Swap | 物理/缓存/缓冲区、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%、失败登录、僵尸进程 | | `jvm_crash` | Java 宕机分析 | Java进程检测、JVM crash log、jstack死锁检测、jmap堆对象TOP20、jstat GC统计、OOM记录、应用异常日志 | | `mysql_deep` | MySQL深度诊断(23项) | 连接使用率、缓冲池命中率、DB/表大小、性能指标、安全审计、索引分析、主从复制、InnoDB引擎状态、慢查询配置、关键参数;**新增**:性能瓶颈诊断、慢查询执行时间分析、未使用索引检测、回表检测、冗余索引检测、缺失索引检测、MySQL参数调优建议 | | `db_health` | 数据库健康诊断 | MySQL/PostgreSQL/Oracle 健康评分、异常检测、容量预测、瓶颈分析、TOP SQL、趋势分析 | | `db_security` | 数据库安全审计 | SQL注入检测、敏感数据扫描、权限审计、配置安全、密码策略、登录监控(三库通用) | | `db_locks` | 数据库锁分析 | 当前锁统计、死锁检测、阻塞链追踪、阻塞事务终止(三库通用) | | `db_backup` | 数据库备份与调度 | 全量/增量备份(mysqldump/pg_dump/expdp)、Cron定时任务、备份验证 | | `db_sql` | SQL 审核与执行 | SQL规范审核(5维度)、DDL影响分析、重写优化、Schema查询、数据导出导入 | ## 认证方式 ### 方式1:SSH密钥认证(推荐) ```bash # 生成密钥 ssh-keygen -t ed25519 -C "workbuddy-inspection" -f ~/.ssh/id_ed25519_workbuddy # 上传公钥 ssh-copy-id -i ~/.ssh/id_ed25519_workbuddy.pub root@<服务器IP> # 验证 ssh -i ~/.ssh/id_ed25519_workbuddy root@<服务器IP> ``` ### 方式2:密码认证 每次巡检时提供:服务器IP、SSH端口、用户名、密码。 ## 使用方法 ### 单机巡检 ```bash # 全量巡检(密码认证)— 一键跑全部模块,默认5线程并发 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --host <IP> --user root --password <密码> --check all # 全量巡检(密钥认证) python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --host <IP> --user root --key ~/.ssh/id_ed25519_workbuddy --check all # 指定模块巡检 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --host <IP> --user root --password <密码> \ --check cpu,memory,disk,alert # 调优并发(加快巡检速度) python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --host <IP> --user root --password <密码> --check all \ --module-workers 8 --module-timeout 60 # 保存报告 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --host <IP> --user root --password <密码> \ -o /path/to/report.txt --json-output /path/to/report.json ``` ### 批量巡检 #### 1. 编辑服务器清单 编辑 `~/.workbuddy/skills/linux-perf-check/inventory.json`,添加需要巡检的服务器: ```json { "servers": [ { "alias": "生产服务器-MySQL", "host": "192.168.26.66", "port": 22, "user": "root", "auth": { "type": "password", "value": "redhat" }, "enabled": true, "tags": ["生产", "MySQL"] }, { "alias": "测试服务器", "host": "192.168.26.100", "port": 22, "user": "root", "auth": { "type": "key", "value": "~/.ssh/id_ed25519_workbuddy" }, "enabled": true, "tags": ["测试"] } ], "settings": { "check_modules": "all", "timeout": 120, "workers": 3, "module_workers": 5, "module_timeout": null, "output_dir": "./reports", "generate_html": true } } ``` #### 2. 执行批量巡检 ```bash # 基本批量巡检 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --inventory ~/.workbuddy/skills/linux-perf-check/inventory.json # 指定并发数 + 生成HTML报告 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --inventory ~/.workbuddy/skills/linux-perf-check/inventory.json \ --workers 5 --html # 只巡检关键指标(快速) python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --inventory ~/.workbuddy/skills/linux-perf-check/inventory.json \ --check cpu,memory,disk,alert # 指定输出目录 python ~/.workbuddy/skills/linux-perf-check/scripts/linux_inspection.py \ --inventory ~/.workbuddy/skills/linux-perf-check/inventory.json \ --output-dir /path/to/reports --html ``` #### inventory.json 字段说明 | 字段 | 必填 | 说明 | |------|------|------| | `alias` | 否 | 服务器别名,用于报告中显示 | | `host` | 是 | IP地址 | | `port` | 否 | SSH端口,默认22 | | `user` | 是 | SSH用户名 | | `auth.type` | 是 | `password` 或 `key` | | `auth.value` | 是 | 密码字符串 或 密钥文件路径 | | `enabled` | 否 | 是否启用,默认true | | `tags` | 否 | 标签数组,用于分类 | #### settings 字段说明 | 字段 | 必填 | 说明 | |------|------|------| | `check_modules` | 否 | 巡检模块,`"all"` 或逗号分隔字符串(如 `"cpu,memory"`) | | `timeout` | 否 | SSH 命令超时秒数,默认 120 | | `workers` | 否 | 服务器并发线程数,默认 3 | | `module_workers` | 否 | **单服务器模块并发线程数**,默认 5(设为 1 回退串行) | | `module_timeout` | 否 | 单模块超时秒数,默认继承 `timeout` | | `output_dir` | 否 | 报告输出目录,默认 `./reports` | | `generate_html` | 否 | 是否生成 HTML 汇总报告,默认 `false` | #### 批量巡检输出 批量巡检会在输出目录生成以下文件: ``` reports/ ├── 192_168_26_66_20260521_134500.txt # 单台文本报告 ├── 192_168_26_66_20260521_134500.json # 单台JSON报告 ├── 192_168_26_100_20260521_134500.txt ├── 192_168_26_100_20260521_134500.json ├── batch_summary_20260521_134500.txt # 汇总文本报告 └── batch_report_20260521_134500.html # 汇总HTML报告 ``` ### --check 模块速查 | 参数值 | 巡检内容 | 需要凭证 | |--------|----------|:---:| | **`all`** | **一键全量巡检(展开为下面全部 19 个模块)** | — | | `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/crash log) | SSH | | `mysql_deep` | MySQL/MariaDB深度诊断(23项) | ⚡ DB凭证 | | `db_health` | 数据库健康诊断(MySQL/PG/Oracle) | ⚡ DB凭证 | | `db_security` | 数据库安全审计(三库通用) | ⚡ DB凭证 | | `db_locks` | 数据库锁分析(三库通用) | ⚡ DB凭证 | | `db_backup` | 数据库备份调度(三库通用) | ⚡ DB凭证 | | `db_sql` | SQL审核与执行(三库通用) | ⚡ DB凭证 | - **SSH**:仅需 SSH 凭证即可运行 - **⚡ DB凭证**:需要额外提供数据库连接凭证(`--mysql-user`/`--mysql-password` 或 `inventory.json` 中的 `databases[]`) 多个模块用逗号分隔:`--check cpu,memory,disk,alert,jvm_crash,mysql_deep,db_health,db_security` ### --check all 一键全量巡检 ⭐ **当用户说"巡检"、"全量巡检"、"一键巡检"时,AI 自动使用 `--check all`。** `all` 自动展开为以下 19 个模块: ``` system,cpu,memory,disk,network,process,log,security,hardware, middleware,backup,alert,jvm_crash, mysql_deep,db_health,db_security,db_locks,db_backup,db_sql ``` **凭证处理逻辑:** | 模块组 | 有 DB 凭证时 | 无 DB 凭证时 | |--------|:----------:|:----------:| | 系统巡检 14 项(system~jvm_crash) | ✅ 正常执行 | ✅ 正常执行 | | 数据库 6 项(mysql_deep~db_sql) | ✅ 正常执行 | ⚠️ 跳过 + 提示"缺少数据库凭证" | **实际行为:** - 只要有 SSH 凭证就能跑,「数据库模块没凭证就跳过,不报错」 - 报告末尾会列出跳过的模块及原因,方便后续补齐 **使用示例:** ```bash # 最简方式:一键全量 python linux_inspection.py --host 192.168.26.66 --user root --password xxx --check all # 有 DB 凭证时能跑全部 20 个模块 python linux_inspection.py --host 192.168.26.66 --user root --password xxx \ --check all --mysql-user root --mysql-password dbpwd # 批量模式:inventory.json 中配置 check_modules: "all" # 配合 databases[] 字段,自动对列表中的每类数据库执行对应模块 python linux_inspection.py --inventory inventory.json ``` **AI 交互规范:** - 用户说「巡检」→ 直接 `--check all` - 用户说「巡检一下数据库」→ `--check mysql_deep,db_health,db_security` - 用户说「快速巡检」→ `--check cpu,memory,disk,alert` ## Java 宕机分析工作流 ⭐ ### 概述 `jvm_crash` 模块是专门针对 Java 应用宕机/异常场景的诊断模块。它通过 SSH 远程在服务器上自动采集 JDK 诊断数据,然后将文本化结果交给 AI 进行深度分析。 ### 采集内容 | 诊断维度 | 使用工具 | 采集内容 | |----------|----------|----------| | 进程检测 | jps / ps | Java 进程 PID、启动参数、运行时长 | | Crash 历史 | find | 近 30 天内 hs_err_pid*.log 摘要 | | 内存分析 | jmap -histo:live | 堆内存对象 TOP 20(按实例数) | | GC 分析 | jstat -gcutil | 最近 3 次 GC 采样统计 | | 线程分析 | jstack | 线程状态分布、BLOCKED 线程、死锁检测 | | 系统 OOM | dmesg / journalctl | 系统级 OOM Killer 记录 | | 应用日志 | grep | 应用日志中的异常/错误关键词 | ### AI 分析能力(巡检后 AI 自动进行) AI 在拿到巡检数据后,会自动进行以下分析: 1. **死锁诊断** — 识别 `Found deadlock` 关键字,绘制死锁环路 2. **OOM 根因** — 结合 jmap TOP 对象 + 系统 OOM 记录,定位内存泄漏嫌疑类 3. **线程阻塞** — 统计 BLOCKED 线程数,识别持锁线程和等待链 4. **JVM Crash** — 解析 hs_err_pid*.log 中的信号量(SIGSEGV/SIGBUS)、native 帧、问题帧 5. **GC 异常** — 判断 Full GC 频率是否异常,建议 GC 策略调优 6. **建议输出** — 生成结构化诊断报告 + JVM 参数调优建议 + 代码排查方向 ### 使用示例 ```bash # 仅巡检 Java 宕机分析 python linux_inspection.py --host 192.168.26.66 --user root --password xxx --check jvm_crash # 全量巡检(含 Java 分析) python linux_inspection.py --host 192.168.26.66 --user root --password xxx --check all # 关注 CPU/内存 + Java 分析(典型场景:运维报"服务器卡") python linux_inspection.py --host 192.168.26.66 --user root --password xxx --check cpu,memory,jvm_crash,alert ``` ### Heap Dump 深度分析(额外步骤) 对于需要深入分析内存泄漏的场景,`jvm_crash` 模块提供的是轻量快照(jmap -histo)。如果发现内存异常,可进一步操作: ```bash # 在服务器上生成 heap dump jcmd <pid> GC.heap_dump /tmp/heap_$(date +%Y%m%d).hprof # 转文本摘要后交给 AI 分析 jmap -histo:live <pid> > /tmp/heap_histo.txt # 或使用 MAT 导出 leak suspects report ``` ### 注意事项 - `jmap -histo:live` 会触发 Full GC,生产环境谨慎使用;如需无侵入版本可改用 `jmap -histo`(不含 `:live`) - `jstack` / `jmap` 需要与目标 JVM 相同版本的 JDK,或目标进程用户权限
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub