☰
CMDB科普:配置管理数据库——运维相关
2026/10/8 7:18:38 网站建设 项目流程

一、什么是CMDB

一句话定义:CMDB(Configuration Management Database,配置管理数据库)是运维领域的“设备与配置信息中心”,用于存储IT架构中所有设备、软件及其相互关系的配置信息。

CMDB 是“运维数据的关系图谱”,不是“服务器清单”。它的核心价值在于关系——通过“谁依赖谁”,让监控知道告警该通知谁,让变更知道会影响谁,让自动化知道该操作哪台机器。

1.1 核心概念

概念含义
CI(配置项)CMDB管理的基本单元,如一台服务器、一个应用、一个数据库实例
CI关系CI之间的依赖或连接关系,如“应用 RUNSON 服务器”“数据库 USEDBY 应用”
自动发现通过SNMP、SSH、API等协议自动识别和同步IT资源,避免手工录入

1.2 核心价值

CMDB是所有自动化运维系统的 “设备事实单一数据源” ——监控、自动化脚本、工单系统都从这里获取“某台设备在哪里、什么配置、谁负责”。

场景说明
故障排查与定位服务告警时,通过CMDB的拓扑关系快速定位受影响范围(如:数据库慢→影响哪些服务→影响哪些用户)
变更影响分析变更前查询依赖关系,评估影响面,避免“改一台影响一片”
自动化运维Ansible/SaltStack等工具从CMDB动态获取设备清单,替代人工维护Excel
资产管理与审计统一管理IT资产台账,支持合规审计与生命周期管控
AIOps数据底座为AI根因分析提供资产拓扑、变更记录、依赖关系等上下文数据

二、应用场景

三、主流CMDB工具对比

工具类型特点适用场景官方链接
ServiceNow商业ITIL支持全面,功能强大,但成本高、实施复杂大型企业全栈ITSMhttps://www.servicenow.com/products/servicenow-platform/configuration-management-database.html
BMC Helix商业强AI能力,多云CMDB,ITIL 4合规大型企业智能化运维https://www.bmc.com/cmdb
NetBox开源API优先,网络IPAM/DCIM能力极强,社区活跃网络设备管理、中小团队https://github.com/netbox-community/netbox
iTop开源严格遵循ITIL,含服务台功能,界面友好ITSM流程驱动的团队https://www.itophub.io
蓝鲸CMDB开源腾讯开源,中文文档完善,与自动化平台深度集成国内企业、混合云环境https://github.com/TencentBlueKing/bk-cmdb
CMDBuild开源高度可定制,支持工作流和地理可视化需要定制化资产管理的中小企业https://www.cmdbuild.org

选型建议:中小团队优先考虑NetBox或iTop(轻量、社区活跃);需要与腾讯生态集成选蓝鲸CMDB;大型企业考虑ServiceNow或BMC Helix。

四、使用方式

4.1 核心使用模式

  1. 查询:通过Web界面或API按条件查询CI及其属性。

  2. 关系维护:为CI建立关系(如“应用A部署在主机B上”),形成拓扑图。

  3. 自动同步:配置发现任务,定期从网络、服务器、云平台同步实际状态到CMDB。

  4. 消费数据:监控系统、自动化平台、工单系统通过CMDB API读取设备信息。

4.2 CI关系示例

4.3 关键原则

“自动发现驱动、服务视角组织、持续保鲜” ——CMDB数据不应依赖人工录入,而应通过自动发现工具持续同步IT环境的实际状态;以“业务服务”为中心组织数据,让CMDB从“资产清单”升级为“服务蓝图”。

五、快速上手(以NetBox为例)

  1. 安装部署

一键部署脚本install-netbox.sh:

