mcpField
P
pir

pir

github.com/delexw云与 DevOps263 次安装31 周前更新
代码仓库

关于 pir

pir 是用于汇集 PagerDuty、Datadog、Cloudflare、Rollbar 及可选 Slack 事件信息并生成事后记录的 Agent 技能。它根据收集的数据判定严重程度,并通过 NotebookLM 生成报告、信息图和幻灯片。

主要功能

  1. 01并行发现事件
  2. 02统一各来源的分析时间范围
  3. 03自动判定严重程度
  4. 04关联代码历史
  5. 05生成 NotebookLM 报告、信息图与幻灯片

适用场景

  1. 01汇总指定时间段内事件的记录
  2. 02跨监控来源调查 PagerDuty 事件
  3. 03将事件时间线与代码历史关联
  4. 04通过 NotebookLM 材料分享调查结果

安装

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

$npx skills add https://github.com/delexw/claude-code-misc --skill pir

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

包含的文件

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

references/
pir-form-fields.md
steps/
step1-gather-date-range.md
step2a-discover-incidents.md
step2b-discover-datadog.md
step2c-discover-cloudflare.md
step2d-discover-rollbar.md
step2e-discover-slack.md
step3a-codebase-analysis.md
step3b-generate-nlm.md
step4-present-results.md

详细介绍

事后事件记录(PIR)

同时从 PagerDuty、Datadog、Cloudflare 和 Rollbar 发现问题,自动确定严重级别,并为每个问题生成填写完整的 PIR 表单。

输入

原始参数:$ARGUMENTS

根据参数推断:

  • QUERY:要调查的内容。直接传递给每个子技能。默认为 "incidents today"。
  • CF_DOMAIN_ZONE:(可选)Cloudflare 域名和区域 ID,格式为 domain:zone_id。传递给 cloudflare-traffic-investigator 技能。如果未提供,Cloudflare 技能会询问用户。

在步骤 1 中解析(不直接提供):

  • SINCE:分析时间窗口的 UTC ISO8601 起始时间。根据 QUERY 中明确指定的时间或 PD 事件时间戳自动推导。
  • UNTIL:分析时间窗口的 UTC ISO8601 结束时间。根据 QUERY 中明确指定的时间或 PD 事件时间戳自动推导。
  • PD_INCIDENT:从 QUERY 中检测到的 PagerDuty 事件 ID(会触发优先处理 PD 的编排流程)。
  • SERVICE_HINT:从 PD 事件中提取的服务名称(用于限定 Datadog/Rollbar 查询范围)。
  • TITLE_HINT:从 PD 事件中提取的事件标题(用作 Rollbar 关键词搜索词)。
  • SLACK_CHANNEL:在步骤 2e 中解析——来自调用方上下文或 $SLACK_INCIDENT_CHANNEL 环境变量。可以是单个频道,也可以是以逗号或竖线分隔的多个频道。

PIR 表单字段

每份 PIR 都对应以下字段——格式、示例和输出模板请参见 PIR 表单字段:

字段必填来源
影响摘要是根据所有技能的结果综合整理
发生了什么是PagerDuty 事件 + Datadog + Cloudflare
受影响对象是Datadog(RUM/错误追踪)+ Cloudflare(用户数量)
根本原因是Cloudflare(JA4、流量来源)+ Datadog(错误追踪)+ Rollbar(堆栈追踪、错误与部署的关联)+ PagerDuty(触发详情)+ Slack(根因讨论)+ 代码库分析(问题提交)
事件日期是所有来源(PagerDuty、Datadog、Cloudflare)中最早的检测时间
时间线是PagerDuty 创建/解决时间 + Datadog 时间线
补救措施否PagerDuty 备注 + Datadog 监控器 + Slack(事件期间采取的措施)
事件协调人否PagerDuty 升级策略响应人员 + Slack(频道中的活跃响应人员)

严重级别自动分类

根据收集到的数据确定严重级别——不要询问用户:

严重级别标准
SEV1服务中断或关键路径错误率 >50%;级联故障;持续时间 >30 分钟
SEV2部分性能下降;错误率为 10-50%;单个服务受影响;持续时间为 10-30 分钟
SEV3影响较小;错误率 <10%;短暂峰值(<10 分钟);对用户的影响有限

如果符合多个标准,采用最高的适用严重级别。

执行

步骤 1:准备——确定时间范围

请参见 step1-gather-date-range.md

根据 QUERY 检测输入模式并解析 SINCE/UNTIL:

  • QUERY 中包含 PD URL/ID → 优先运行 pagerduty-oncall(步骤 1b),提取时间戳 → 设置 SINCE、UNTIL、SERVICE_HINT、TITLE_HINT、PD_INCIDENT
  • QUERY 中包含明确时间 → 转换为 UTC ISO8601 格式的 SINCE/UNTIL → 并行运行全部四个子技能
  • QUERY 含糊不清或为空 → 默认为过去 24 小时 → 并行运行全部四个子技能
步骤 2:发现——PagerDuty、Datadog、Cloudflare、Rollbar

编排方式取决于是否已在步骤 1 中解析出 PD_INCIDENT:

  • 如果已设置 PD_INCIDENT:跳过步骤 2a(数据已收集)。并行运行 2b + 2c + 2d + 2e。
  • 否则:并行运行全部五项(2a + 2b + 2c + 2d + 2e)。

如果 SINCE 和 UNTIL 可用,则将其(UTC ISO8601)传递给每个子技能,确保所有数据源使用一致的分析时间窗口。

2a. PagerDuty——事件

请参见 step2a-discover-incidents.md — 调用 Skill("pagerduty-oncall")。如果已在步骤 1b 中解析出 PD_INCIDENT,则跳过。

2b. Datadog — 可观测性数据

参见 step2b-discover-datadog.md — 调用 Skill("datadog-analyser")。在有可用值时传入 SINCE、UNTIL、SERVICE_HINT。

2c. Cloudflare — 流量分析

参见 step2c-discover-cloudflare.md — 调用 Skill("cloudflare-traffic-investigator")。如果提供了 CF_DOMAIN_ZONE,则传入其中的域名和区域 ID。在有可用值时传入 SINCE、UNTIL。

2d. Rollbar — 错误跟踪

参见 step2d-discover-rollbar.md — 调用 Skill("rollbar-reader")。在有可用值时传入 SINCE、UNTIL、TITLE_HINT。

2e. Slack — 事件频道

参见 step2e-discover-slack.md — 从调用方上下文或 $SLACK_INCIDENT_CHANNEL 环境变量解析频道。如果未找到频道,则跳过且不报错。

步骤 3a:代码库分析

参见 step3a-codebase-analysis.md — 分析各工作目录中的 git 历史,并与发现报告中的事件时间线进行关联。

步骤 3b:通过 NotebookLM 生成 PIR

参见 step3b-generate-nlm.md — 在步骤 3a 后运行。创建 NotebookLM 笔记本,上传所有发现报告和代码库报告,生成报告、信息图和幻灯片。返回笔记本 ID。

步骤 4:展示结果

参见 step4-present-results.md — 展示 PIR 摘要,并提供笔记本链接以便交互式探索。保留 NotebookLM 笔记本,供后续查询使用。

评论

支持 Markdown