mcpField
H
holmesgpt

holmesgpt

github.com/julianobarbosa云与 DevOps1458 次安装2 天前更新
代码仓库

关于 holmesgpt

holmesgpt 是面向 Kubernetes 和云原生环境故障排查的 AI 技能,可结合实时可观测性数据分析告警与集群问题,并提出修复建议。它以只读访问和现有 RBAC 权限运行。

主要功能

  1. 01分析告警与集群问题根因
  2. 02整合多种数据源与工具集
  3. 03支持告警平台集成
  4. 04提供交互式排查命令
  5. 05通过 YAML 扩展自定义工具集
  6. 06调查 CI/CD 部署失败

适用场景

  1. 01排查异常 Pod 和部署故障
  2. 02调查 AlertManager 等告警
  3. 03结合运行手册分析服务问题
  4. 04分析 CI/CD 部署失败

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill holmesgpt

安装后在 Claude Code 中输入/holmesgpt确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
commands.md
configuration.md
data-sources.md
http-api.md
installation.md
integrations.md
troubleshooting.md

详细介绍

HolmesGPT 技能

面向 Kubernetes 和云原生环境的 AI 驱动故障排查。

概览

HolmesGPT 是 CNCF Sandbox 项目,可将 AI 模型与实时可观测性数据连接起来,以调查基础设施问题、查找根本原因并建议修复方案。它以只读访问方式运行,并遵循 RBAC 权限,因此可安全用于生产环境。

快速参考

主题参考文档
安装references/installation.md
配置references/configuration.md
数据源references/data-sources.md
命令references/commands.md
故障排查references/troubleshooting.md
HTTP APIreferences/http-api.md
集成references/integrations.md

主要功能

  • 根因分析:调查告警和集群问题
  • 多源集成:30+ 个工具集(K8s、Prometheus、Grafana)
  • 告警集成:AlertManager、PagerDuty、OpsGenie、Jira、Slack
  • 交互模式:使用 /run、/show、/clear 进行故障排查
  • 自定义工具集:通过 YAML 配置扩展专有工具
  • CI/CD 集成:自动调查部署失败问题

快速安装

CLI(Homebrew)
brew tap robusta-dev/homebrew-holmesgpt
brew install holmesgpt
export ANTHROPIC_API_KEY="your-key"  # or OPENAI_API_KEY
holmes ask "what pods are unhealthy?"
Kubernetes(Helm)
helm repo add robusta https://robusta-charts.storage.googleapis.com
helm repo update
helm install holmesgpt robusta/holmes -f values.yaml
Docker
docker run -it --net=host \
  -e OPENAI_API_KEY="your-key" \
  -v ~/.kube/config:/root/.kube/config \
  us-central1-docker.pkg.dev/genuine-flight-317411/devel/holmes \
  ask "what pods are crashing?"

常用命令

# Basic investigation
holmes ask "what pods are unhealthy and why?"
holmes ask "why is my deployment failing?"

# Interactive mode
holmes ask "investigate issue" --interactive

# Alert investigation
holmes investigate alertmanager --alertmanager-url http://localhost:9093
holmes investigate pagerduty --pagerduty-api-key <KEY> --update

# With file context
holmes ask "summarize the key points" -f ./logs.txt

# CI/CD integration
holmes ask "why did deployment fail?" --destination slack --slack-token <TOKEN>

支持的 AI 提供商

提供商环境变量模型
AnthropicANTHROPIC_API_KEYSonnet 4、Opus 4.5
OpenAIOPENAI_API_KEYGPT-4.1、GPT-4o
Azure OpenAIAZURE_API_KEYGPT-4.1
AWS BedrockAWS 凭据Claude 3.5 Sonnet
Google GeminiGEMINI_API_KEYGemini 1.5 Pro
Vertex AIVERTEXAI_PROJECTGemini 1.5 Pro
Ollama本地安装Llama 3.1、Mistral

基本 Helm Values 结构

# values.yaml for Kubernetes deployment
image:
  repository: robustadev/holmes
  tag: latest

env:
  - name: ANTHROPIC_API_KEY
    valueFrom:
      secretKeyRef:
        name: holmesgpt-secrets
        key: anthropic-api-key

# Model configuration
modelList:
  sonnet:
    api_key: "{{ env.ANTHROPIC_API_KEY }}"
    model: anthropic/claude-sonnet-4-20250514
    temperature: 0

