mcpField
C
ci-discovery

ci-discovery

github.com/happy-technologies-llc数据与数据库4142 次安装2 天前更新
代码仓库

关于 ci-discovery

面向 IT 团队的 ServiceNow CMDB 技能,用于发现、分类、创建、关联和验证配置项,并提供维护 CI 数据及生命周期状态的操作流程与示例。

主要功能

  1. 01了解 CI 类层级
  2. 02搜索现有 CI
  3. 03创建并分类 CI
  4. 04设置 CI 关系
  5. 05验证数据质量与状态

适用场景

  1. 01将基础设施配置录入 CMDB
  2. 02检查 CI 重复项或必填数据缺失
  3. 03关联 CI 与服务
  4. 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 属性参考:

属性说明示例
nameCI 显示名称prod-web-01
ip_address主 IP 地址10.0.1.100
fqdn完全限定域名prod-web-01.corp.com
operational_status1=运行中,2=未运行1
install_status1=已安装,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 端点
查询 CISN-Query-Table, SN-List-CmdbCisGET /cmdb_ci
创建 CISN-Create-RecordPOST /cmdb_ci_*
更新 CISN-Update-RecordPATCH /cmdb_ci/{id}
获取架构SN-Discover-Table-SchemaGET /sys_dictionary
关系SN-Create-RecordPOST /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