关于 investigate-incident
利用 Port 服务目录数据调查生产事故根因的技能。它构建事件时间线,关联变更与依赖项,查询历史事故,并记录调查结果。
主要功能
- 01根据部署和 PR 构建时间线
- 02将事故与变更及事件关联
- 03检查服务依赖项和健康状态
- 04对照历史事故
- 05将调查结果写入事故记录
适用场景
- 01调查已分诊的生产事故
- 02追溯问题是否源于近期部署
- 03将事故与过往模式进行比较
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ revitalb-port/ skills-registry-demo --skill investigate-incident安装后在 Claude Code 中输入/investigate-incident确认已加载。
详细介绍
调查事故技能
使用 Port 的服务目录数据进行系统性根因分析。
使用时机
- 事故已完成分诊,需要进一步调查
- 查找生产问题的根本原因
- 将部署与事故进行关联分析
调查流程
步骤 1:构建时间线
查询 Port,构建时间线:
-
近期部署(过去 24 小时):
list_entities(blueprint="deployment", query={ service: "affected-service", deployed_at: ">24h ago" }) -
近期合并的 PR:
list_entities(blueprint="pull_request", query={ service: "affected-service", merged_at: ">24h ago" }) -
配置变更(如有跟踪):
list_entities(blueprint="config_change", query={ service: "affected-service" })
步骤 2:关联分析
检查事故发生时间是否与以下情况相关:
- 部署时间(最常见的原因)
- 流量激增
- 依赖项故障
- 配置变更
步骤 3:依赖项检查
查询服务依赖项:
get_entity(blueprint="service", identifier="affected-service", include=["depends_on"])
对于每个依赖项,检查:
- 健康状态
- 近期事故
- 错误率
步骤 4:历史模式匹配
查找过去的类似事故:
list_entities(blueprint="incident", query={
primary_service: "affected-service",
created_at: "<30d"
})
查找:
- 相同的错误模式
- 相同的时段
- 相同的触发条件
步骤 5:确定根本原因
记录:
- 发生了什么变更:导致问题的具体变更
- 为何失败:故障发生的机制
- 为何未被发现:测试或审查中的缺口
步骤 6:更新事故
调用 update_incident_investigation 并传入:
root_cause_summaryrelated_deployment(如适用)related_pr(如适用)timeline_markdowninvestigation_notes
输出格式
# Root Cause Analysis: [Incident ID]
## Summary
[One paragraph explanation]
## Timeline
| Time | Event |
|------|-------|
| 14:15 | PR #123 merged |
| 14:20 | Deployment v2.3.4 completed |
| 14:23 | First error alerts |
## Root Cause
[Detailed technical explanation]
## Related Changes
- PR: #123 - "Add currency field"
- Deployment: v2.3.4
## Recommendations
1. [Specific actionable item]
2. [Specific actionable item]
质量检查清单
- 已构建完整时间线
- 已检查所有近期部署
- 已分析依赖项
- 已找到相关变更
- 已清晰记录根本原因
评论
支持 Markdown