mcpField
I
itsm-incident-summarization

itsm-incident-summarization

github.com/happy-technologies-llc生产力4141 次安装2 天前更新
代码仓库

关于 itsm-incident-summarization

此 ServiceNow ITSM 技能汇总事件记录、日志和审计轨迹,生成供交接、结案、复盘及管理沟通使用的结构化报告。它涵盖业务影响、处理时间线、根因和解决信息。

主要功能

  1. 01构建事件时间线
  2. 02评估业务影响与 SLA
  3. 03整理诊断和修复操作
  4. 04记录根因与解决详情
  5. 05生成管理层摘要

适用场景

  1. 01交接或结案时整理事件记录
  2. 02为重大事件准备复盘报告
  3. 03向管理层汇报影响与处置情况

MCP 相关

通过 ServiceNow MCP 工具读取事件、日志、审计和相关记录,并可将摘要写入工作备注或结案备注。

安装

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill itsm-incident-summarization

安装后在 Claude Code 中输入/itsm-incident-summarization确认已加载。

详细介绍

事件摘要

概述

此技能提供在 ServiceNow ITSM 中生成全面事件摘要的结构化方法。内容包括:

  • 根据事件日志条目和审计跟踪构建时间顺序
  • 评估业务影响,包括受影响的用户、服务和 SLA 影响
  • 整理事件处理期间采取的诊断和补救措施
  • 记录根本原因调查结果和解决详情
  • 生成事后报告,以便与利益相关者沟通
  • 为重大事件审查创建高管摘要

使用场景: 当事件需要总结以便交接、关闭、事后审查、管理层汇报或创建知识文章时使用。对于活动日志详尽的重大事件尤其有价值。

所需插件: com.snc.incident(Incident Management)

先决条件

  • 角色: itil、incident_manager 或 admin
  • 访问权限: 对 incident、sys_journal_field、sys_audit、change_request、problem 的读取权限
  • 知识: 熟悉 ITIL 事件生命周期、SLA 管理和事件报告要求
  • 插件: 必须启用 com.snc.incident

操作步骤

第 1 步:检索事件记录

获取完整事件记录以了解背景。

使用 MCP:

Tool: SN-Get-Record
Parameters:
  table_name: incident
  sys_id: [incident_sys_id]
  fields: sys_id,number,short_description,description,state,impact,urgency,priority,category,subcategory,assignment_group,assigned_to,opened_by,opened_at,resolved_by,resolved_at,closed_at,close_code,close_notes,business_service,cmdb_ci,caller_id,contact_type,escalation,severity,reopen_count,reassignment_count,business_duration,calendar_duration

使用 REST API:

GET /api/now/table/incident/[incident_sys_id]?sysparm_fields=sys_id,number,short_description,description,state,impact,urgency,priority,category,subcategory,assignment_group,assigned_to,opened_by,opened_at,resolved_by,resolved_at,closed_at,close_code,close_notes,business_service,cmdb_ci,caller_id,contact_type,escalation,severity,reopen_count,reassignment_count,business_duration,calendar_duration&sysparm_display_value=true
第 2 步:构建活动时间线

提取工作备注和评论,以构建按时间顺序排列的时间线。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=[incident_sys_id]^name=incident^elementINwork_notes,comments^ORDERBYsys_created_on
  fields: sys_id,element,value,sys_created_by,sys_created_on
  limit: 100

使用 REST API:

GET /api/now/table/sys_journal_field?sysparm_query=element_id=[incident_sys_id]^name=incident^elementINwork_notes,comments^ORDERBYsys_created_on&sysparm_fields=sys_id,element,value,sys_created_by,sys_created_on&sysparm_display_value=true&sysparm_limit=100
第 3 步:跟踪状态变更和分配情况

查看审计跟踪,了解状态转换、优先级变更和重新分配情况。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_audit
  query: tablename=incident^documentkey=[incident_sys_id]^fieldnameINstate,priority,impact,urgency,assigned_to,assignment_group,escalation^ORDERBYsys_created_on
  fields: sys_id,fieldname,oldvalue,newvalue,user,sys_created_on
  limit: 50

使用 REST API:

GET /api/now/table/sys_audit?sysparm_query=tablename=incident^documentkey=[incident_sys_id]^fieldnameINstate,priority,impact,urgency,assigned_to,assignment_group,escalation^ORDERBYsys_created_on&sysparm_fields=sys_id,fieldname,oldvalue,newvalue,user,sys_created_on&sysparm_display_value=true&sysparm_limit=50
第 4 步:识别受影响的 CI 和服务

确定受事件影响的基础设施和服务。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: task_ci
  query: task=[incident_sys_id]
  fields: sys_id,ci_item,ci_item.name,ci_item.sys_class_name,ci_item.operational_status
  limit: 20

使用 REST API:

GET /api/now/table/task_ci?sysparm_query=task=[incident_sys_id]&sysparm_fields=sys_id,ci_item,ci_item.name,ci_item.sys_class_name,ci_item.operational_status&sysparm_display_value=true&sysparm_limit=20
第 5 步:检查相关记录

