使用说明
项目简介
SRE Agent 是一个基于 Model Context Protocol (MCP) 构建的智能运维助手,旨在帮助 SRE 工程师更有效地监控、诊断和解决应用程序及基础设施问题。它通过集成 Kubernetes、Slack 和 GitHub 等常用工具,为 LLM 客户端提供丰富的上下文信息和自动化运维能力,从而实现更快速的问题定位和响应。
主要功能点
- 资源监控与数据访问: 集成 Kubernetes 集群,提供 Pod、Deployment、Service 等资源的实时监控和数据访问能力,例如获取 Pod 日志、查看 Service 状态等。
- 自动化诊断工具: 内置多种运维工具,如日志检索、资源描述、命令执行等,支持 LLM 客户端调用这些工具进行自动化问题诊断。
- 问题报告与协作: 集成 Slack 和 GitHub,支持将诊断结果和问题报告发送到 Slack 频道进行团队协作,或在 GitHub 上创建 Issue 进行跟踪。
- 灵活扩展性: 基于 MCP 协议,易于扩展新的资源类型和运维工具,支持集成更多运维平台和服务。
- 多种部署方式: 支持本地 Docker Compose 部署和 AWS EKS 集群部署,满足不同环境的需求。
安装步骤
本仓库主要提供基于 Docker Compose 的本地部署方式,您可以按照以下步骤进行安装:
-
安装 Docker 和 Docker Compose: 确保您的机器上已安装 Docker 和 Docker Compose。您可以参考 Docker 官方文档 进行安装。
-
配置 .env 文件: 在仓库根目录下创建 '.env' 文件,并根据您的环境配置以下环境变量:
SLACK_BOT_TOKEN=您的 Slack Bot Token SLACK_TEAM_ID=您的 Slack Team ID CHANNEL_ID=接收 Slack 消息的频道 ID GITHUB_PERSONAL_ACCESS_TOKEN=您的 GitHub Personal Access Token ANTHROPIC_API_KEY=Anthropic API Key (用于工具请求) DEV_BEARER_TOKEN=开发者 Bearer Token (用于直接调用 /diagnose 接口) SLACK_SIGNING_SECRET=Slack App Signing Secret TOOLS='["list_pods", "get_logs", "get_file_contents", "slack_post_message"]' AWS_ACCOUNT_ID= (可选) 您的 AWS 账户 ID (仅当从 ECR 拉取镜像时需要)注意:
- 请根据您的实际 Slack 和 GitHub 账号信息,以及 Anthropic API Key 填写上述环境变量。
- 'TOOLS' 环境变量定义了 Agent 启用的工具列表,您可以根据需要修改。
- 如果您不使用 ECR 镜像,'AWS_ACCOUNT_ID' 可以省略。
-
启动 SRE Agent: 根据您的需求选择以下命令启动 SRE Agent:
-
使用 ECR 镜像部署: (如果您配置了 'AWS_ACCOUNT_ID' 并希望从 ECR 拉取镜像)
docker compose -f compose.ecr.yaml up -
本地构建镜像部署: (如果您希望本地构建镜像)
docker compose up
启动成功后,SRE Agent 将在 'http://localhost:8003' 端口提供服务。
-
服务器配置
MCP 客户端(如 Claude Desktop)需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 SRE Agent 建立连接。以下是一些示例配置,您可以根据需要添加到您的 'claude_desktop_config.json' 文件中:
Slack MCP 服务器配置示例 (Docker 部署):
{ "mcpServers": { "slack": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SLACK_BOT_TOKEN", "-e", "SLACK_TEAM_ID", "mcp/slack" ], "env": { "SLACK_BOT_TOKEN": "<您的 Slack Bot Token>", // 替换为您的 Slack Bot Token "SLACK_TEAM_ID": "<您的 Slack Team ID>" // 替换为您的 Slack Team ID } } } }
GitHub MCP 服务器配置示例 (Docker 部署):
{ "mcpServers": { "github": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "mcp/github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<您的 GitHub Personal Access Token>" // 替换为您的 GitHub Personal Access Token } } } }
Kubernetes MCP 服务器配置示例 (Docker 部署):
{ "mcpServers": { "kubernetes": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "<项目根目录的绝对路径>/.kube:/home/appuser/.kube", // 替换为项目根目录的绝对路径 "-v", "<项目根目录的绝对路径>/.aws:/home/appuser/.aws", // 替换为项目根目录的绝对路径 "mcp/k8s" ] } } }
说明:
- 'command': 指定运行 MCP 服务器的命令,这里使用 'docker run' 运行 Docker 镜像。
- 'args': 指定传递给 'docker run' 命令的参数,例如 '-i', '--rm', '-e' 等。
- 'env': 定义 MCP 服务器运行所需的环境变量,例如 'SLACK_BOT_TOKEN', 'GITHUB_PERSONAL_ACCESS_TOKEN' 等。
- 对于 Kubernetes MCP 服务器,'-v' 参数用于挂载本地的 kubeconfig 和 AWS 凭证文件到 Docker 容器中,以便容器内的 MCP 服务器可以访问 Kubernetes 集群。请务必将 '<项目根目录的绝对路径>' 替换为您实际的项目根目录的绝对路径。
基本使用方法
SRE Agent 启动后,您可以通过发送 HTTP POST 请求到 '/diagnose' 接口来触发诊断任务。例如,使用 'curl' 命令:
curl -X POST http://localhost:8003/diagnose \ -H "accept: application/json" \ -H "Authorization: Bearer <您的 DEV_BEARER_TOKEN>" \ -d "text=<service>"
- 将 '<您的 DEV_BEARER_TOKEN>' 替换为您在 '.env' 文件中配置的 'DEV_BEARER_TOKEN' 值。
- 将 '<service>' 替换为您要诊断的服务名称,例如 'cartservice'。
SRE Agent 将在后台运行诊断任务,并将结果通过 Slack 消息发送到您配置的频道。
信息
分类
开发者工具