
先说我见过最多的场景公司资产从几十台涨到几百台之后还在用共享表格管设备领导问“哪台服务器在跑什么业务”三个人回答出三个版本。这时候大家想起来上CMDB搜索“开源CMDB与资产管理平台对比”然后发现开源世界里能做这件事的项目非常多但每个项目的定位、复杂度和后续维护成本天差地别选型成了第一个大坑。这篇文章我准备从实际选型和落地运维的角度把主流的开源CMDB与资产管理平台放在一起做个系统对比。重点不是罗列功能介绍而是讲清楚每个项目到底适合什么场景、部署时有哪些隐藏代价、数据模型是否真的能撑住你的业务需求。适合正在做选型调研的运维工程师、基础设施负责人也适合准备从Excel表格迁移到正规资产平台的中小团队。1. 先别急着选型理清CMDB与资产管理平台的边界1.1 这两个概念到底差在哪很多团队选型踩坑根源是把“资产台账”和“CMDB”混为一谈。资产管理平台的核心对象是“实物资产”侧重记录设备是谁买的、序列号多少、分布在哪里、当前是什么状态、保修什么时候到期。这类系统的价值在于“账实相符”支持采购、领用、归还、报废这些库存生命周期动作。CMDB的核心对象则是“配置项CI”它管的不只是设备本身还包含设备上的软件实例、业务系统、网络链路、虚拟资源以及这些CI之间的关系。一台数据库服务器在资产管理平台里只是“一台型号为R740的物理机”在CMDB里却需要回答它承载了哪个业务系统依赖哪台存储阵列上游哪些应用在连它的443端口上一次变更是什么时候。这两类需求并非互斥但不同开源项目的设计侧重点差异非常大。Snipe-IT、Ralph这类更接近“资产管理平台”蓝鲸CMDB、CMDBuild、iTop则更偏向“配置关系管理”GLPI和NetBox处于两者之间但侧重点又各有不同。先确认你自己要的是“设备台账”还是“配置关系图谱”再谈选型能少走一大半弯路。1.2 我用来衡量开源方案的标准在对比了这么多项目之后我习惯用七个维度去拆解一个开源CMDB避免被官网宣传页带偏。第一是数据模型灵活性。CMDB必须允许你自定义配置项类型、属性字段和关系类型因为每个公司的业务字段都不一样如果模型写死后面每个新场景都要改代码。第二是自动发现和采集接入能力即能否通过Agent、SNMP、云厂商API或OpenAPI方式自动收集资产信息否则所有数据都要靠人工维护系统很快过期。第三是API的完整度做CMDB通常都需要对接监控、工单、发布平台API如果太弱集成成本非常高。第四是权限模型和审计能力配置数据在运维体系里属于核心元数据谁能改、改成什么、什么时候改的必须留痕。第五是UI和易用性一线运维和研发也要用这个系统难用的平台最后一定会被绕过。第六是部署和运维成本包括基础组件、依赖复杂度、升级难度这个往往被低估。第七是社区活跃度和扩展生态直接决定你遇到问题搜不搜得到答案。后面的所有拆解和对比都会围绕这七个维度展开。2. 七个主流开源方案逐个拆解2.1 腾讯蓝鲸CMDB面向中大型企业的“标准答案”蓝鲸CMDB是腾讯开源的一套配置管理平台在技术圈里习惯叫它bk-cmdb。它是目前开源项目里“CMDB味道最正”的一个数据模型采用面向对象设计可以自由定义对象模型、属性、关联关系支持模型分组和模型实例的权限控制。拓扑管理功能很强大能按机房、模块、集群、主机等维度组织资源视图和云资源之间也支持同步比如纳管公有云主机后实例数据可以定期对账。它的优点很突出模型设计灵活适合承载复杂的业务拓扑支持事件推送和Webhook能主动把配置变更推送给外部系统这个能力在做自动化联动时非常有用。但代价也很明显部署架构偏重依赖MongoDB、Redis、Zookeeper等服务生产环境建议至少准备几台配置还不错的服务器单机体验比较受限。社区文档虽然能跑通全套安装但遇到问题多半得结合源码去排查。适合谁用有独立运维研发团队需要把CMDB作为内部运维平台核心元数据中心的公司。它不适合只想找个工具录入资产的小团队杀鸡用牛刀的成本会体现在日常维护上。2.2 iTopITIL流程驱动的老牌选手iTop是Combodo公司维护的开源项目PHPMySQL技术栈历史非常悠久。它的核心卖点并不是“模型多灵活”而是“和ITIL流程结合得深”。iTop自带事件管理、变更管理、服务目录、服务水平协议等模块和配置管理天然打通。比如有人提交一个变更申请涉及哪些配置项这些配置项有没有关联的未关闭事件系统会直接展示出来这对流程审计很友好。iTop的数据模型在传统版本里依赖XML配置文件去定义这也是它最大的坑。改模型的灵活度其实很高但定制起来对新手并不友好需要理解iTop的数据模型语法改完还要处理缓存和扩展包问题。iTop 3.x一直在优化这方面的体验但和现代Web产品相比界面和交互仍然偏“工单系统风格”。如果你所在团队有比较重的ITIL流程需求服务台和配置管理必须绑定使用iTop是一个值得评估的对象。但如果你只想做资产盘点不要碰它流程系统的复杂度会淹没你的真实需求。2.3 CMDBuild数据模型最灵活的技术派CMDBuild也是老牌开源项目基于Java和PostgreSQL构建近年在数据模型自定义方面做得相当深。它可以图形化定义类、属性、域关系还能通过工作流引擎把数据操作包成业务审批流程。对“关系”的组织能力尤其强CI之间的父子关系、依赖关系、网络连接关系都能比较精确地建模。但它的缺点头部也很明显。第一是文档和社区资料相对分散很多内容要翻英文资料第二是UI风格偏传统一线运维同学上手会有“回到十年前”的感觉第三是运维门槛偏高需要维护Java运行环境和PostgreSQL对没有Java基础的小团队来说出了问题排查成本高。CMDBuild适合对数据模型要求非常高、愿意投入研发力量长期定制的团队。如果你的核心诉求是“我要完全掌控配置项的建模逻辑”CMDBuild值得花一周时间做原型验证否则建议先看更轻的选项。2.4 GLPI资产服务台一体化的小钢炮GLPI在IT服务管理和资产管理领域几乎是国际中小企业的标准选项PHPMySQL技术栈部署门槛低社区非常活跃。GLPI 10以后版本在UI上有明显提升不再像老版本那样“远古”。它既管硬件资产、软件许可、合同、供应商又内置工单、知识库、问题管理资产和工单可以联动一台设备报修后能直接看到它关联的所有工单记录。自动发现方面GLPI 10加强了本地库存能力可以安装GLPI Agent在客户端上采集硬件、软件、网络信息回传传统上它也长期和OCS Inventory、FusionInventory等第三方采集器配合使用。API方面提供REST接口和外部系统对接基本够用。GLPI最明显的短板是“配置关系”的建模能力不够深。它更适合描述“有什么设备设备上装了什么软件许可和合同情况如何”但如果要做应用依赖拓扑、跨系统的配置关系图谱会显得力不从心。适合IT团队规模不大、需要把资产工单一体化解决的场景。2.5 Snipe-IT轻量资产台账里的王者Snipe-IT是一个专注“IT资产库存管理”的开源项目用Laravel框架开发界面现代、交互清晰。它支持硬件资产、软件许可、配件、耗材的管理每种资产有独立模型可以定义自定义字段。签入/签出流程、维护记录、审计记录、条形码管理一应俱全CSV导入导出也很方便。对于“我们就是想把资产数和实物对清楚、能快速盘点”的团队来说它可能是见效最快的一个。但注意Snipe-IT本质上不是CMDB。它没有配置项之间的关联和拓扑概念一台服务器上是哪个业务在跑、连了哪台交换机这类关系在Snipe-IT里没有原生模型支持。它也没有ITIL流程模块工单、变更、服务目录这些都不在它的视野内。因此Snipe-IT适合作为“资产台账工具”独立使用尤其适合研发团队内部自管软硬件资源。如果未来明确要建设完整的CMDBSnipe-IT可以作为资产数据底座但关系模型部分还是得另行设计。2.6 NetBox网络设备与IPAM的专用利刃NetBox的诞生背景是网络基础设施自动化由DigitalOcean开源后现在由NetBox Labs维护。它的强项在数据中心基础设施管理DCIM和IP地址管理IPAM机柜、设备、线缆、电源、IP网段、VLAN、VRF都能建立严谨的数据模型和依赖关系。API设计和数据模型完整性在开源界属于顶尖水平同时提供REST API和GraphQL接口非常适合和自动化系统做联动。NetBox不是传统意义上的IT运维CMDB它很少处理业务系统、应用实例这些模型也不太关心工单流程。它的视野聚焦在网络和基础设施资源如果你要做的是机房、网络设备、IP地址的规范化管理NetBox几乎是无出其右的选择。如果业务系统也需要纳入CMDB通常的建议是NetBox管网络资源底座上层再建设业务关系模型或与其他CMDB系统做数据集成。2.7 Ralph与其它值得关注的项目Ralph是Allegro公司开源的数据中心资产管理平台技术栈是PythonDjango主打数据中心资产跟踪和资产财务生命周期。它支持自定义资产类型、机柜和机房管理、REST API当年在某些欧洲互联网公司里用得很不错但目前社区活跃度已经不算高除非你刚好非常认同它的模型设计否则不建议新项目采用。经常被提及的还有RackTables老牌的机柜资产和IP地址管理工具PHP开发胜在简单稳定败在UI过时、功能边界很窄OCS Inventory严格来说不是CMDB而是资产盘点采集器常和GLPI搭配组成“采集管理”的方案。Zabbix、OpenCMDB这类产品历史上也有CMDB模块尝试但多数并不是独立成熟的产品建议按采集工具或监控工具看待不要把CMDB选型寄托在它们的附属模块上。3. 横向对比关键维度的硬碰硬3.1 数据模型与扩展能力数据模型是CMDB类系统的生命力所在也是最容易在选型时看走眼的部分。我把它拆成四个子能力来看能否自定义CI类型、能否自定义属性类型、能否定义关系/拓扑、能否做流程联动。平台自定义CI类型自定义属性关系/拓扑支持流程联动蓝鲸CMDB强面向对象模型强支持多种字段类型强支持实例拓扑强事件推送WebhookiTop中上XML模型定义中上强CI关系原生支持强ITIL流程一体CMDBuild强可视化建模强强域关系建模强内置工作流GLPI中资产类型丰富但偏向固定中上支持自定义字段弱关系模型浅中工单与资产联动Snipe-IT弱资产类型自定义字段中上无原生关系拓扑无NetBox中强设备模型严谨强自定义字段和标签强网络连接/线缆弱无工单体系从实际体验看蓝鲸CMDB、CMDBuild、NetBox的模型开放性是最能打的。GLPI和Snipe-IT更按预设的资产业务模型走适合快速落地但遇到非标准业务对象时就会觉得处处受限。3.2 自动发现机制资产管理最怕数据过期自动发现有三种常见形态Agent采集、网络协议扫描、外部系统API同步。这方面各平台差别巨大。Snipe-IT没有自动发现能力只能通过导表和API录入适合资产量少、变更不频繁的场景。GLPI支持GLPI Agent采集也能对接OCS Inventory、FusionInventory能解决主机端软硬件采集的多数需求。iTop有Discovery相关扩展可做网络扫描和Agent采集但需要仔细研究其组合包和许可边界。蓝鲸CMDB则支持云资源同步、Agent上报和通过OpenAPI批量写入自动发现能力最强但也最依赖配套的采集组件体系。NetBox本身不做自动发现设备接入通常由外部工具通过API录入或同步更依赖你的网络自动化基础设施。我的建议是自动发现不是越强越好关键在于你能投入多少维护成本。Agent采集需要管理Agent生命周期扫描类发现容易误报和产生脏数据外部同步需要统一的数据标准和任务调度。选型时要想清楚“谁来维护这些采集任务”。3.3 API与集成开放度CMDB不能孤立运行它需要为监控系统、工单系统、发布平台提供配置数据也接收外部系统推送的变更事件。API的完整度直接影响集成成本。蓝鲸CMDB的API非常完整支持资源查询、模型管理、事件订阅面向自动化场景的设计思路很清楚。iTop提供REST服务但传统的XML数据模型让部分接口使用起来并不轻松。CMDBuild的REST API覆盖面较广但整体文档风格偏技术型新手需要时间啃。GLPI和Snipe-IT的REST API都是中规中矩的增删改查适合做资产管理和同步但做复杂关系查询时会发现能力不足。NetBox的API是这类项目里体验最好的REST和GraphQL双管齐下过滤、批量操作、变更日志都很完整非常适合自动化工程师使用。选型时不要只看有没有API文档我建议做一次最基础的测试通过API创建一个CI通过API查询某个CI的所有关联关系通过API订阅一条变更事件。三个用例能跑通再往下谈。3.4 部署与运维投入部署难度往往被估低而这恰恰是开源CMDB项目被放弃的最常见原因。平台技术栈核心依赖官方Docker维护难度蓝鲸CMDBGo前端MongoDB、Redis、ZooKeeper、ES等部分组件有高组件多iTopPHPMySQLPHP、MySQL社区方案为主中上CMDBuildJavaPostgreSQLJava环境、PostgreSQL有中上GLPIPHPMySQL/MariaDBPHP扩展、MySQL社区/官方镜像中Snipe-ITPHP(Laravel)MySQLPHP/Composer、MySQL官方镜像提供低NetBoxPython(Django)PostgreSQLRedis、PostgreSQL官方镜像提供中注意GLPI和iTop虽然也是PHP应用但它们的PHP扩展要求、文件权限处理、升级迁移方式都不太一样在生产环境维护时各有各的小毛病。蓝鲸CMDB的依赖组件最多生产部署前请认真估算服务器资源和人力投入不建议在核心业务环境里拿它做快速实验。3.5 社区活跃度与资料完整度判断开源项目能不能长期用不能只看GitHub星星数。我会去看三点最近一年发版频率、Issue回复速度、周边生态插件、博客、招聘需求。GLPI、Snipe-IT、NetBox的国际社区活跃度都很高更新节奏稳定遇到问题在社区里基本能搜到答案。蓝鲸CMDB背靠大型公司文档体系相对完善但生态更偏国内用户社区提问活跃度两极分化核心问题有时依赖官方支持或自己啃源码。iTop是商业化公司维护的开源项目社区版和企业版边界要看清很多好用的功能模块在新版本里逐步企业化选型要用时避免“开源版样板间”和“实际可用”之间的心理落差。CMDBuild社区相对小众资料多数是英文愿意看技术文档的团队可以驾驭。4. 实操亲手把两个有代表性的平台跑起来4.1 验证环境与选择依据在这篇文章里我选择Snipe-IT和GLPI做部署演示。原因是它们分别代表了“轻量资产台账”和“资产服务台一体化”两条路线部署步骤相对可控一台普通虚拟机就能完成验证。蓝鲸CMDB和iTop因为部署架构较重或依赖较多我建议在了解基本概念后另行申请独立环境按官方文档逐步测试不适合在本文的篇幅里完整展开。验证环境我用的是一台2核4G内存的Linux虚拟机装上Docker和Docker Compose系统剩余磁盘空间有20G以上。这个配置跑Snipe-IT完全够用跑GLPI也够但跑蓝鲸CMDB会非常吃力所以后者建议准备4核8G起步。4.2 Snipe-IT部署实录Snipe-IT官方提供Docker镜像用它来做一次快速验证非常合适。先在服务器上建一个目录比如 /opt/snipeit然后准备docker-compose.yml核心内容大致如下services: snipe-mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORDrootpass - MYSQL_DATABASEsnipeit - MYSQL_USERsnipeit - MYSQL_PASSWORDsnipepass volumes: - mysql-data:/var/lib/mysql snipeit: image: snipe/snipe-it ports: - 8080:80 environment: - APP_URLhttp://your-server-ip:8080 - APP_TIMEZONEAsia/Shanghai - DB_DATABASEsnipeit - DB_USERNAMEsnipeit - DB_PASSWORDsnipepass - DB_HOSTsnipe-mysql - APP_KEYbase64:your_app_key depends_on: - snipe-mysql volumes: - snipe-upload:/var/lib/snipeit volumes: mysql-data: snipe-upload:启动之前必须先生成一个APP_KEY否则Laravel应用会直接报错。生成方式用官方推荐命令即可然后填到环境变量里。执行docker compose up -d后等一两分钟浏览器访问http://服务器IP:8080进入安装向导填写数据库连接信息初始化管理员账号整个流程基本一气呵成。初始化完成后我建议不要急着导数据先去“自定义字段”里把需要的资产字段建好比如机柜位置、业务负责人、购买渠道。这个步骤在Snipe-IT里叫Custom Fields可以挂在每个资产模型下面。等字段就绪后再用CSV导入资产成功率会高很多避免后期返工。4.3 GLPI部署实录GLPI的部署推荐用PHP源码方式这样对环境和后续排错更可控。先准备一台安装了Nginx和PHP 8.1以上的机器安装好PHP常用扩展和MySQL数据库。把GLPI发行包下载后解压到 /var/www/glpi然后给PHP-FPM的运行用户授权写权限。接着在MySQL里创建glpi库和专用账号浏览器访问/install/install.php按向导填写数据库连接。安装结束后GLPI会提示删除install目录这个步骤不要跳过。登录后建议先改管理员密码再进入“设置”关闭所有不必要的邮件通知避免测试阶段被通知刷屏。GLPI的库存功能在新版本里已经内置不需要额外插件就能通过GLPI Agent采集资产。Agent安装也很直接在受管机器上执行安装包配置服务器地址和通信密钥就能在GLPI里看到自动上报的主机、软件和网络信息。这个完整链路我建议在选型验证时走一遍因为它直接决定了未来采集方案的可靠性。4.4 用真实数据走一遍资产录入与API调用部署和安装只算完成了三成工作真正检验系统是否适合自己的是数据录入和接口调用。我在对比时习惯准备一批和自身业务贴近的资产样本比如一台物理服务器、一套业务系统、一条网络区域规则然后分别在两个平台里模拟。Snipe-IT的资产录入非常直接创建资产模型填写资产状态录入序列号生成资产标签打印。如果想验证API可以用curl做一次最基础的调用先申请一个API Token再查询资产列表curl -H Authorization: Bearer your_api_token \ -H Accept: application/json \ http://your-server-ip:8080/api/v1/hardware返回的JSON里能看到资产ID、名称、序列号、状态等核心字段。这个能力足以支撑把Snipe-IT接到自己的内部流程里。GLPI的验证重点则是“资产关联工单”。在GLPI里创建一台服务器资产后我建议立刻开一张关联该资产的工单走一遍从“创建-分配-处理-关闭”的流程再回到资产详情页看工单历史。这个闭环体验是GLPI和Snipe-IT的本质差异也是你在选型时必须结合自身业务模拟的测试场景。5. 实测中踩过的坑与避坑建议5.1 蓝鲸CMDB部署重的教训我第一次在2核4G环境里尝试部署蓝鲸CMDB部署脚本跑到一半就因内存不足卡住。后来在4核8G的机器上重新部署才完成但整个过程对依赖版本的敏感程度超出预期升级时还需要单独处理数据库和配置文件的兼容性问题。经验是如果团队没有明确需要蓝鲸CMDB的定制模型和事件推送能力只是在“开源CMDB对比”里看到它名气大就选它大概率会在部署阶段就被劝退。它更适合有专职平台研发维护的场景。测试环境可以按官方文档申请一台独立虚拟机千万别跟生产业务混部。5.2 iTop模型定制隐藏坑iTop的模型定制和大多数现代Web应用不一样需要理解它的数据模型XML语法。我见过有同事直接改核心配置文件结果升级时被新版文件覆盖所有自定义全部丢失。后来改成基于扩展包方式做定制才解决了升级兼容问题。如果你决定用iTop从第一天起就按扩展包的模式组织定制不要把自定义逻辑写进核心文件。这是社区里反复强调的教训。5.3 Snipe-IT与GLPI的常见烦恼Snipe-IT的CSV导入是我印象比较深的一个点。它支持自定义字段映射但日期格式和枚举字段值必须和系统设置完全一致否则容易静默失败或产生错误数据。另一个常见问题是资产标签打印字体和条码格式需要花时间调反倒数据录入本身没什么大坑。GLPI的认知成本则集中在权限体系上。它的权限模型非常细实体、配置项、工单、插件各有各的权限维度新人很容易把自己关在门外。我们当时给普通运维同事开完权限后他发现自己看不到工单详情排查了半天才发现是“继承设置”没有被加上。所以GLPI上线时建议把权限配置的检查列成一条专项任务。5.4 无论选哪个都适用的避坑清单坑后果建议先录入数据后设计模型字段对不上返工成本极高先花一周梳理CI模型和属性没有指定数据负责人数据过期后没人发现每个CI类型必须有owner自动发现任务无人维护Agent失联、漏采没人管建立采集任务巡检机制忽略API权限控制配置数据被误删最小化API Token权限加审计不做定期备份恢复演练平台崩溃后数据丢失至少每周备份每月演练恢复选型只看功能不看升级路线自定义被新版覆盖所有定制基于扩展机制避免改核心6. 选型建议直接告诉你怎么选6.1 按场景给出结论场景推荐方案核心原因中小团队管IT资产先解决“账实相符”Snipe-IT轻量、上手快、有API中小企业同时需要资产工单一体化GLPI部署简单资产和流程能联动企业ITIL流程成熟要求流程与配置强绑定iTopITIL流程体系最完整有运维研发团队面向自动化平台建设蓝鲸CMDB模型灵活事件推送能力强需要深度自定义模型的“模型控”团队CMDBuild数据建模能力最强网络设备和机房管理为主NetBoxDCIMIPAM模型最严谨数据中心资产审计与财务生命周期RalphDC资产管理定位明确6.2 我的实际体会把这么多开源项目部署一遍之后我最深的体会是选型不是找“最强大”的系统而是找“数据能一直有人维护”的系统。再强大的CMDB如果录入靠激情、维护靠义务、跨部门协作没有制度三个月后就是另一张没人看的Excel表格。所以我会建议你选型时把“谁负责日常维护”“哪些数据必须保真”“多久做一次盘点审计”这三个问题回答好再套用上面的场景表选择合适的工具。不要追求一步到位先用一两个核心场景跑通比如先管理服务器资产跑通API对接监控系统再逐步扩展网络设备、软件许可、业务系统这样的路线成功率最高。最后有个小技巧正式采购或大规模部署前挑两台真实设备、一百条真实资产数据在候选平台里各跑两周。两周后看看哪套系统的数据还是准的、哪套已经被团队遗忘答案自然会浮现出来。选CMDB不是选软件是选一种能持续维护配置数据的协作方式。