查找相关变更、问题或子事件。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: change_request
  query: reason=[incident_sys_id]^ORcorrelation_id=[incident_number]
  fields: sys_id,number,short_description,state,type,start_date,end_date
  limit: 10
Tool: SN-Query-Table
Parameters:
  table_name: problem
  query: sys_id=[problem_id_from_incident]
  fields: sys_id,number,short_description,state,root_cause,fix,workaround
  limit: 5
第 6 步:生成全面摘要

将所有数据整理成结构化的事件摘要。

使用 MCP:

Tool: SN-Execute-Background-Script
Parameters:
  description: Generate a comprehensive incident summary
  script: |
    var incId = '[incident_sys_id]';

    var inc = new GlideRecord('incident');
    inc.get(incId);

    gs.info('=== INCIDENT SUMMARY ===');
    gs.info('Incident: ' + inc.number);
    gs.info('Title: ' + inc.short_description);
    gs.info('State: ' + inc.state.getDisplayValue());
    gs.info('Priority: ' + inc.priority.getDisplayValue() + ' (Impact: ' + inc.impact.getDisplayValue() + ' / Urgency: ' + inc.urgency.getDisplayValue() + ')');

    // Duration
    gs.info('\n--- DURATION ---');
    gs.info('Opened: ' + inc.opened_at);
    gs.info('Resolved: ' + inc.resolved_at);
    gs.info('Closed: ' + inc.closed_at);
    gs.info('Business Duration: ' + inc.business_duration.getDisplayValue());
    gs.info('Calendar Duration: ' + inc.calendar_duration.getDisplayValue());

    // Impact
    gs.info('\n--- IMPACT ---');
    gs.info('Service: ' + inc.business_service.getDisplayValue());
    gs.info('CI: ' + inc.cmdb_ci.getDisplayValue());
    gs.info('Caller: ' + inc.caller_id.getDisplayValue());

    // Get affected CI count
    var ciCount = new GlideAggregate('task_ci');
    ciCount.addQuery('task', incId);
    ciCount.addAggregate('COUNT');
    ciCount.query();
    ciCount.next();
    gs.info('Affected CIs: ' + ciCount.getAggregate('COUNT'));

    // Assignment history
    gs.info('\n--- ASSIGNMENT HISTORY ---');
    var assign = new GlideRecord('sys_audit');
    assign.addQuery('tablename', 'incident');
    assign.addQuery('documentkey', incId);
    assign.addQuery('fieldname', 'assignment_group');
    assign.orderBy('sys_created_on');
    assign.query();
    while (assign.next()) {
      gs.info(assign.sys_created_on + ': ' + assign.oldvalue + ' -> ' + assign.newvalue + ' (by ' + assign.user + ')');
    }
    gs.info('Reassignment Count: ' + inc.reassignment_count);

    // Key activities (work notes summary)
    gs.info('\n--- KEY ACTIVITIES ---');
    var notes = new GlideRecord('sys_journal_field');
    notes.addQuery('element_id', incId);
    notes.addQuery('name', 'incident');
    notes.addQuery('element', 'work_notes');
    notes.orderBy('sys_created_on');
    notes.query();

    var noteNum = 0;
    while (notes.next()) {
      noteNum++;
      var text = notes.value.toString().replace(/<[^>]*>/g, '').substring(0, 150);
      gs.info('[' + notes.sys_created_on + ' | ' + notes.sys_created_by + '] ' + text);
    }
    gs.info('Total Work Notes: ' + noteNum);

    // Resolution
    gs.info('\n--- RESOLUTION ---');
    gs.info('Close Code: ' + inc.close_code.getDisplayValue());
    gs.info('Close Notes: ' + inc.close_notes);
    gs.info('Resolved By: ' + inc.resolved_by.getDisplayValue());
    gs.info('Reopen Count: ' + inc.reopen_count);

    // Related problem
    if (inc.problem_id && inc.problem_id.toString() !== '') {
      gs.info('\n--- RELATED PROBLEM ---');
      var prob = inc.problem_id.getRefRecord();
      gs.info('Problem: ' + prob.number + ' | ' + prob.short_description);
      gs.info('Root Cause: ' + prob.root_cause);
    }
第 7 步:生成高管摘要

为领导层汇报创建简明的高管级摘要。

高管摘要模板:

=== EXECUTIVE INCIDENT SUMMARY ===

INCIDENT: [Number] - [Short Description]
SEVERITY: [Priority] | STATUS: [State]
DURATION: [Business Duration]

BUSINESS IMPACT:
- Service Affected: [Business Service]
- Users Impacted: [Estimated count]
- Revenue Impact: [If applicable]

ROOT CAUSE:
[Brief root cause description]

RESOLUTION:
[Resolution summary in 1-2 sentences]

CORRECTIVE ACTIONS:
1. [Immediate fix applied]
2. [Preventive measure planned]
3. [Related change/problem raised]

TIMELINE:
[Time] - Incident detected
[Time] - Initial response
[Time] - Escalated to [team]
[Time] - Root cause identified
[Time] - Resolution applied
[Time] - Service restored
第 8 步:保存摘要

