使用第一性原理,重塑CMDB!

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 每篇文章都有缘分,本篇也不例外,源于和运维圈内好友,讨论为什么CMDB永远是“不败”的热门话题,每隔几年就会被提及,而且为什么经常看到CMDB失败分析的各类文章。我会在下面内容中解答。

​本文缘起

每篇文章都有缘分,本篇也不例外,源于和运维圈内好友,讨论为什么CMDB永远是“不败”的热门话题,每隔几年就会被提及,而且为什么经常看到CMDB失败分析的各类文章。我会在下面内容中解答。

CMDB基础知识

CMDB(Configuration Management Database)配置管理数据库,它包含了一个组织的IT服务使用的信息系统组件的所有相关信息以及这些组件之间的关系。CMDB源自于《ITIL V3》服务转换过程域中的“服务资产与配置管理”。

CMDB是配置管理的核心,更是自动化运维的基石,它为所有运维工具提供基础数据支持,支撑不同的运维场景,CMDB建设直接影响到其他运维工具系统的连通性和数据一致性。

名词解释:

配置项CI(Configuration Item):例如物理机、交换机、路由器、虚拟机、MySQL、Redis、Tomcat这些资源都可以称之为一个CI。

CI模型:每一个CI都需要有自己的模型,可以理解为一个关系型数据库中的表。CI模型由CI属性组成。

CI属性:CI属性可以理解为表中的字段,例如虚拟机这个CI,有以下属性:IP地址、主机名、CPU、内存、创建时间、操作系统等。

CI属性类型:每个CI属性都有其数据类型,可以理解为表中的字段类型。例如MySQL中的字段类型有VARCHAR、INT、TIME、DATE,CI属性类型可以有字符串、整数、下拉菜单、浮点数等等。

CI实例:一个具体的资源对象,称之为CI实例,例如mysql-node1这个MySQL数据库。

为什么CMDB不长久?

有一些文章写的是为什么CMDB总是失败,注意,我这里将“失败”替换为“不长久”,因为其实很多企业的CMDB建设都是成功的,在交付的1~2年可能都是成功的,但是时间长了,感情淡了,相爱的两个人也就远了,貌似跑题了,是因为你建设的可能是一个“静态”的CMDB。

静态CMDB:仅仅是资产、资源的一个集中管理的数据库,依赖于人工维护,即便有自动采集和自动比对,也无法解决数据不准确的问题。这样的CMDB是静态的,是死的,是没有灵魂的...。

动态CMDB:在静态CMDB的基础上,CMDB可以和其它运维系统如监控、作业进行紧密的结合,CMDB可以与具体的运维流程进行配合,可以由具体的场景驱动CMDB的数据CRUD。这样的CMDB是动态的,是活的,是具有生命力的...。

动态的CMDB为什么也不长久?

有很多的企业的CMDB是有生命力的动态的CMDB,但是为什么依然还是不长久,原因也有很多。而且都是多方面的原因,我只能列举一个单独的例子,例如如果设计的CMDB中CI之间的关系存在下面这些:运行在、放置在、依赖于、连接在、从属于。这可能就会不长久,有人会问为什么?传统的CMDB不都是这么设计的吗?

现在你眼睛离开手机,想一下,虚拟机和物理机是什么关系,从以上关系中选择一个作为你自己的答案。

你的答案是:__________________

然后你也可以问问周边的同事,你会发现,上面的所有关系,貌似都能说的通。我在400多人的微信群里做过调研,有近100多选择了从属于、还有100多选择了运行在,而且还有很多人选择了放置在、依赖于和连接在,而且他们选择的理由我竟然无法100%反驳,例如我个人就认为“放置在”不合适,但是虚拟机放置在物理机上,也不能算就一定是错的。我相信你自己也找到了答案,就算是你的CMDB供应商为此专门进行培训,输入产品设计时的关系定义,但是只要有人员变动,或者有新的CI加入,没有经过培训的人就无法正确的使用CMDB。所以你会看到这种说法:CMDB本身并没有错,错的是使用者?至少我不这么认为!

