02 12 周练习路线

目标:把“答疑支持经验”转成能展示、能面试、能写进简历的项目资产。

建议节奏:12 周,每周 5 天,每天 45-90 分钟。

总览

主作品:

ops-diagnose:私有云基础组件自助诊断 + 监控 + AI Runbook 知识库

覆盖范围:

  • Linux 基础排障:DNS、网络、磁盘、进程、端口、日志。
  • 基础组件排障:yum、ntp/chrony、syslog/rsyslog。
  • Python 自动化:CLI 诊断工具、报告导出、Prometheus metrics。
  • 监控闭环:Prometheus、blackbox exporter、postgres exporter、告警规则。
  • K8s 故障案例:CrashLoopBackOff、OOMKilled、ImagePullBackOff、Pending、Probe 失败。
  • AI 知识库:把 runbook、故障复盘、诊断报告接入 Dify 或 RAGFlow,回答必须能引用来源。

第 1 周:Linux 排障基本功

目标:把“我会 Linux”变成可展示的排障笔记。

任务:

  • 练 10 个 Linux/sysadmin 问题。
  • 写 3 篇 runbook:
    • runbook-disk-full.md
    • runbook-high-load.md
    • runbook-port-listen-and-connectivity.md
  • 做一个 linux_check.sh,输出磁盘、负载、内存、端口、关键服务状态。

验收:

  • 每篇 runbook 都有:现象、影响、排查命令、判断标准、修复动作、风险提醒。
  • 脚本能在 Linux 机器上运行,并输出 Markdown 格式报告。

第 2 周:yum / DNS / NTP / syslog

目标:把当前工作最熟悉的答疑内容做成资产。

任务:

  • 写 4 篇 runbook:
    • runbook-yum-repo-unavailable.md
    • runbook-dns-resolution-failure.md
    • runbook-chrony-time-offset.md
    • runbook-rsyslog-not-forwarding.md
  • 写 Python 检查脚本:
    • 检查 repo URL 是否可访问。
    • 检查 DNS 是否能解析。
    • 检查 chronyd/ntpd 服务状态。
    • 检查 rsyslog 服务状态和端口。

验收:

  • 每个检查都有明确 exit code。
  • 每个检查都有“可能原因”和“下一步命令”。

第 3-4 周:做 ops-diagnose CLI

目标:从零散脚本升级为项目。

项目结构:

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/
  examples/
    report-demo.md

核心命令:

ops-diagnose check yum
ops-diagnose check dns
ops-diagnose check ntp
ops-diagnose check syslog
ops-diagnose check all --format markdown
ops-diagnose check all --format json

验收:

  • README 有安装、命令、示例输出。
  • 至少 6 个 checks。
  • 至少 5 个 runbook。
  • 至少 1 个 demo 报告。

第 5 周:Prometheus 指标化

目标:从“脚本能跑”升级为“能被监控系统使用”。

任务:

  • ops-diagnose 增加 serve-metrics 命令。
  • 暴露指标:
    • ops_dns_check_success
    • ops_yum_repo_up
    • ops_ntp_service_up
    • ops_ntp_offset_seconds
    • ops_syslog_service_up
    • ops_disk_usage_percent
  • 用 Prometheus 抓取这些指标。

验收:

  • 浏览器访问 /metrics 能看到指标。
  • Prometheus targets 页面显示 up。
  • README 增加 Prometheus 接入步骤。

第 6 周:黑盒监控和告警规则

目标:把内部服务可用性监控做出来。

任务:

  • 用 blackbox exporter 监控 HTTP repo、内部 HTTP 服务、DNS 解析、TCP 端口。
  • 写告警规则:
    • yum repo 不可用超过 5 分钟
    • DNS 解析失败
    • syslog 端口不可达
    • NTP offset 超阈值
    • 磁盘使用率超过 85%

验收:

  • 能故意制造一个失败,并触发告警。
  • 写一篇 alert-rule-design.md,说明为什么这样设阈值。

第 7-8 周:Kubernetes 故障案例库

目标:准备可讲的 K8s 排障案例。

环境:

  • 本地 kind 或 minikube
  • kubectl
  • 可选:Prometheus + Grafana

必练案例:

  1. CrashLoopBackOff
  2. OOMKilled
  3. ImagePullBackOff
  4. Pending Pod
  5. Liveness Probe Failure
  6. Readiness Probe Failure
  7. Job Failure
  8. Failed Helm Release

每个案例输出一篇复盘:

cases/
  k8s-crashloopbackoff.md
  k8s-oomkilled.md
  k8s-imagepullbackoff.md
  k8s-pending-pod.md

复盘结构见:Runbook 与复盘模板

第 9 周:PostgreSQL / 数据库监控

目标:把数据库运维经验转成可展示项目。

任务:

  • 用 Docker 启动 PostgreSQL。
  • 接入 postgres_exporter。
  • 写 5 条数据库告警:
    • 连接数过高
    • 长事务
    • 锁等待
    • 数据库大小增长异常
    • 实例不可用
  • 制造一个慢查询,用 pg_stat_activity 和 exporter 指标观察。

验收:

  • 有 Grafana 截图。
  • runbook-postgres-lock-wait.md
  • runbook-postgres-slow-query.md

第 10 周:Ansible 批量巡检

目标:把单机诊断升级为多机器巡检。

任务:

  • 写一个 Ansible playbook,批量执行磁盘、服务状态、yum repo 连通性、chrony、syslog 检查。
  • 汇总输出到一个 Markdown 报告。

验收:

  • 至少支持 3 台测试机器或 3 个容器。
  • 报告能区分正常、警告、异常。

第 11 周:AI 运维知识库

目标:把 runbook 和复盘变成 AI 助手。

建议先用 Dify,部署和验证更快;机器内存足够时再试 RAGFlow。

任务:

  • 上传前 10 周写的 runbook 和 cases。
  • 做一个“运维排障助手”。
  • 提示词要求:
    • 必须引用知识库来源。
    • 不确定时必须说不确定。
    • 危险操作必须提示人工确认。
    • 输出格式固定:可能原因、排查命令、判断标准、修复建议、风险。

验收:

  • 至少 10 个测试问题。
  • 每个问题记录:AI 回答、引用来源、是否准确、需要补充的知识。
  • 形成 ai-ops-assistant-evaluation.md

第 12 周:整理作品和简历

目标:把练习转成求职资产。

整理内容:

  • GitHub README
  • 项目架构图
  • 运行截图
  • Grafana Dashboard 截图
  • AI 助手截图
  • 10 篇 runbook
  • 8 篇 K8s/DB 故障复盘
  • 1 篇总复盘文章

总复盘文章标题:

我如何把重复运维答疑沉淀成自动化诊断工具和 AI Runbook 知识库