CMDB的基础知识

  • Post author:
  • Post category:其他


CMDB是Configuration Management Database的简称,中文翻译成配置管理数据库。

只是这样的解释,一般人很难理解CMDB到底是一个什么东西,其真实情况是,每个人理解的CMDB可能都有所差异。用不着惊讶,CMDB本质上是一个数据库,存什么东西,当然是因人而异的。和计算机术语中“数据库”的差别是,CMDB不仅包含真实的数据库,而且隐含了管理者对资源的抽象和建模的逻辑。每个管理者所处环境不同,所以他所管理的资源的类型,数量和关系也不同,因此就不难理解,为什么市面上没有一款CMDB产品能够适应大部分场景。因此,自研CMDB的需求,也就愈发明显。

运维认为的CMDB

运维人员的工作内容,更注重于业务的发布和运行,因此,CMDB中至少需要管理的有:主机、IP、端口、应用和域名。如果使用了Kubernetes集群,还要关注Kubernetes集群资源。

如无特殊说明,以下讨论的CMDB都指运维认为的CMDB

CMDB中资源管理的原则

基础性

存储到CMDB中的资源,应是最基础的资源。

由于使用CMDB的人员大多隶属运维或基础设施部门,因此,CMDB中不应该存储抽象层很高或者较复杂的的资源。一来是用不到,二来是这会让CMDB的设计过于复杂,第三个是难以维护数据。

CMDB中可以存储的资源有:服务器、人员、应用、域名等。

不建议存储的资源:公司组织结构、业务调用逻辑等。

另外,基础性的解释,还可以用于调用关系。CMDB应该提供基础资源服务接口,并被另外的工具所调用,尽量不或者少调用其他基础服务,不能主动调用中、高级服务,避免环形调用出现调用循环问题。

权威性

存储到CMDB中的数据,应该是最准确的,这样一来,建立了权威性之后,才拥有了对CMDB的运营推动能力。

一旦CMDB中的数据并非最准确的,那么用户就会考虑通过其他渠道获取数据,甚至是自行维护一套数据,这样一来,CMDB就失去了存在的意义。

完整性

考虑权威性之后,还要考虑完整性。虽然CMDB中的数据是准确的,但是一旦数据的覆盖面不够全,也会导致使用的时候出现问题。

例如,当我在CMDB中查找一台IP地址为10.0.0.1的服务器时,没有查找到。如果CMDB中服务器数据是完整的,那么我可以认为不存在这样一台服务器;反之,我还要通过其他渠道来核实是否真的不存在这样一台服务器,效率下降明显。

CMDB应该有什么功能

资源管理功能

简单的来说,就是资源的增删查改功能,这是必须的基础功能。

资源关系梳理

不同资源不是孤立存在的,相互之间存在一定的关系。

比如说一条服务器资源数据,有一个字段是其负责人,这个负责人就是人员资源的一条数据。

特殊情况下,同一种资源之间也存在关系,例如人员资源,可以有上下级关系,如果要维护这个关系,就需要对其关系进行梳理和存储。

对外提供数据服务

CMDB建立之初,需要管理员维护数据。当数据维护达到权威性和完整性的标准之后,就具备了对外提供服务的能力。

常规对外提供服务的方式可以有:

  1. 开发Web界面,对真实用户提供服务
  2. 开发标准API接口,对第三方工具提供服务

CMDB不应该有哪些功能

工单流程管理

工单流程管理是一种流程管理手段,通过提交工单,逐级审批的方式,实现流程的流转,并可以提供回调Hook来自动执行某些操作。

这样一个工单流程管理的功能,不仅需要对工单流程有详尽的了解,还需要对每个流程进行定制。实际上这样的一个功能不属于资源管理的范畴,徒增了项目的复杂度,还会导致定位不清晰。

数据版本管理

数据版本管理一般要求存储数据的历史版本和变更信息,并利用这些信息进行版本管理。而CMDB的数据管理原则要求了权威性和完整性,存储历史版本的需求不大,徒增复杂性。

CMDB可用于那些服务和流程

监控管理

使用CMDB我们可以获得完整的主机列表,并对这些主机进行监控。

发布管理

使用CMDB和监控我们可以选择在合适的主机发布应用

批量执行

使用CMDB我们可以有的放矢地进行批量操作