多年来不同的企业都在尝试解决这些问题(上面只是一个例子),但是如果是建立在现有的解决方案上面的改进,还是不能有效的解决这些问题,也许【第一性原理】可以帮到我们,我带着大家一起来尝试一下。

什么是第一性原理?

请注意,前三个字需要连起来读。第一性原理是一个哲学上的概念,它的首创者是亚里士多德,之所以被大众所熟悉是因为SpaceX、特斯拉公司CEO埃隆·马斯克(Elon Musk)在参加一次TED演讲时,主持人问他,为什么你在不同的领域都能够取得成功?他说可能是我掌握了第一性原理吧。

用最通俗的话来解释什么是第一性原理,就是在当前事物设计和创新中,我们会习惯于站在前人的肩膀上,通过比较思维去思考问题,在别人已经做过的基础上进行迭代发展。而第一性原理告诉我们,需要用物理学的角度看待事物,透过表象看到本质,然后在从本质一层一层往上走。

针对第一性原理在CMDB中的实践,通俗的理解就是,我们不需要关心之前互联网前辈们的CMDB是如何设计的,别人的解决方案是什么,也不要参考或者在已有的解决方案之上的修改或者创新,而是从CMDB的本质上进行思考如何解决这些问题,这样就有可能会有新的,真正“正确”的解决方案。注意只是有可能,尝试总会遇到各种失败,但是不尝试,永远不可能有创新。

由于篇幅问题,我下面通过两个CMDB设计中两个具体的案例来阐述第一性原理的使用。
1.如何设计CMDB中关系

毋庸置疑,在CMDB中,CI和CI的关系可能会像下面这样,是一个非常复杂的关系,有的企业在尝试使用图数据库来存储CI和CI之间的关系,因为本质上CI和CI之间的关系就是一个图,但是这并不能说明解决了CI之间的关系问题,因为如果呈现给用户是下面这样一个CMDB关系,我相信用户除了赞叹一声:「我靠,真牛掰」之外,会接着打开他的EXCEL表进行资源的管理维护。

从CMDB的CI与CI的本质上讲,他们是连接在一起的,属于那种剪不断理还乱的关系。可以从人类世界来考虑关系,例如人有父母,有朋友。我就在想是不是所有的CI都应该有一个父亲,例如虚拟机,它的父亲是物理机,物理机的父亲是机柜,机柜的父亲是机房。那么这就组成一个树,树形关系应该是存在于所有工程师的认知里,例如DNS就是一个树,我们的Linux文件系统也是一个树形结构,甚至每天常用的Xshell工具,我也习惯使用树视图。

我把CMDB的关系分为两种关系,父子关系和连接关系,如何区分呢?

父子关系:当两个CI在逻辑上有强依赖关系的都称之为父子关系。例如虚拟机的父亲是物理机,因为虚拟机不可能凭空创造出来。父子关系大概可以表达CMDB中80%的关系。

连接关系:除了父子之外其它的所有关系都称之为连接关系,例如物理机和交换机,他们之间没有强依赖,这就是连接关系。例如交换机和工程师张三,也是连接关系,张三可能是交换机的负责人。这就像你把所有除了父母之外的关系都称之为朋友。

关系标签:通过上面的拆分之后,CI和CI之间的关系就只有两种了,但是你会发现很多CI之间的关系都是连接,如何快速的寻找到某种类型或者某种意义上的关系呢,答案是通过给关系打标签。例如微信通讯录上就有标签的功能,通过标签你可以给你的朋友进行分类,例如我的微信通讯录会有(同事、好朋友、铁哥们、能喝酒的、合作伙伴、老领导、战友)等非常多的标签,那么通过标签你就可以给CI之间的连接关系进行标记,例如物理机和交换机的连接关系叫做网络连接,物理机和员工之间的联系关系叫做管理连接,A服务和B服务之间的连接关系叫做服务调用等等。

