使用说明

项目简介

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 的本地部署方式,您可以按照以下步骤进行安装:

  1. 安装 Docker 和 Docker Compose: 确保您的机器上已安装 Docker 和 Docker Compose。您可以参考 Docker 官方文档 进行安装。

  2. 配置 .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' 可以省略。
  3. 启动 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 消息发送到您配置的频道。

信息

分类

开发者工具