mcpField
O
ops-oncall-log

ops-oncall-log

github.com/c0x12c云与 DevOps109105 次安装19 周前更新
代码仓库

关于 ops-oncall-log

ops-oncall-log 是一项技能,可从监控平台收集告警,并在团队 Wiki 中创建结构化值班日志。它引导工程师整理告警、记录备注,以及更新或新建指定时段的页面。

主要功能

  1. 01获取并归类监控告警
  2. 02按环境和状态筛选告警
  3. 03增量更新现有时段日志
  4. 04创建 Confluence 或 Notion 页面
  5. 05标记仍处于活动状态的监控项

适用场景

  1. 01在值班交接时记录告警
  2. 02准备每日或每周值班回顾
  3. 03长期追踪告警模式

MCP 相关

需要监控 MCP 服务获取告警事件,并需要 Wiki MCP 服务(如 Confluence 或 Notion)创建或更新日志页面。

安装

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

$npx skills add https://github.com/c0x12c/ai-toolkit --skill ops-oncall-log

安装后在 Claude Code 中输入/ops-oncall-log确认已加载。

附带文件examples.md

详细介绍

值班日志

从监控平台拉取告警,并在团队 Wiki 上创建结构化的值班日志。

适用场景

  • 值班结束时——记录发生的情况,供下一位工程师查看
  • 每日或每周的值班复盘会议
  • 随时间推移,建立告警模式的历史记录

流程

1. 确认 MCP 服务可用

需要两个 MCP 服务:

  1. 监控 MCP——用于获取告警事件和监控器状态。推荐:Datadog MCP。
  2. Wiki MCP——用于创建日志页面。支持:Confluence(mcp__claude_ai_Atlassian__*)或 Notion(mcp__claude_ai_Notion__*)。

如果缺少其中任一服务,则停止并显示:

错误:缺少必需的 MCP 服务:<list>。 此技能需要监控 MCP 和 Wiki MCP。 推荐:Datadog MCP + Confluence 或 Notion MCP。

2. 收集配置

询问用户:

  1. 日志频率——每日还是每周?(默认:每周)
  2. 值班轮换安排——轮换从星期几开始?(默认:星期五,仅适用于每周)
  3. 环境筛选条件——要包含哪些环境?(默认:仅 prod)
  4. Wiki 空间/父页面——在哪里创建日志页面:
    • Confluence: 空间密钥和父页面 ID
    • Notion: 父页面 ID 或数据库 ID
  5. 模板页面(可选)——用作格式参考的现有页面

如果用户之前运行过此流程,且已有配置(例如,位于 .spartan/config.yaml),则沿用这些设置并确认:

“使用之前的设置:、 告警,Wiki 位置为 。正确吗?”

3. 确定日期范围

根据步骤 2 中的日志频率确定日期范围:

  • 每日: 今天(或用户指定的日期)
  • 每周: 根据轮换日计算值班时段(例如,从星期五到星期五)

如果用户提供了自定义日期范围,则使用该范围。

向用户确认:

“将记录 – 的值班情况。正确吗?”

等待用户确认后再继续。

4. 从监控平台获取告警
4a. 检查是否已有页面(增量更新)

在 Wiki 中搜索此时间段的现有页面(使用步骤 7 中的命名约定)。如果找到,则读取页面以查找上次更新时间戳。询问用户:“此时间段的页面已存在。要更新还是新建?”

  • 如果选择更新:使用上次更新时间戳作为 from 日期,而不是完整时间范围的起始日期——这样可以避免重新获取已记录的告警,并减少令牌用量。
  • 如果选择新建:使用完整时间范围的起始日期,并在步骤 8 中创建单独的页面。

每次更新时,在页面顶部添加一行 **Last updated:** <timestamp>。

4b. 查询已触发的告警事件

使用可用的监控 MCP 获取告警事件:

  • 按环境和已触发/警告状态筛选
  • 时间范围:从上次更新(如果是新页面,则从时间范围起始日期)到现在
  • 按时间戳排序