虚拟CI:当然这里面还有非常多设计的小细节,例如MySQL可以运行在容器、虚拟机、物理机、云主机等CI上,也就是说MySQL可能会有了多个父亲,但是MySQL和虚拟机之间的关系确实是父子,因为有强依赖,连接关系不合适这种非常特殊的情况。这里我引入了“虚拟CI”的概念。例如【主机】就是一个虚拟的CI,在实际的模型之间的关系设计中,MySQL的父CI是【主机】,这样在数据录入的时候,你可以从虚拟CI【主机】的物理CI(物理机、虚拟机、云主机、容器)中选择一个实例作为MySQL的运行主机。

2.如何设计CMDB中的CI属性

CMDB中CI的属性可以理解为表中的字段,就像一个人,他有姓名、身份证号、性别、身高、体重。我把CI的属性总体分为三个类别。

普通属性:就是手工录入或者自动采集的CI属性,不需要动态修改的CI的基本信息。例如姓名、身份证号等,普通属性的修改可能就会涉及到走变更流程,就像如果想修改身份证上的姓名,也需要有一个非常复杂的流程。

关系属性:父子关系、连接关系、无关系。关系也使用CI属性来进行表达。其中这里的无关系是指两个CI模型之间进行一个引用,但是并没有具体的关系。

动态属性:动态变化的,需要依赖于其它系统进行更新,而不是手工维护的。例如一个主机有一个字段叫做【运行状态】,这个属性就应该是动态的,不需要人工维护,而且通过监控平台实时的进行状态的更新。

3.如何构建可以持久的CMDB?

这是一个比较大的话题,从实践中我总结了一个CMDB的3C建设方法:

Core:核心,首先需要建立一个以CMDB为核心的一个完整的,可以自动采集和定期做数据校验的一个静态的CMDB。

Connection:连接,把CMDB的数据消费起来,要使用它,不仅仅是简单的搜索和查询,而且要通过CMDB把自动化运维的不同工具链打通,连接起来。通过不同的场景来消费CMDB。

Closed-Loop:闭环,在连接的基础上,还需要形成数据闭环,保证CMDB中的一个资源对象完整的生命周期的管理,同时也可以反推其它系统进行流程化的完善。

CMDB的话题太大,所以即便写了3000多字,依然觉得有点少,今天先到这里,夜深了,回头再续。

世间多少纷扰事,浮华落尽总随风。

相关文章
|
9月前
|
数据采集 测试技术 BI
数据治理工作的8种推进套路
数据治理工作的8种推进套路
|
9月前
|
数据采集 监控 安全
数据治理工作的8种推进套路(下)
数据治理工作的8种推进套路(下)
数据治理工作的8种推进套路(下)
|
10月前
学习总结(人不成熟的五大特征、时间管理法)
学习总结(人不成熟的五大特征、时间管理法)
62 0
|
12月前
|
数据采集 新金融
《未来保险 新金融时代》——二、保险科技的第一性原理——特征 9:中台为“骨”
《未来保险 新金融时代》——二、保险科技的第一性原理——特征 9:中台为“骨”
71 0
数据治理的本质:体系化建模(1)
数据治理的本质:体系化建模
121 0
|
SQL 数据建模 BI
数据治理的本质:体系化建模(2)
数据治理的本质:体系化建模
|
索引
深度解析:元宇宙养殖农业DAPP系统开发逻辑详细方案
深度解析:元宇宙养殖农业DAPP系统开发逻辑详细方案
|
存储 搜索推荐 数据可视化
谈谈数据中台数据分层建模和数据指标体系建设
数据资产是数据管理和应用领域经常被提到的概念,数据中台的目的就是将数据转变为数据资产。
谈谈数据中台数据分层建模和数据指标体系建设
|
数据采集 供应链 数据管理
统一数据的认识三观 发挥数据的核心价值
数据治理是长期、复杂的工程,绝非一个部门的事情,更应该从董、监、高治理层建立组织、赋予职责。
统一数据的认识三观 发挥数据的核心价值
|
存储 监控 安全
【组装式架构设计】“有机”架构思维的探寻-交付那些事
软件架构本身是一个宏大的概念或命题,但历经过往种种,开始有些思考在脑海中,挥之不去,在此整理出来,和大家一道探寻,这是一篇关于“类比”的探寻。
513 0
【组装式架构设计】“有机”架构思维的探寻-交付那些事