智能SRE代理
人工智能驱动的SRE平台,使用Claude自动检测、调查和修复生产事件。
Alertmanager发出警报,代理查询Prometheus、Loki和Kubernetes,确定根本原因,进行补救(重启pod、补丁部署、回滚发布),并将摘要发布到Slack。所有这些都在PostgreSQL中有完整的审计跟踪。
先决条件
- 适用于Docker Compose和本地Kubernetes
- Python 3.10+用于运行SRE代理CLI
kubectl用于Kubernetes设置(包含在Docker Desktop中)ANTHROPIC_API_KEY从https://console.anthropic.com
______________________________________________________________________
快速开始
Docker Compose(建议本地开发人员使用)
git clone https://github.com/sanketsultan/intelligent-sre-agent.git
cd intelligent-sre-agent
cp .env.example .env # then set ANTHROPIC_API_KEY in .env
make dev| 服务 | URL |
|---|---|
| APIhttp://localhost:8080 | |
| 普罗米修斯 | http://localhost:9090 |
| 格拉法娜 | http://localhost:3000 |
Kubernetes(Docker桌面)
cp .env.example .env # then set ANTHROPIC_API_KEY in .env
./scripts/setup.sh| 服务 | URL |
|---|---|
| APIhttp://localhost:30080 | |
| 普罗米修斯 | http://localhost:30090 |
| 格拉法娜 | http://localhost:30300 |
| 警报管理器 | http://localhost:30093 |
| 耶格尔 | http://localhost:30686 |
集 ANTHROPIC_API_KEY 在 .env 启用代理和Slack机器人。
______________________________________________________________________
运作原理
当警报响起时:
- 第一阶段-俳句调查(总是跑,便宜又快)
- 第2阶段-如果严重程度达到阈值(默认值:严重),十四行诗将进行补救
- 第三阶段——如果十四行诗有任何破损,作品会以其他方式升级
- 如果opus也失败了,发布一条紧急的Slack消息以进行人工干预
每5分钟有一个CronJob点击 /health/proactive-check如果健康评分降至阈值以下(默认值50/100),调查和补救将自动运行,而无需等待警报。
______________________________________________________________________
SRE代理
# Investigate
python -m intelligent_sre_agent.sre_agent "What is the current health of the system?"
# Investigate + remediate
python -m intelligent_sre_agent.sre_agent --remediate "Pods are CrashLoopBackOff in production"
# Model selection (default: haiku for speed/cost)
python -m intelligent_sre_agent.sre_agent --model sonnet "High 5xx error rate on checkout"
python -m intelligent_sre_agent.sre_agent --model opus "Database down, 100% error rate"______________________________________________________________________
Slack机器人
./scripts/run-slack-bot.sh
# Requires SLACK_BOT_TOKEN + SLACK_APP_TOKEN + ANTHROPIC_API_KEY in .env| 命令 | 操作 |
|---|---|
| `/sre | |
| ` | 调查(只读) |
| `/sre remediate | |
| ` | 调查和治疗 |
/sre runbooks | 列出运行手册 |
| `@SRE-Bot | |
| ` | 提及快捷方式 |
______________________________________________________________________
警报管理器Webhook
每次警报时自动点火。保存到数据库并运行后台代理调查。
POST http://localhost:8080/alertmanager/webhook # receives alerts
GET http://localhost:8080/alerts # list all alerts
GET http://localhost:8080/alerts/ # alert + investigation summary______________________________________________________________________
调整代理
在中设置这些环境变量 k8s/base/app/intelligent-sre-agent.yaml 或 .env:
| Var | 默认值 | 它的作用 |
|---|---|---|
SRE_AUTO_REMEDIATE_SEVERITY | critical | 设置为 warning 还可以自动修复警告警报 |
SRE_PROACTIVE_HEALTH_THRESHOLD | 50 | 健康评分低于此值时,主动检查会触发补救 |
SRE_REMEDIATION_MODEL | claude-sonnet-4-5 | 第二阶段修复模型 |
SRE_ESCALATION_MODEL | claude-opus-4-6 | 如果十四行诗让东西破碎,则使用模型 |
SRE_MODEL | claude-haiku-4-5 | 第一阶段调查模型 |
SRE_MAX_TOKENS | 4096 | 输出令牌上限 |
______________________________________________________________________
混沌/修复测试
端到端测试:部署损坏的Pod,触发自动化管道,验证代理是否修复了它们。
export ANTHROPIC_API_KEY=sk-ant-...
./scripts/test-remediation.sh模拟的故障模式:
| Pod | 故障 | 代理修复 |
|---|---|---|
crash-worker | CrashLoopBackOff | 修补导致退出1的环境变量 |
dependent-worker | 初始化:错误 | 崩溃修复后自动恢复 |
pending-worker | 待定 | 修补不可能节点选择器 |
sick-api | 正在运行/NotReady | 补丁损坏的准备就绪探针 |
______________________________________________________________________
堆栈
- 应用:FastAPI+PostgreSQL
- 可观测性:普罗米修斯+格拉法纳+洛基+耶格尔+开放遥测+警报管理器
- 基础设施:地形(AWS EKS+RDS)+Kubernetes(Kustomize覆盖)
- 安全:OPA/看门人、Falco、吊舱安全标准
- 持续集成:GitHub使用ruff、pytest、docker build、kubeconform、tflint、checkov进行操作
______________________________________________________________________
故障排除
# Auto-detect environment and tail logs
make logs
# Docker Compose
make dev-logs
docker compose ps
# Kubernetes
kubectl get pods -n intelligent-sre
kubectl logs -n intelligent-sre deployment/intelligent-sre-agent --tail=50______________________________________________________________________
许可证
麻省理工学院
