pgoud161/sre-runbook-automation

GitHub: pgoud161/sre-runbook-automation

一个基于 FastAPI 的 SRE 自动化事件响应引擎,通过自动收集 Kubernetes 和 Prometheus 诊断数据并运行匹配的 Runbook 分析,将结构化的事件报告推送至 Slack 以缩短恢复时间。

Stars: 0 | Forks: 0

# SRE Runbook 自动化引擎 这是一个自动化事件响应系统:当 **Alertmanager** 触发 SLO 告警时,该引擎会通过收集 Kubernetes 诊断信息和 Prometheus 指标来自动对事件进行分诊,运行匹配的 runbook 分析,并**向 Slack 发布结构化的事件报告** —— 从而在无需等待人工分诊的情况下缩短平均恢复时间 (MTTR)。 完整的流程图请查看 [`docs/architecture.md`](docs/architecture.md)。 ## 技术栈 | 层级 | 工具 | |---|---| | Webhook 服务器 | FastAPI | | Kubernetes 诊断 | kubernetes Python client (pod 状态、事件、deployments) | | 指标收集 | Prometheus HTTP API (可用性 SLI、错误率、p99 延迟) | | Runbook 引擎 | Python (AvailabilitySLOFastBurn、LatencySLOBreach、HighErrorRate) | | 通知 | Slack Block Kit (结构化事件报告) | | 部署 | Kubernetes (Deployment、Service、RBAC、ServiceAccount) | | CI/CD | GitHub Actions + Trivy 安全扫描 | ## 工作原理 1. Alertmanager 向 `/webhook/alertmanager` 发送 webhook POST 请求 2. 引擎收集 Kubernetes pod 状态、事件、deployments 以及 Prometheus SLI 指标 3. 匹配的 runbook 会分析诊断信息并确定可能的根本原因 4. 将包含分诊分析和 kubectl 命令的结构化报告发布到 Slack 的 `#sre-incidents` 频道 ## 已实现的 Runbook | 告警 | Runbook | 检测内容 | |-------|---------|---------| | `AvailabilitySLOFastBurn` | `runbooks/availability.py` | OOMKill、CrashLoop、不健康的 pod、deployment 失败 | | `AvailabilitySLOSlowBurn` | `runbooks/availability.py` | 同上,警告级别 | | `LatencySLOBreach` | `runbooks/latency.py` | 副本不足、节点压力、容量问题 | | `HighErrorRate` | `runbooks/high_error_rate.py` | 应用程序错误、崩溃循环、错误的 deployment | ## 部署 ### 1. 构建并推送镜像 ``` docker build -t us-central1-docker.pkg.dev/YOUR_PROJECT/sre-images/runbook-automation:latest . docker push us-central1-docker.pkg.dev/YOUR_PROJECT/sre-images/runbook-automation:latest ``` ### 2. 创建 Slack webhook secret ``` kubectl create secret generic runbook-secrets \ --from-literal=slack-webhook-url=https://hooks.slack.com/YOUR_WEBHOOK \ -n monitoring ``` ### 3. 部署到 Kubernetes ``` kubectl apply -f k8s/deployment.yaml kubectl rollout status deployment/runbook-automation -n monitoring ``` ### 4. 配置 Alertmanager webhook 添加到您的 `alertmanager.yaml` 中: ``` receivers: - name: runbook-automation webhook_configs: - url: http://runbook-automation-svc:8080/webhook/alertmanager send_resolved: false ``` ### 5. 本地测试 ``` cd app pip install -r requirements.txt uvicorn main:app --reload --port 8080 # 使用 curl 测试 curl -X POST http://localhost:8080/webhook/test ``` ## 仓库结构 ``` app/ main.py # FastAPI webhook server collectors/ kubernetes_collector.py # Pod status, events, deployments metrics_collector.py # Prometheus SLI queries runbooks/ availability.py # Availability SLO breach analysis latency.py # Latency SLO breach analysis high_error_rate.py # High error rate analysis notifiers/ slack_notifier.py # Slack Block Kit incident reports k8s/ deployment.yaml # K8s Deployment, Service, RBAC .github/workflows/ ci.yml # Build → Trivy scan → push docs/ architecture.md # System diagram ```
标签:AV绕过, FastAPI, Runbook, SRE, 偏差过滤, 告警分诊, 子域名突变, 自动化运维, 自定义请求头, 请求拦截, 逆向工具