将摘要作为工作备注发布,或更新关闭备注。

使用 MCP:

Tool: SN-Add-Work-Notes
Parameters:
  table_name: incident
  sys_id: [incident_sys_id]
  work_notes: |
    === INCIDENT SUMMARY ===
    [Generated summary content]

    Timeline: [X] key events over [Y] hours
    Reassignments: [count]
    Work Notes: [count] entries
    Related: [Problem/Change numbers]

工具使用

MCP 工具参考
工具使用时机
SN-Get-Record检索完整事件记录
SN-Query-Table查询日志条目、审计跟踪、相关记录和受影响的 CI
SN-Natural-Language-Search查找类似事件或相关知识
SN-Update-Record更新关闭备注以添加摘要
SN-Add-Work-Notes将摘要作为工作备注发布
SN-Execute-Background-Script生成涵盖多个来源的全面摘要
REST API 参考
端点方法用途
/api/now/table/incidentGET/PATCH读取事件并更新关闭备注
/api/now/table/sys_journal_fieldGET提取工作备注和评论
/api/now/table/sys_auditGET跟踪状态变更和分配情况
/api/now/table/task_ciGET识别受影响的 CI
/api/now/table/change_requestGET查找相关变更
/api/now/table/problemGET查找相关问题

最佳实践

  • 记录原因: 重点说明为何做出决策,而不仅仅是发生了什么;这对于事后事件复盘至关重要
  • 量化影响: 纳入受影响用户数、停机时长和 SLA 影响百分比等指标
  • 关联相关记录: 始终引用相关问题、变更和知识文章,以便追溯
  • 逐步汇总: 对于长期运行的事件,在关键里程碑创建阶段性摘要
  • 采用统一格式: 在整个组织内统一摘要模板,以便轻松比较
  • 记录所有时间戳: 精确的时间戳有助于准确计算 SLA 并重建时间线

故障排除

工作备注缺失或不完整

原因: Agent 使用了评论而非工作备注,或者通过电子邮件添加了备注,导致格式可能有所不同
解决方案: 同时查询 work_notes 和 comments 元素。检查 sys_email 中基于电子邮件的通信记录。

审计轨迹缺失

原因: 某些字段变更可能未被审计,或者审计记录可能已被清除
解决方案: 验证事件表的审计策略。检查 sys_audit_delete 中的清除历史记录。使用日志条目补充信息。

时长计算不正确

原因: 业务时长不包含非工作时间;处于待处理状态时,计时可能已暂停
解决方案: 使用 calendar_duration 计算总经过时长。检查状态是否曾切换至或切换离“等待用户信息”或“待处理”状态。

未找到相关记录

原因: 记录通过不同字段关联,或者未设置关联 ID
解决方案: 在变更或问题记录的 short_description 或 description 字段中搜索事件编号。检查 correlation_id 和 parent_incident 字段。

示例

示例 1:事后事件复盘摘要
# 1. Get incident
Tool: SN-Get-Record
Parameters:
  table_name: incident
  sys_id: [sys_id]
  fields: number,short_description,priority,impact,opened_at,resolved_at,close_notes,business_service

# 2. Get timeline
Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=[sys_id]^name=incident^element=work_notes^ORDERBYsys_created_on
  fields: value,sys_created_by,sys_created_on
  limit: 50

# 3. Get state changes
Tool: SN-Query-Table
Parameters:
  table_name: sys_audit
  query: tablename=incident^documentkey=[sys_id]^fieldname=state^ORDERBYsys_created_on
  fields: oldvalue,newvalue,user,sys_created_on
  limit: 20
示例 2:对未解决的 P1 事件进行批量摘要
Tool: SN-Execute-Background-Script
Parameters:
  description: Summarize all open P1 incidents
  script: |
    var gr = new GlideRecord('incident');
    gr.addQuery('priority', '1');
    gr.addQuery('active', true);
    gr.query();

    gs.info('=== OPEN P1 INCIDENT SUMMARY ===');
    gs.info('Total: ' + gr.getRowCount());

    while (gr.next()) {
      var age = gs.dateDiff(gr.opened_at.toString(), gs.nowDateTime(), true);
      gs.info(gr.number + ' | ' + gr.short_description + ' | Age: ' + age + ' | Group: ' + gr.assignment_group.getDisplayValue() + ' | Service: ' + gr.business_service.getDisplayValue());
    }
示例 3:SLA 影响摘要
Tool: SN-Query-Table
Parameters:
  table_name: incident
  query: sys_id=[sys_id]
  fields: number,sla_due,made_sla,business_duration,calendar_duration,priority
  limit: 1

相关技能

  • itsm/major-incident - 针对重大事件的专门摘要
  • itsm/problem-analysis - 摘要中引用的根本原因分析
  • itsm/kb-generation - 将事件摘要转换为知识文章
  • itsm/email-recommendation - 向利益相关者发送基于摘要的通信
  • reporting/trend-analysis - 汇总事件摘要以进行趋势报告

参考资料

评论

支持 Markdown