#!/bin/bashset-eNETBOX_DIR="$HOME/netbox-docker"NETBOX_URL="http://localhost:8000"ADMIN_USER="admin"ADMIN_PASS="admin123456"ADMIN_EMAIL="admin@demo.local"# ---------- 1. 克隆仓库 ----------if[!-d"$NETBOX_DIR"];thenecho"==> 克隆 netbox-docker..."gitclone-brelease https://github.com/netbox-community/netbox-docker.git"$NETBOX_DIR"ficd"$NETBOX_DIR"[-fdocker-compose.override.yml]||cpdocker-compose.override.yml.example docker-compose.override.yml# ---------- 2. 启动服务 ----------echo"==> 启动容器..."dockercompose up-decho"==> 等待 NetBox 就绪..."untilcurl-s-o/dev/null-w"%{http_code}""$NETBOX_URL/login/"|grep-q"200";dosleep3done# ---------- 3. 创建管理员(幂等) ----------echo"==> 创建管理员..."dockercomposeexec-Tnetbox /opt/netbox/netbox/manage.py shell2>/dev/null<<EOF from django.contrib.auth import get_user_model User = get_user_model() if not User.objects.filter(username="$ADMIN_USER").exists(): User.objects.create_superuser("$ADMIN_USER", "$ADMIN_EMAIL", "$ADMIN_PASS") print("已创建管理员") else: print("管理员已存在,跳过") EOF# ---------- 4. 完成 ----------echoecho"===================================================="echo"✅ NetBox 已就绪"echo" Web 界面:$NETBOX_URL"echo" 用户名 :$ADMIN_USER"echo" 密码 :$ADMIN_PASS"echo"===================================================="echoecho"下一步:访问 http://localhost:8000"

执行:

  1. 添加示例数据(具体可参考下面文档,此处不做演示)

参考文档:https://zhuanlan.zhihu.com/p/656805361、http://localhost:8000/static/docs/

添加过程:

  1. 创建region(地区)

  2. 创建site(站点,region>site)

  3. 创建location(比如在哪栋楼/哪层楼/哪个房间等)

  4. Manufacturers (设备厂家名字,比如ALE/思科/华为/华三等)

  5. Device Types (每个厂家等设备都有型号)

  6. Platforms (设备软件平台,比如思科的ios/nxos/ios-xe等)

  7. Device Roles (定义设备角色,比如access/core/aggregate/border等)

  8. Devices (添加设备)

  9. interfaces(在deviceadd component中添加接口)

  10. 添加IP 关联设备接口

  11. 演示效果

配置格式参考:

CI名称类型关键属性关系(本CI → 目标CI)
交易业务线业务线负责人:李四;成本中心:CC-01—
订单服务业务服务负责人:张三;SLA:99.99%RUNS_ON→订单应用;BELONGS_TO→交易业务线;OWNED_BY→张三
订单应用应用版本:v2.3;语言:JavaDEPLOYED_ON→web-server-01;DEPENDS_ON→MySQL主库;DEPENDS_ON→Redis缓存
web-server-01物理服务器Dell R750;32核/128G;IP:10.0.1.10;机房A-机架3-U12CONNECTED_TO→switch-core-01;LOCATED_IN→机房A-机架3-U12
db-server-01物理服务器Dell R750;32核/128G;IP:10.0.1.20;机房A-机架3-U14CONNECTED_TO→switch-core-01;LOCATED_IN→机房A-机架3-U14
MySQL主库数据库实例版本:8.0;端口:3306;数据量:500GRUNS_ON→db-server-01
Redis缓存缓存实例版本:6.2;端口:6379;内存:16G—
switch-core-01交换机华为S5720;管理IP:10.0.0.1;48口BELONGS_TO→vlan-100
vlan-100VLANID:100;网段:10.0.1.0/24—
张三负责人工号:1001;部门:交易研发—

CI 属性:回答“这是什么”——型号、IP、版本、负责人
CI 关系:回答“它和谁有关”——依赖、部署、归属、连接
属性 + 关系:才能回答“出问题影响谁、变更要通知谁”——这才是 CMDB 的核心价值

3.卸载命令

# 如果需要卸载可执行cd~/netbox-dockerdockercompose down-v--remove-orphanscd~rm-rf~/netbox-docker

六、新人避坑指南

坑正确做法
手工录入大量数据从第一天就配好自动发现,手工录入的CMDB几个月内就会腐化
追求“大而全”的字段只录入“不记下来会出问题”的字段,字段越少越好
以“记录设备信息”为目标CMDB的价值在于“被消费”——监控、自动化、工单都要用它
一次性建设后不管CMDB需要持续运营,建立数据质量稽核与待办修复机制

下一步建议:选择一个开源工具(推荐NetBox或iTop),部署体验环境,手动创建5个CI和3条关系,再配置一次自动发现,感受CMDB从“手工台账”到“动态数据源”的价值转变。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询