04 ops-diagnose 主项目设计
项目定位
ops-diagnose 是一个面向私有云和基础组件排障的自助诊断工具。
第一版不要做大平台,只做小而完整的 CLI:
- 能检查常见基础组件。
- 能输出 Markdown / JSON 报告。
- 能沉淀配套 runbook。
- 后续能暴露 Prometheus 指标。
- 最终能接入 AI Runbook 知识库。
目录结构
ops-diagnose/
README.md
pyproject.toml
ops_diagnose/
cli.py
checks/
dns.py
yum.py
ntp.py
syslog.py
disk.py
network.py
report.py
docs/
runbooks/
runbook-yum-repo-unavailable.md
runbook-dns-resolution-failure.md
runbook-chrony-time-offset.md
runbook-rsyslog-not-forwarding.md
examples/
report-demo.mdCLI 命令
ops-diagnose check yum --url http://repo.example.com/os/
ops-diagnose check dns --domain repo.example.com
ops-diagnose check ntp
ops-diagnose check syslog
ops-diagnose check disk --threshold 85
ops-diagnose check network --host repo.example.com --port 80
ops-diagnose check all --format markdown
ops-diagnose check all --format json检查结果结构
每个检查输出统一结构:
{
"name": "yum",
"status": "critical",
"summary": "repo URL returned 404",
"evidence": [
"curl -I http://repo.example.com/os/ -> 404"
],
"possible_causes": [
"baseurl 配置错误",
"源站目录不存在",
"代理或网关改写路径"
],
"next_steps": [
"检查 /etc/yum.repos.d/*.repo",
"确认源站目录和发行版版本是否匹配"
],
"runbook": "docs/runbooks/runbook-yum-repo-unavailable.md"
}第一阶段检查项
| 检查项 | 目标 | 输出 |
|---|---|---|
| yum | repo 是否可访问,HTTP 状态码是否正常 | 状态码、DNS、baseurl 建议 |
| dns | 域名是否可解析 | 解析结果、nameserver、失败原因 |
| ntp | chronyd/ntpd 是否正常,时间偏差是否过大 | 服务状态、offset、上游源 |
| syslog | rsyslog 是否运行,端口和配置是否正常 | 服务状态、配置语法、端口 |
| disk | 磁盘使用率和 inode 是否异常 | 使用率、阈值、最大目录提示 |
| network | 目标主机和端口是否可达 | 延迟、端口状态、下一步命令 |
Prometheus 指标
第 5 周加入:
ops_dns_check_success
ops_yum_repo_up
ops_ntp_service_up
ops_ntp_offset_seconds
ops_syslog_service_up
ops_disk_usage_percent
ops_diagnose_last_success简历表达
基于 Python 开发基础组件自助诊断 CLI,覆盖 DNS、yum repo、NTP、syslog、磁盘、网络连通性等场景,支持 Markdown/JSON 报告输出,并沉淀配套 runbook,降低重复答疑和人工排查成本。加入监控后:
使用 Prometheus client_python 暴露诊断指标,并结合 blackbox exporter 构建 HTTP、DNS、TCP 可用性监控和告警规则。加入 AI 知识库后:
将 runbook 和故障复盘接入 Dify/RAGFlow,构建 AI 运维知识库,支持基于引用来源的排障建议生成,并对高风险修复动作增加人工确认提示。