mcpField
S
sentry

sentry

github.com/tech-leads-club云与 DevOps7.1k200 次安装今天更新
代码仓库

关于 sentry

sentry 是一项 Agent 技能,通过 Sentry API 只读查询问题和事件。它使用随附脚本执行请求,并提供结果筛选和敏感信息保护规则。

主要功能

  1. 01列出并搜索问题
  2. 02获取问题和事件详情
  3. 03仅使用只读 API 请求
  4. 04在输出中隐去个人信息

适用场景

  1. 01查看近期未解决的生产问题
  2. 02检查特定问题的事件
  3. 03查看事件详情且不输出堆栈跟踪

安装

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

$npx skills add https://github.com/tech-leads-club/agent-skills --skill sentry

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

附带文件LICENSE.txtscripts/sentry_api.py

详细介绍

Sentry(只读可观测性)

快速开始

  • 如果尚未完成身份验证,请让用户提供有效的 SENTRY_AUTH_TOKEN(只读权限范围,例如 project:read、event:read),或者先登录并创建令牌,再运行命令。
  • 将 SENTRY_AUTH_TOKEN 设置为环境变量。
  • 可选默认值:SENTRY_ORG、SENTRY_PROJECT、SENTRY_BASE_URL。
  • 默认值:组织/项目为 {your-org}/{your-project},时间范围为 24h,环境为 prod,数量上限为 20(最多 50)。
  • 始终调用 Sentry API(不使用启发式方法,也不缓存)。

如果缺少令牌,请向用户提供以下步骤:

  1. 创建 Sentry 身份验证令牌:https://sentry.io/settings/account/api/auth-tokens/
  2. 创建只读权限范围的令牌,例如 project:read、event:read 和 org:read。
  3. 在其系统中将 SENTRY_AUTH_TOKEN 设置为环境变量。
  4. 如有需要,主动帮助他们了解如何在其操作系统/命令行中设置环境变量。
  • 绝不要让用户在聊天中粘贴完整令牌。让他们在本地设置令牌,并在准备好后确认。

核心任务(使用捆绑脚本)

使用 scripts/sentry_api.py 执行确定性的 API 调用。该脚本会处理分页,并在遇到暂时性错误时重试一次。

技能路径(设置一次)

export AGENT_SKILLS_HOME="${AGENT_SKILLS_HOME:-$HOME/.agent-skills}"
export SENTRY_API="$AGENT_SKILLS_HOME/skills/sentry/scripts/sentry_api.py"

用户级技能安装在 $AGENT_SKILLS_HOME/skills 下(默认:~/.agent-skills/skills)。

1)列出问题(按最近时间排序)
python3 "$SENTRY_API" \
  list-issues \
  --org {your-org} \
  --project {your-project} \
  --environment prod \
  --time-range 24h \
  --limit 20 \
  --query "is:unresolved"
2)将问题短 ID 解析为问题 ID
python3 "$SENTRY_API" \
  list-issues \
  --org {your-org} \
  --project {your-project} \
  --query "ABC-123" \
  --limit 1

使用返回的 id 获取问题详情或事件。

3)问题详情
python3 "$SENTRY_API" \
  issue-detail \
  1234567890
4)问题事件
python3 "$SENTRY_API" \
  issue-events \
  1234567890 \
  --limit 20
5)事件详情(默认不包含堆栈跟踪)
python3 "$SENTRY_API" \
  event-detail \
  --org {your-org} \
  --project {your-project} \
  abcdef1234567890

API 要求

始终使用以下端点(仅限 GET):

  • 列出问题:/api/0/projects/{org_slug}/{project_slug}/issues/
  • 问题详情:/api/0/issues/{issue_id}/
  • 问题的事件:/api/0/issues/{issue_id}/events/
  • 事件详情:/api/0/projects/{org_slug}/{project_slug}/events/{event_id}/

输入和默认值

  • org_slug、project_slug:默认使用 {your-org}/{your-project}(避免使用非生产组织)。
  • time_range:默认为 24h(作为 statsPeriod 传入)。
  • environment:默认为 prod。
  • limit:默认为 20,最多 50(分页获取,直到达到数量上限)。
  • search_query:可选的 query 参数。
  • issue_short_id:先通过列出问题的查询进行解析。

输出格式规则

  • 问题列表:显示标题、short_id、状态、first_seen、last_seen、count、环境和 top_tags;按最近时间排序。
  • 事件详情:包含 culprit、timestamp、environment、release 和 url。
  • 如果没有结果,请明确说明。
  • 在输出中隐藏个人身份信息(PII),例如电子邮件和 IP 地址。不要输出原始堆栈跟踪。
  • 绝不要回显身份验证令牌。

黄金测试输入

  • 组织:{your-org}
  • 项目:{your-project}
  • 问题短 ID:{ABC-123}

提示词示例:“列出过去 24h 内 prod 环境中排名前 10 的未解决问题。” 预期结果:按顺序列出标题、短 ID、数量和最近出现时间。

评论

支持 Markdown