分页: 如果结果被截断,则继续分页,直到获取所有事件。

4c. 筛选并规范化

对获取的所有事件:

  • 排除来自非目标环境的事件
  • 排除恢复事件——仅统计已触发和警告事件
  • 规范化监控器标题:移除状态前缀,获取基础监控器名称
4d. 生成告警摘要

按基础监控器名称对事件分组。为每组收集:

  1. 出现次数——此监控器在此时间段内触发的总次数
  2. 出现时间——每次触发的时间戳,并附上指向监控平台中该事件的链接
  3. 当前状态——监控器当前是否仍处于 Alert 状态?

按出现次数降序排列告警。

4e. 检查当前仍处于活动状态的监控器

查询当前处于 Alert 状态的监控器,并将其标记为需要下一位值班人员跟进。

如果此时间段内没有告警,则注明“此时间段无告警”并继续。

5. 询问是否有补充备注

“是否还有其他备注、事件或待办事项需要记录到日志中?”

记录用户的输入。如果用户回答“没有”,则不添加备注,继续操作。

6. 获取模板(如果已配置)

如果用户在步骤 2 中提供了模板页面,则获取该页面,并参考其结构作为格式指南。否则,使用步骤 8 中的默认结构。

7. 查找或创建目标位置

按照一致的层级整理值班日志:

On-call Logs/
  On-call <YYYY>/
    On-call <MM>/<YYYY>/
      [On-call] <Start Date> - <End Date>
  1. 检查年份文件夹是否存在——如果不存在则创建
  2. 检查月份文件夹是否存在——如果不存在则创建
  3. 检查此期间的页面是否已存在:
    • 如果已找到,且用户在步骤 4a 中选择了更新:在步骤 8 中更新此页面
    • 如果已找到,且用户在步骤 4a 中选择了新建:在步骤 8 中创建新页面
    • 如果未找到:继续执行步骤 8
8. 创建日志页面

在 wiki 平台上创建页面:

# On-call Log: <Start Date> – <End Date>

## Alert Summary

| Alert | Count | Times | Cause | Resolution |
|-------|-------|-------|-------|------------|
| <monitor name> | <N> | <timestamp 1>, <timestamp 2>, ... | | Still active |

**Total alerts:** <N> across <M> unique monitors

## Currently Active Alerts
<list monitors still in Alert status, or "None — all clear">

## Notes
<additional notes from Step 5, or "None">

## Action Items for Next On-call
- <follow up on active alert X>
- <investigate recurring alert Y — triggered N times>

格式要求:

  • 将告警名称链接到其监控页面
  • 将时间戳链接到对应事件
  • “原因”列留空,由工程师事后填写
  • 对于当前处于 Alert 状态的监控项,“解决情况”填写“仍在处理”;对于已解决的监控项则留空(由工程师事后填写)
9. 呈现结果
## On-call Log Created

**Page:** <page title>
**URL:** <wiki page URL>
**Alerts logged:** <N> alerts across <M> unique monitors
**Active alerts:** <count or "None">
**Notes:** <summary or "None">

如果存在尚未解决的告警:

留给下一位值班人员的待办事项: 以下告警仍处于活动状态——请联系相关团队跟进:<list>

交互风格

  • 获取数据前确认配置和日期范围——不要自行假定
  • 只进行一轮提问,避免多轮来回沟通
  • 醒目地呈现最终页面 URL,方便用户立即分享

规则

  • 获取告警前始终确认日期范围
  • 仅包含生产环境告警,除非用户明确要求包含其他环境
  • 绝不创建重复的 wiki 页面——先检查是否已有页面
  • “原因”列留空,由工程师事后填写。活动监控项的“解决情况”填写“仍在处理”,已解决的监控项则留空
  • 完整翻页——不要只呈现部分告警数据

输出

直接在 wiki 平台(Confluence 或 Notion)上创建日志页面。在对话中直接呈现 URL 和统计数据。

评论

支持 Markdown