# Toolsets to enable
toolsets:
  kubernetes/core:
    enabled: true
  kubernetes/logs:
    enabled: true
  prometheus/metrics:
    enabled: true

# Resources
resources:
  requests:
    memory: "1024Mi"
    cpu: "100m"
  limits:
    memory: "1024Mi"

# RBAC (read-only by default)
createServiceAccount: true

交互模式命令

命令说明
/clear切换主题时重置上下文
/run执行自定义命令,并与 AI 分享输出
/show显示完整的工具输出
/context查看累积的调查信息

自定义工具集示例

# custom-toolset.yaml
toolsets:
  my-custom-tool:
    description: "Custom diagnostic tool"
    tools:
      - name: check_service_health
        description: "Check health of a specific service"
        command: |
          curl -s http://{{ service_name }}.{{ namespace }}.svc.cluster.local/health
        parameters:
          - name: service_name
            description: "Name of the service"
          - name: namespace
            description: "Kubernetes namespace"

使用方法:holmes ask "check health" -t custom-toolset.yaml

用于集成的 Kubernetes 注解

# Add to Services/Deployments for HolmesGPT context
metadata:
  annotations:
    holmesgpt.dev/runbook: |
      This service handles payment processing.
      Common issues: database connectivity, API rate limits.
      Check: kubectl logs -l app=payment-service

环境变量参考

变量说明默认值
HOLMES_CONFIG_PATH配置文件路径~/.holmes/config.yaml
HOLMES_LOG_LEVEL日志详细程度INFO
PROMETHEUS_URLPrometheus 服务 URL-
GITHUB_TOKENGitHub API 令牌-
DATADOG_API_KEYDataDog API 密钥-
CONFLUENCE_BASE_URLConfluence URL-

最佳实践

  1. 使用具体查询:包含命名空间、部署名称和症状
  2. 从 Claude Sonnet 4.0/4.5 开始:复杂调查的准确性最佳
  3. 启用相关工具集:仅启用所需工具集,以减少干扰
  4. 使用交互模式:适用于复杂的多步骤调查
  5. 设置运行手册:为已知告警类型提供上下文
  6. CI/CD 集成:自动分析部署失败问题

安全注意事项

  • HolmesGPT 使用只读访问(仅限 get、list、watch)
  • 遵循现有 RBAC 权限
  • 绝不修改、创建或删除资源
  • API 密钥存储在 Kubernetes Secrets 中
  • 数据不会用于模型训练

官方资源


注意事项

  • 只读 RBAC 意味着 HolmesGPT 默认无法查看 Secrets: 涉及配置错误的 Secret 引用的调查会返回“无权读取”,即使 Agent 将其标记为可能原因。可以授予特定命名空间内的 secrets:get 权限,或接受这一盲点——不要扩大到整个集群。
  • 启用的工具集会累积,规模扩大后会产生大量噪声: 启用全部 30 多个工具集会让大模型扫描无关数据,降低准确性。只启用与你的技术栈匹配的工具集——每多启用一个,都会消耗更多 token,并给根因分析增加噪声。
  • 为确保调查结果可复现,模型温度必须设为 0: 默认 Helm 值有时会将温度设为大于 0;同一告警在不同运行中会得出不同的根因。请在 modelList 中固定设置 temperature: 0,否则就只能比较多次运行的结果,并逐渐失去信任。
  • AlertManager URL 必须能从 HolmesGPT Pod 访问,而不只是从 CLI 访问: holmes investigate alertmanager --alertmanager-url http://localhost:9093 在笔记本电脑上可用,但在集群内会失败——请使用集群内服务 DNS(http://kube-prometheus-stack-alertmanager.monitoring:9093)。
  • /clear 不会重置工具集上下文,只会清除对话历史: 之前调查中缓存的工具输出会在会话中保留。较长的交互式会话会累积过时的 Prometheus 数据,污染新的问题。处理互不相关的事件时,请重启 CLI。
  • modelList 中的 Anthropic 模型名称需要带上 anthropic/ 前缀: model: claude-sonnet-4-20250514 会因找不到提供商而静默失败;正确写法是 model: anthropic/claude-sonnet-4-20250514。LiteLLM 的错误消息只会提示“找不到模型”,不会指出缺少前缀。

评论

支持 Markdown