关于 ci-discovery
面向 IT 团队的 ServiceNow CMDB 技能,用于发现、分类、创建、关联和验证配置项,并提供维护 CI 数据及生命周期状态的操作流程与示例。
主要功能
- 01了解 CI 类层级
- 02搜索现有 CI
- 03创建并分类 CI
- 04设置 CI 关系
- 05验证数据质量与状态
适用场景
- 01将基础设施配置录入 CMDB
- 02检查 CI 重复项或必填数据缺失
- 03关联 CI 与服务
- 04更新 CI 运行状态和生命周期
MCP 相关
该技能提供 MCP 工具示例,说明如何搜索、创建和更新 ServiceNow CMDB 中的 CI,以及查看表结构。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill ci-discovery安装后在 Claude Code 中输入/ci-discovery确认已加载。
详细介绍
配置项发现
概述
配置项(CI)是 CMDB 的基础。本技能涵盖:
- 了解 CI 类层次结构
- 发现并分类 CI
- 在无法自动发现时手动创建 CI
- 维护 CI 数据质量
- 建立 CI 关系
使用场景: 填充或维护 CMDB、接入新的基础设施,或验证 CI 数据时。
先决条件
- 角色:
cmdb_admin或具有 CMDB 写入权限的itil - 访问权限: CMDB 表(cmdb_ci 及其子类)
- 知识: CMDB 类结构、CI 属性
操作流程
步骤 1:了解 CI 类层次结构
CMDB 使用继承机制。所有 CI 都继承自 cmdb_ci:
cmdb_ci (Base CI)
├── cmdb_ci_computer
│ ├── cmdb_ci_server
│ │ ├── cmdb_ci_win_server
│ │ ├── cmdb_ci_linux_server
│ │ └── cmdb_ci_unix_server
│ └── cmdb_ci_pc_hardware
│ ├── cmdb_ci_computer_win
│ └── cmdb_ci_computer_mac
├── cmdb_ci_service
│ ├── cmdb_ci_service_auto
│ └── cmdb_ci_service_manual
├── cmdb_ci_appl
│ ├── cmdb_ci_app_server
│ └── cmdb_ci_database_instance
├── cmdb_ci_network_gear
│ ├── cmdb_ci_netgear
│ └── cmdb_ci_ip_router
└── cmdb_ci_storage_device
发现可用的 CI 类:
Tool: SN-Query-Table
Parameters:
table_name: sys_db_object
query: nameLIKEcmdb_ci^super_class.name=cmdb_ci
fields: name,label,super_class
limit: 50
步骤 2:查询现有 CI
添加新 CI 前,先检查已有内容:
使用 MCP:
Tool: SN-List-CmdbCis
Parameters:
ci_class: cmdb_ci_server
query: operational_status=1
fields: name,ip_address,os,sys_class_name
limit: 100
按名称搜索:
Tool: SN-Query-Table
Parameters:
table_name: cmdb_ci
query: nameLIKEweb-server
fields: sys_id,name,sys_class_name,operational_status
步骤 3:创建新 CI
手动创建 CI(无法自动发现时):
Tool: SN-Create-Record
Parameters:
table_name: cmdb_ci_linux_server
data:
name: "prod-web-01"
ip_address: "10.0.1.100"
dns_domain: "corp.company.com"
fqdn: "prod-web-01.corp.company.com"
os: "Red Hat Enterprise Linux"
os_version: "8.5"
cpu_count: 8
ram: 32768
disk_space: 500
serial_number: "SN12345678"
asset_tag: "ASSET-001"
operational_status: 1
install_status: 1
environment: Production
location: [location_sys_id]
department: [department_sys_id]
support_group: [group_sys_id]
managed_by: [user_sys_id]
comments: "Production web server - Node 1"
CI 属性参考:
| 属性 | 说明 | 示例 |
|---|---|---|
| name | CI 显示名称 | prod-web-01 |
| ip_address | 主 IP 地址 | 10.0.1.100 |
| fqdn | 完全限定域名 | prod-web-01.corp.com |
| operational_status | 1=运行中,2=未运行 | 1 |
| install_status | 1=已安装,7=已退役 | 1 |
| environment | 生产/测试/开发 | Production |
| support_group | 支持团队 | Linux Admins |
步骤 4:正确分类 CI
选择最符合情况的具体类:
决策树:
Is it hardware?
├── Yes → Is it a computer?
│ ├── Yes → Server or Workstation?
│ │ ├── Server → What OS? → cmdb_ci_win_server / cmdb_ci_linux_server
│ │ └── Workstation → cmdb_ci_pc_hardware
│ └── No → Network gear? Storage? → cmdb_ci_netgear / cmdb_ci_storage
└── No → Is it software?
├── Application → cmdb_ci_appl
├── Database → cmdb_ci_database_instance
└── Service → cmdb_ci_service
获取类架构以了解属性:
Tool: SN-Discover-Table-Schema
Parameters:
table_name: cmdb_ci_linux_server
步骤 5:建立 CI 关系
CI 并非孤立存在。请定义关系:
关系类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| 运行于 | 硬件上的软件 | 应用运行于服务器 |
| 依赖于 | 服务依赖关系 | Web 依赖于 DB |
| 包含 | 物理包含关系 | 机架包含服务器 |
| 归属 | 所有权 | 服务器归团队所有 |
创建关系:
Tool: SN-Create-Record
Parameters:
table_name: cmdb_rel_ci
data:
parent: [parent_ci_sys_id]
child: [child_ci_sys_id]
type: [relationship_type_sys_id]
查找关系类型:
Tool: SN-Query-Table
Parameters:
table_name: cmdb_rel_type
fields: sys_id,name,parent_descriptor,child_descriptor
limit: 50
步骤 6:验证 CI 数据
使用验证查询确保数据质量:
查找缺少必需数据的 CI:
Tool: SN-Query-Table
Parameters:
table_name: cmdb_ci_server
query: ip_addressISEMPTY^operational_status=1
fields: name,sys_class_name,support_group
查找重复 CI:
Tool: SN-Query-Table
Parameters:
table_name: cmdb_ci
query: nameLIKEserver-name
fields: sys_id,name,ip_address,sys_created_on
检查孤立 CI(没有关系):
# Query CIs not in any relationship
# This requires a more complex query or script
步骤 7:维护 CI 生命周期
随着情况变化,更新 CI 状态:
运行状态值:
| 值 | 状态 | 使用时机 |
|---|---|---|
| 1 | 运行中 | CI 正常运行 |
| 2 | 未运行 | CI 已停机/损坏 |
| 3 | 正在修复 | 正在修复 |
| 4 | 灾难恢复备用 | 灾难恢复备用 |
| 6 | 已退役 | 不再使用 |
更新 CI 状态:
Tool: SN-Update-Record
Parameters:
table_name: cmdb_ci_server
sys_id: [ci_sys_id]
data:
operational_status: 6
install_status: 7
decommissioned: true
comments: "Decommissioned per CHG0012345 on 2026-02-06"
CI 数据质量检查清单
- 名称符合命名规范
- IP 地址准确且唯一
- 已记录序列号(适用于硬件)
- 已分配支持组
- 已指定位置
- 已设置环境(Prod/Test/Dev)
- 已定义关系
- 运行状态为最新
- 已记录发现来源
工具使用摘要
| 操作 | MCP 工具 | REST 端点 |
|---|---|---|
| 查询 CI | SN-Query-Table, SN-List-CmdbCis | GET /cmdb_ci |
| 创建 CI | SN-Create-Record | POST /cmdb_ci_* |
| 更新 CI | SN-Update-Record | PATCH /cmdb_ci/{id} |
| 获取架构 | SN-Discover-Table-Schema | GET /sys_dictionary |
| 关系 | SN-Create-Record | POST /cmdb_rel_ci |
最佳实践
- 使用最具体的类: 使用 cmdb_ci_linux_server,而不是 cmdb_ci_server
- 统一命名: 遵循一致的命名规范
- 关联资产: 适用时,将 CI 关联到资产记录
- 记录来源: 注明 CI 是自动发现还是手动创建
- 定期审计: 定期验证 CI 数据准确性
- 关系完整性: CI 至少应有一个关系
故障排除
报告中未显示 CI
原因: 类错误或缺少属性
解决方案: 检查 sys_class_name,并确保必填字段已填写
CI 重复
原因: 存在多个发现来源或手动创建了重复项
解决方案: 使用识别规则;合并或停用重复项
未显示关系
原因: 关系类型不适用于 CI 类
解决方案: 验证关系类型是否支持父类和子类
相关技能
cmdb/relationship-mapping- 深入了解关系cmdb/impact-analysis- 使用 CMDB 进行影响分析cmdb/service-graph-diagnosis- 诊断发现和服务图中的缺口itsm/change-management- 变更期间的 CI 变更
参考资料
评论
支持 Markdown