关于 ops-oncall-log
ops-oncall-log 是一项技能,可从监控平台收集告警,并在团队 Wiki 中创建结构化值班日志。它引导工程师整理告警、记录备注,以及更新或新建指定时段的页面。
主要功能
- 01获取并归类监控告警
- 02按环境和状态筛选告警
- 03增量更新现有时段日志
- 04创建 Confluence 或 Notion 页面
- 05标记仍处于活动状态的监控项
适用场景
- 01在值班交接时记录告警
- 02准备每日或每周值班回顾
- 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 服务:
- 监控 MCP——用于获取告警事件和监控器状态。推荐:Datadog MCP。
- Wiki MCP——用于创建日志页面。支持:Confluence(
mcp__claude_ai_Atlassian__*)或 Notion(mcp__claude_ai_Notion__*)。
如果缺少其中任一服务,则停止并显示:
错误:缺少必需的 MCP 服务:
<list>。 此技能需要监控 MCP 和 Wiki MCP。 推荐:Datadog MCP + Confluence 或 Notion MCP。
2. 收集配置
询问用户:
- 日志频率——每日还是每周?(默认:每周)
- 值班轮换安排——轮换从星期几开始?(默认:星期五,仅适用于每周)
- 环境筛选条件——要包含哪些环境?(默认:仅 prod)
- Wiki 空间/父页面——在哪里创建日志页面:
- Confluence: 空间密钥和父页面 ID
- Notion: 父页面 ID 或数据库 ID
- 模板页面(可选)——用作格式参考的现有页面
如果用户之前运行过此流程,且已有配置(例如,位于 .spartan/config.yaml),则沿用这些设置并确认:
“使用之前的设置:、 告警,Wiki 位置为 。正确吗?”
3. 确定日期范围
根据步骤 2 中的日志频率确定日期范围:
- 每日: 今天(或用户指定的日期)
- 每周: 根据轮换日计算值班时段(例如,从星期五到星期五)
如果用户提供了自定义日期范围,则使用该范围。
向用户确认:
“将记录 – 的值班情况。正确吗?”
等待用户确认后再继续。
4. 从监控平台获取告警
4a. 检查是否已有页面(增量更新)
在 Wiki 中搜索此时间段的现有页面(使用步骤 7 中的命名约定)。如果找到,则读取页面以查找上次更新时间戳。询问用户:“此时间段的页面已存在。要更新还是新建?”
- 如果选择更新:使用上次更新时间戳作为
from日期,而不是完整时间范围的起始日期——这样可以避免重新获取已记录的告警,并减少令牌用量。 - 如果选择新建:使用完整时间范围的起始日期,并在步骤 8 中创建单独的页面。
每次更新时,在页面顶部添加一行 **Last updated:** <timestamp>。
4b. 查询已触发的告警事件
使用可用的监控 MCP 获取告警事件:
- 按环境和已触发/警告状态筛选
- 时间范围:从上次更新(如果是新页面,则从时间范围起始日期)到现在
- 按时间戳排序
分页: 如果结果被截断,则继续分页,直到获取所有事件。
4c. 筛选并规范化
对获取的所有事件:
- 排除来自非目标环境的事件
- 排除恢复事件——仅统计已触发和警告事件
- 规范化监控器标题:移除状态前缀,获取基础监控器名称
4d. 生成告警摘要
按基础监控器名称对事件分组。为每组收集:
- 出现次数——此监控器在此时间段内触发的总次数
- 出现时间——每次触发的时间戳,并附上指向监控平台中该事件的链接
- 当前状态——监控器当前是否仍处于 Alert 状态?
按出现次数降序排列告警。
4e. 检查当前仍处于活动状态的监控器
查询当前处于 Alert 状态的监控器,并将其标记为需要下一位值班人员跟进。
如果此时间段内没有告警,则注明“此时间段无告警”并继续。
5. 询问是否有补充备注
“是否还有其他备注、事件或待办事项需要记录到日志中?”
记录用户的输入。如果用户回答“没有”,则不添加备注,继续操作。
6. 获取模板(如果已配置)
如果用户在步骤 2 中提供了模板页面,则获取该页面,并参考其结构作为格式指南。否则,使用步骤 8 中的默认结构。
7. 查找或创建目标位置
按照一致的层级整理值班日志:
On-call Logs/
On-call <YYYY>/
On-call <MM>/<YYYY>/
[On-call] <Start Date> - <End Date>
- 检查年份文件夹是否存在——如果不存在则创建
- 检查月份文件夹是否存在——如果不存在则创建
- 检查此期间的页面是否已存在:
- 如果已找到,且用户在步骤 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 和统计数据。