关于 health-log-analytics
面向 ServiceNow ITOM 运维团队的 Health Log Analytics 管理技能,涵盖指标、阈值和异常。它还提供历史趋势分析,用于容量规划和调整告警策略。
主要功能
- 01查看日志源与指标定义
- 02配置指标阈值
- 03检查性能异常
- 04分析容量与历史趋势
- 05调整阈值和告警策略
适用场景
- 01监测基础设施性能退化
- 02评估服务器容量需求
- 03减少阈值告警噪声
MCP 相关
使用 SN-Query-Table 等 MCP 工具查询日志源、指标、阈值和异常;还可通过 SN-Create-Record、SN-Update-Record 管理阈值,并用脚本分析趋势。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill health-log-analytics安装后在 Claude Code 中输入/health-log-analytics确认已加载。
详细介绍
Health Log Analytics
概述
此技能提供了在 ServiceNow ITOM 中管理 Health Log Analytics(HLA)的结构化方法。涵盖:
- 配置日志源以收集指标并摄取日志
- 定义和调整指标阈值,以便主动发出警报
- 使用 ML 驱动的基线检测 CI 性能模式中的异常
- 根据历史指标趋势进行容量规划分析
- 构建基础设施和服务的性能趋势报告
- 管理阈值策略和警报抑制规则
适用场景: 运维团队需要主动监控基础设施健康状况、在性能下降影响服务之前检测到问题、规划容量需求,或调整警报阈值以减少噪声时。
所需插件: com.snc.sa.health-log-analytics
前提条件
- 角色:
sa_admin、evt_mgmt_admin或itil - 访问权限: 对
sa_metric_definition、sa_threshold、sa_anomaly、sa_log_source、em_alert的读写权限 - 知识: 熟悉 ITOM 指标类型、时间序列数据概念和 CI 性能基线
- 插件: 必须激活
com.snc.sa.health-log-analytics和com.snc.em - 数据: 从受监控 CI 收集指标的 MID Server,或提供指标数据的可观测性平台连接器
操作步骤
步骤 1:查看已配置的日志源
清点活动日志源,了解当前数据收集范围。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sa_log_source
query: active=true^ORDERBYname
fields: sys_id,name,type,source_type,ci,status,last_collection_time,collection_interval,mid_server
limit: 50
使用 REST API:
GET /api/now/table/sa_log_source?sysparm_query=active=true^ORDERBYname&sysparm_fields=sys_id,name,type,source_type,ci,status,last_collection_time,collection_interval,mid_server&sysparm_display_value=true&sysparm_limit=50
日志源类型:
| 类型 | 描述 |
|---|---|
| Agent | 从主机收集数据的 ServiceNow Agent |
| SNMP | 从网络设备进行 SNMP 轮询 |
| WMI | Windows Management Instrumentation |
| SSH | 通过 SSH 进行基于脚本的收集 |
| REST | 从外部 API 拉取数据 |
| Syslog | 基于推送的 syslog 接收器 |
步骤 2:查看指标定义
检查正在跟踪的指标及其配置。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sa_metric_definition
query: active=true^ORDERBYci_type,name
fields: sys_id,name,description,ci_type,metric_type,unit,source,aggregation_type,collection_interval
limit: 50
使用 REST API:
GET /api/now/table/sa_metric_definition?sysparm_query=active=true^ORDERBYci_type,name&sysparm_fields=sys_id,name,description,ci_type,metric_type,unit,source,aggregation_type,collection_interval&sysparm_display_value=true&sysparm_limit=50
常见指标类型:
| 指标 | CI 类型 | 单位 | 典型阈值 |
|---|---|---|---|
| CPU 利用率 | cmdb_ci_server | 百分比 | 警告:80%,严重:95% |
| 内存使用量 | cmdb_ci_server | 百分比 | 警告:85%,严重:95% |
| 磁盘使用量 | cmdb_ci_server | 百分比 | 警告:80%,严重:90% |
| 网络延迟 | cmdb_ci_netgear | ms | 警告:100ms,严重:500ms |
| 响应时间 | cmdb_ci_service | ms | 警告:2000ms,严重:5000ms |
步骤 3:管理阈值
查看并配置指标阈值,以便主动发出警报。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sa_threshold
query: active=true^ORDERBYmetric_definition.name
fields: sys_id,name,metric_definition,ci,ci_type,warning_value,critical_value,operator,duration,active
limit: 50
使用 REST API:
GET /api/now/table/sa_threshold?sysparm_query=active=true^ORDERBYmetric_definition.name&sysparm_fields=sys_id,name,metric_definition,ci,ci_type,warning_value,critical_value,operator,duration,active&sysparm_display_value=true&sysparm_limit=50
创建新阈值:
Tool: SN-Create-Record
Parameters:
table_name: sa_threshold
data:
name: High CPU Alert - Production Servers
metric_definition: [metric_def_sys_id]
ci_type: cmdb_ci_server
warning_value: 80
critical_value: 95
operator: ">="
duration: 300
active: true
步骤 4:检测异常
查询已检测到的异常,以识别意外的性能模式。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sa_anomaly
query: state=active^ORDERBYDESCdetection_time
fields: sys_id,ci,metric_definition,severity,state,detection_time,expected_value,actual_value,deviation,description
limit: 30
使用 REST API:
GET /api/now/table/sa_anomaly?sysparm_query=state=active^ORDERBYDESCdetection_time&sysparm_fields=sys_id,ci,metric_definition,severity,state,detection_time,expected_value,actual_value,deviation,description&sysparm_display_value=true&sysparm_limit=30
步骤 5:容量规划分析
分析历史指标趋势,预测容量需求。
使用 MCP:
Tool: SN-Execute-Background-Script
Parameters:
description: Analyze capacity trends for servers approaching resource limits
script: |
gs.info('=== CAPACITY PLANNING ANALYSIS ===');
// Find CIs with recent high-utilization alerts
var ga = new GlideAggregate('em_alert');
ga.addQuery('source', 'Health Log Analytics');
ga.addQuery('severity', '<=', '2'); // Critical or Major
ga.addQuery('sys_created_on', '>=', gs.daysAgo(30));
ga.addAggregate('COUNT');
ga.groupBy('ci');
ga.orderByAggregate('COUNT', 'DESC');
ga.setLimit(20);
ga.query();
gs.info('\n--- CIs with Most HLA Alerts (Last 30 Days) ---');
while (ga.next()) {
var ciId = ga.ci.toString();
var count = ga.getAggregate('COUNT');
var ci = new GlideRecord('cmdb_ci');
if (ci.get(ciId)) {
gs.info('CI: ' + ci.name + ' (' + ci.sys_class_name + ') | Alerts: ' + count + ' | Status: ' + ci.operational_status.getDisplayValue());
}
}
// Identify anomalies with upward trends (capacity risk)
gs.info('\n--- Active Anomalies Indicating Growth ---');
var anomaly = new GlideRecord('sa_anomaly');
anomaly.addQuery('state', 'active');
anomaly.addQuery('actual_value', '>', 'expected_value');
anomaly.orderByDesc('deviation');
anomaly.setLimit(15);
anomaly.query();
while (anomaly.next()) {
gs.info('CI: ' + anomaly.ci.getDisplayValue() + ' | Metric: ' + anomaly.metric_definition.getDisplayValue() + ' | Expected: ' + anomaly.expected_value + ' | Actual: ' + anomaly.actual_value + ' | Deviation: ' + anomaly.deviation + '%');
}
步骤 6:性能趋势报告
生成关键基础设施的性能摘要。
使用 MCP:
Tool: SN-Execute-Background-Script
Parameters:
description: Generate performance trending summary for critical services
script: |
gs.info('=== PERFORMANCE TRENDING REPORT ===');
// Alerts by severity over time
gs.info('\n--- Alert Trend (Last 7 Days) ---');
for (var d = 6; d >= 0; d--) {
var dayStart = gs.daysAgo(d + 1);
var dayEnd = gs.daysAgo(d);
var ga = new GlideAggregate('em_alert');
ga.addQuery('source', 'Health Log Analytics');
ga.addQuery('sys_created_on', '>=', dayStart);
ga.addQuery('sys_created_on', '<', dayEnd);
ga.addAggregate('COUNT');
ga.query();
ga.next();
var count = ga.getAggregate('COUNT');
var dt = new GlideDateTime(dayStart);
gs.info(dt.getDate().getByFormat('yyyy-MM-dd') + ': ' + count + ' alerts');
}
// Top alerting CIs
gs.info('\n--- Top 10 Alerting CIs (Last 7 Days) ---');
var topCI = new GlideAggregate('em_alert');
topCI.addQuery('source', 'Health Log Analytics');
topCI.addQuery('sys_created_on', '>=', gs.daysAgo(7));
topCI.addAggregate('COUNT');
topCI.groupBy('ci');
topCI.orderByAggregate('COUNT', 'DESC');
topCI.setLimit(10);
topCI.query();
while (topCI.next()) {
gs.info('CI: ' + topCI.ci.getDisplayValue() + ' | Alerts: ' + topCI.getAggregate('COUNT'));
}
// Threshold breach distribution
gs.info('\n--- Threshold Breaches by Metric ---');
var thr = new GlideAggregate('em_alert');
thr.addQuery('source', 'Health Log Analytics');
thr.addQuery('sys_created_on', '>=', gs.daysAgo(7));
thr.addAggregate('COUNT');
thr.groupBy('metric_name');
thr.orderByAggregate('COUNT', 'DESC');
thr.setLimit(10);
thr.query();
while (thr.next()) {
gs.info('Metric: ' + thr.metric_name + ' | Breaches: ' + thr.getAggregate('COUNT'));
}
步骤 7:调整阈值策略
根据趋势数据调整阈值,以减少误报。
使用 MCP:
Tool: SN-Update-Record
Parameters:
table_name: sa_threshold
sys_id: [threshold_sys_id]
data:
warning_value: 85
critical_value: 97
duration: 600
使用 REST API:
PATCH /api/now/table/sa_threshold/[threshold_sys_id]
Content-Type: application/json
{
"warning_value": "85",
"critical_value": "97",
"duration": "600"
}
工具使用
MCP 工具参考
| 工具 | 使用时机 |
|---|---|
SN-Query-Table | 查询日志源、指标、阈值、异常和警报 |
SN-Get-Record | 获取特定指标定义或阈值详情 |
SN-Create-Record | 创建新的阈值、日志源或指标定义 |
SN-Update-Record | 调整阈值或更新日志源配置 |
SN-Execute-Background-Script | 容量分析、趋势报告、批量验证 |
SN-Natural-Language-Search | 使用自然语言查询,例如“存在 CPU 异常的服务器” |
REST API 参考
| 端点 | 方法 | 用途 |
|---|---|---|
/api/now/table/sa_log_source | GET/POST | 管理日志源 |
/api/now/table/sa_metric_definition | GET | 查看指标定义 |
/api/now/table/sa_threshold | GET/POST/PATCH | 管理阈值 |
/api/now/table/sa_anomaly | GET | 查看检测到的异常 |
/api/now/table/em_alert | GET | 查看 HLA 生成的警报 |
最佳实践
- 先建立基线,再配置警报: 配置激进的阈值之前,先让 HLA 使用 2-4 周的数据建立基线
- 使用持续时间窗口: 将阈值持续时间设为 5-10 分钟,避免因短暂峰值触发警报
- 分层设置阈值: 同时创建警告阈值和严重阈值,在产生严重影响之前提供预警
- 每周检查异常: 安排每周检查异常检测结果,以发现新出现的容量趋势
- 关联变更记录: 将异常检测结果与近期变更请求交叉参考,区分预期行为与非预期行为
- 逐步调整: 从保守的阈值开始,再根据运维经验逐步收紧
故障排除
未收集任何指标
原因: 日志源未启用、MID Server 离线或凭据无效
解决方案: 检查 sa_log_source.status 是否有错误。确认 MID Server 连接正常。在 MID Server 主机上测试凭据。
误报异常
原因: 基线数据不足,或未排除计划内维护
解决方案: 延长基线学习期。配置维护时间窗口,将已知的计划活动排除在异常检测之外。
未触发阈值警报
原因: 阈值未关联到正确的指标定义或 CI 类型,或者持续时间窗口过长
解决方案: 验证阈值上的 metric_definition 引用。检查 ci_type 是否与受监控的 CI 匹配。如果峰值持续时间较短,请缩短持续时间。
HLA 仪表板显示的数据已过时
原因: 收集间隔过长,或日志源轮询已停止
解决方案: 检查 sa_log_source.last_collection_time。确认收集计划处于启用状态。检查 MID Server 日志中的收集错误。
示例
示例 1:服务器容量审查
# 1. Find servers with high-severity anomalies
Tool: SN-Query-Table
Parameters:
table_name: sa_anomaly
query: state=active^ci.sys_class_name=cmdb_ci_server^severity<=2
fields: ci,metric_definition,severity,actual_value,expected_value,deviation,detection_time
limit: 20
# 2. Check threshold configuration for those servers
Tool: SN-Query-Table
Parameters:
table_name: sa_threshold
query: ci_type=cmdb_ci_server^active=true
fields: name,metric_definition,warning_value,critical_value,duration
limit: 20
示例 2:日志源运行状况检查
Tool: SN-Execute-Background-Script
Parameters:
description: Check log source collection health
script: |
var ga = new GlideAggregate('sa_log_source');
ga.addQuery('active', true);
ga.addAggregate('COUNT');
ga.groupBy('status');
ga.query();
gs.info('=== LOG SOURCE STATUS SUMMARY ===');
while (ga.next()) {
gs.info('Status: ' + ga.status.getDisplayValue() + ' | Count: ' + ga.getAggregate('COUNT'));
}
// Find stale log sources (no collection in 24 hours)
gs.info('\n--- Stale Log Sources ---');
var stale = new GlideRecord('sa_log_source');
stale.addQuery('active', true);
stale.addQuery('last_collection_time', '<', gs.daysAgo(1));
stale.query();
while (stale.next()) {
gs.info('Source: ' + stale.name + ' | Last Collected: ' + stale.last_collection_time + ' | CI: ' + stale.ci.getDisplayValue());
}
示例 3:每周性能摘要
Tool: SN-Query-Table
Parameters:
table_name: em_alert
query: severity=1^source=Health Log Analytics^sys_created_on>=javascript:gs.daysAgoStart(7)
fields: number,ci,severity,metric_name,description,sys_created_on
limit: 25
相关技能
itom/observability-integration- 将外部指标馈入 HLAitom/alert-analysis- 分析 HLA 生成的警报itom/service-mapping- 将 HLA 数据与服务拓扑关联reporting/trend-analysis- 根据 HLA 指标数据构建报告