CMDB

术语

CI(配置项)

  • 配置管理解决方案(如CMDB)中的基本有形或无形实体。
  • 为了交付IT服务而需要管理的任何组件。
  • 通常包括IT服务、硬件、软件、架构、人员和正式文档(如流程文档和sla).

CMDB(配置管理数据库)

  • 一个用于存储配置记录的数据库。配置管理系统维护一个或多个CMDBs,并且每个CMDB存储CI的属性以及与其他CI的关系。
  • 通常使用标准数据库技术实现,通常将CI生命周期数据作为记录(或配置记录)持久化到该数据库中。
  • 配置记录是根据IT环境的一些数据或信息模型进行管理的。

CMS(配置管理系统)

  • 用于管理IT服务提供商配置数据的一组工具和数据库。
  • 还包括事件、问题、已知错误、更改和发布的信息;并可能包含有关员工、供应商、地点、业务单位、客户和用户的数据。
  • 配置管理系统被假定为cmdb和其他管理数据存储库的联合。

configuration record(配置记录)

  • 记录配置项的详细信息,每个配置记录记录了单个CI的生命周期,配置记录存储在配置管理数据库中。
  • 多个配置记录可能与一个给定的CI相关联。配置记录通常来自不同的数据源,或者记录CI生命周期中的不同点。
  • 与单个CI关联的配置记录可能包含看起来相互矛盾并需要中介的数据。

federated CMDB(联合CMDB)

  • 多个管理数据存储库(mdr)的组合,至少其中一个将其他存储库联合起来,形成管理数据的聚合视图。

federation(邦联)

  • 将来自管理数据存储库(mdr)的信息组合成可以以一致的方式查询的单一表示的过程。
  • 通常与提取、转换和加载系统(ETL)相对,ETL系统将数据从一个存储库传输到另一个存储库。
  • 该规范不排除ETL活动,特别是缓存活动。

graph(graph)

  • 一种数据结构,特别是抽象数据类型,由一组节点和一组边组成,这些边在节点之间建立关系(连接或链接)。
  • 在本规范中,节点是项,边是关系。

ITIL(信息技术基础设施库)

  • 交付IT服务的最佳实践框架。

MDR(管理数据存储库)

  • MDR提供了关于管理资源(例如,计算机系统、应用软件和建筑物)、流程工件(例如,事件记录和更改表单的请求)以及它们之间关系的数据。
  • 在此体系结构中,管理的资源和过程工件都称为“项”。MDR获取数据的方法没有指定,但是方法可以包括直接从仪器化资源或通过管理工具间接获取数据。
  • 每个MDR都有一个ID,该ID(至少)在一组联合MDR中是唯一的,最好是全局唯一的。

Client(客户端)

  • 客户端是管理数据的使用者,可以直接访问MDR,也可以通过访问联合CMDB的聚合视图。
  • 客户端包括IT流程工作流、管理工具和IT管理员。
  • 客户端只读取数据;客户端无法通过此体系结构中定义的接口更新数据。

Administrator(管理员)

  • 管理员配置mdr和联合cmdb,使它们能够相互交互。
  • 管理员包括选择和指定联合的数据、描述服务端点以及描述通过每个端点管理哪些数据。
  • 管理是使用在此体系结构中未定义的接口完成的,这可能特定于扮演MDR或联合CMDB角色的每个工具。

SACM(服务、资产、配置管理)

SLA(服务水平协议)

WSDL(Web服务定义语言)

体系

角色

  • MDR
  • federated CMDB
  • client
  • administrator

服务

查询服务(提供查询数据的接口)

  • mdr和联合cmdb都可以实现查询服务,使数据对客户端可用。
  • 查询可以选择并返回项、关系,或者包含项和关系的图,以及与每个项和关系相关联的数据记录。
  • MDR或联合CMDB可以声明其查询服务支持的数据记录类型。

注册服务(提供上传数据的接口)

  • 联合CMDB可以实现注册服务。
  • MDR可以调用注册服务(Registration Service)来注册它可以用于联合的数据。
  • 联合CMDB可以声明其注册服务支持的数据类型。MDR将其数据映射到受支持的类型。

模式

push(上传)

  • 在push模式下,MDR发起联合。
  • 通常,管理员通过选择联合MDR和注册服务都支持的一些数据类型来配置MDR。
  • 每当添加、更新或删除此数据时,MDR都会通知注册服务。根据数据类型的范围,注册的数据可能限于标识数据,或者可能包括描述项或关系状态的其他属性。

pull(拉取)

  • 在pull模式下,联合CMDB启动federation。通常,管理员通过选择将被联合的MDR数据类型来配置联合CMDB。
  • 联邦CMDB查询mdr以获取该数据的实例。
  • 根据实现的不同,联邦CMDB可能在不维护任何状态的情况下将查询传递给MDR,或者它可能缓存一些MDR数据集,例如用于标识项目和关系的数据。

基于模式的角色服务实现要求

基于push模式

  • MDR实现注册服务的客户端
  • 联合CMDB需要实现注册服务,和数据查询服务

基于pull模式

  • MDR实现查询服务
  • 联合CMDB需要实现查询服务的客户端,和数据查询服务

Identity Reconciliation

根据管理视角的不同,管理资源通常以多种方式标识。

管理透视图的例子是变更管理过程和可用性监视工具。

理解如何识别资源,并跨多个透视图协调标识符,是联合CMDB的一个重要功能。

以下模式通常用于身份协调:

每个MDR基于资源的一个或多个标识属性标识资源。标识属性是区分资源的唯一实例的物理或逻辑属性。例如MAC地址、主机名和序列号。

通常,需要多个属性来惟一地区分一个资源,特别是在信息不完整的情况下。

此外,当两个或多个mdr包含关于单个资源的数据时,各个mdr可以选择或具有可用的不同标识属性,它们可以在它们的资源标识符中用于项目或关系。

每个MDR至少知道一个惟一的、明确的标识符,用于它包含的每个条目或关系,或通过Query Service提供对它们的访问。

联合CMDB试图协调来自每个MDR的项和关系标识信息,识别它们何时引用相同的项或关系。

联邦CMDB使用任何自动分析和手动输入的组合来执行这个身份映射。

在一个典型的实现中,联邦CMDB分析标识属性以确定资源标识。在注册每个项目或关系时,服务确定该项目或关系是已经注册的还是新的。

标识的确定很少是绝对的,经常必须依赖启发式,因为不同的mdr通常知道一个实体的不同特征,从而建立不同的标识属性集,以描述它们处理的实体的特征。

而且,随着系统的发展,发现额外的信息以及mdr添加、减去或更改标识属性时,确定可能会发生变化。

数据元素概述

MDR或联合CMDB中包含的数据是一个图,其中item是节点,关系是链接。

图不一定是连通的。(换句话说,从一个项目到另一个项目可能没有关系线索。)

查询接口允许查询构建基于图的方面(例如,存在两个项目之间的关系)和基于项目的属性和关系(例如,要求某些特定记录的属性值或某种类型的项目和关系)。

item表示一个管理的资源(例如,计算机系统、应用软件和建筑物)或一个过程工件(例如,事件记录和变更表单的请求)。

根据这个定义,“项目”是ITIL中定义的“配置项目”术语的超集。形式上:

  • 每个item应至少有一个ID,该ID在包含该项目的MDR范围内是唯一的,并充当密钥。
  • 将ID分配给项目后,可以在任何需要ID的情况下使用它。
  • 当一个ID被分配给item后, 它不能再指向别的东西。
  • item的实例ID是由唯一的MDR ID和唯一的item ID的组合,它在整个联合CMDB中都应该是唯一的。

存储库ID作为实例ID的一部分,客户端可以根据其中的存储库ID来获取整个存储库的查询服务地址。

比如,MDR ID可能是包含每个MDR的服务地址的注册表中的键。然后客户端可以向这个地址发出一个查询,以检索该项的表示。

关系

  • 关系表示从源项到目标项的连接。

    软件“运行”在一个操作系统上,一个操作系统是“安装”在计算机系统上,一个事件记录“影响”计算机系统,服务“使用”(另一个)服务。

关系有以下特点:

  • 关系正好链接两个项,一个是源,一个是目标,并提供与该关系相关的信息。
  • 关系是项的子类(尽管关系XML模式没有正式扩展项XML模式),并且具有项的所有特征。

一段关系的两端是不相等的。在一般情况下,这些端点上的项在关系中扮演不同的角色。

一些关系可能没有任何这样的语义区别,因为它们是对称的(例如。“兄弟姐妹”),但这不是一般情况。

将“雇主”与“雇员”联系起来的“雇佣”关系就是一般情况下的一个例子。

记录

记录包含描述项或关系的属性。

记录的特点
  • 一个记录只与一个项目或关系相关联。
  • 一个记录可能包含对识别项或关系有用的属性,或者它可能包含描述项或关系的其他属性。
  • 几个记录(可能是不同类型的)可能与同一项或关系相关联。

由于各种原因,记录可能与其他记录不同,包括数据类型(例如,资产与配置)、来自不同提供者的不同属性集、不同版本,以及预期与观察到的数据。

记录类似于SQL视图中的一行。它是属性的投影。相同的属性可以出现在同一项或关系的多个记录中。

记录可能没有属性,在这种情况下,它可以用作标记。

描述记录本身的元数据属性
  • 唯一的ID(在其关联的项或关系的范围内),并充当键(如果该项或关系只有一条记录,则是可选的)
  • 上次修改记录的日期/时间(可选)
  • 一个基线ID,可以用来指示这个记录所代表的(可选的)预期的(授权的)配置基线
  • 一个快照ID,可以用来指示该记录所代表的配置观察(可选)
  • 可扩展性元素:还可能包括规范未定义的其他元数据元素

每个记录只有一个“记录类型”。请注意,一个记录类型可以扩展一个或多个其他记录类型,如8.2.2.3中所描述的。

记录类型
  • 对一项或一种关系的描述。
  • 可用于描述项或关系的属性集合。属性可以是简单的或复杂的XML元素。
  • 可以在查询中使用记录类型,将查询操作返回的项或关系限制为查询服务认为属于请求类型的记录的实例。

记录类型也可以是查询响应中记录元素第一个子元素的QName。

常见数据元素类型

cmdbf : MdrScopedIdType用于多个地方来标识项或关系。

它是描述这里是为了方便起见,以便本文档的其他部分可以引用它,而不必重复定义。

cmdbf : MdrScopedIdType由一对uri组成。

第一个URI mdrId;是MDR的ID。第二个URI localId;是唯一标识MDR中的实例的ID。

这两个uri的组合以全局唯一的方式标识实例。这两个uri不能被取消引用。

每个记录元素只有一个无限制内容的子元素(通常用于描述与记录相关联的项或关系),后面跟着一个可选的(如果只有一个记录与项目或关系相关联)recordMetadata元素,它包含关于记录本身的公共信息。

查询服务

概述

查询服务可以由mdr和联合cmdb提供(参见第18页的表1 -服务使用模式)。它提供了一种访问提供者(MDR或联合CMDB)有权访问的项和关系的方法,无论该提供者实际持有数据还是联合数据源。Query Service包含一个GraphQuery操作,可以用于从简单的实例查询到复杂得多的拓扑查询的任何事情。

GraphQuery请求以图形的形式描述感兴趣的项和关系。约束可以应用于该图中的节点(项)和边(关系),以进一步细化它们。GraphQuery响应包含项目和关系,这些项目和关系通过组合组成满足查询中图形约束的图形。

后面的子句为GraphQuery操作提供了对请求和响应消息的更完整的描述。例子见附件D。

GraphQuery操作大纲

GraphQuery请求由 query 元素组成,该元素包含 itemTemplate 和 relationshipTemplate 元素。

可以在 ItemTemplate 或 RelationshipTemplate 元素中使用内容选择器和约束,并且在这两个元素中具有相同的形式。

除了约束之外, relationshipTemplate 元素也包含了一个 sourceTemplate 元素和一个 targetTemplate 元素. 这些元素分别指向(使用xs:ID/xs:IDREF机制)到 ItemTemplate。

GraphQuery请求的有效负载的伪模式如下:



<itemTemplate id="xs:ID" suppressFromResult="xs:boolean" ?>

(<contentSelector ...>... ?

... ?



<recordType ... /> *

<propertyValue ...>... *

... ?

*)

xs:any

*

<relationshipTemplate id="xs:ID" suppressFromResult="xs:boolean" ?>

(<contentSelector ...>... ?

... ?



... *

... *

... ?

*)

<sourceTemplate ref="xs:IDREF" minimum="xs:int"?

maximum="xs:int"?/> ?

<targetTemplate ref="xs:IDREF" minimum="xs:int"?

maximum="xs:int"?/> ?

<depthLimit ... /> ?

xs:any

*

每个约束元素的语法和语义将在后面的子句中提供(instanceIdConstraint参见6.4.1,propertyValue参见6.4.2.2,recordType参见6.4.2.1,xpathConstraint参见6.4.2.3)。对项或关系的约束求值将返回一个布尔表达式。如果布尔表达式的值为true,则该项或关系被认为满足定义的约束。

模板用于识别要在图响应中返回的匹配项和关系。

可选的" suppressFromResult "属性,如果出现并设置为true,表示与携带该属性的模板对应的项或关系应该从结果中删除。

将此属性设置为true的模板仍然有意义,因为它可以帮助约束查询中的其他模板。例如,为了检索与应用程序“foo”有“dependsOn”关系的所有项,查询可以将“foo”项的模板和“dependsOn”关系的模板的这个属性设置为true,但不能将“foo”所依赖的项的模板设置为true。只有后一项才会出现在响应中。

如果模板上不存在" suppressFromResult "属性或设置为false,则在查询结果中返回此模板的所有选中实例。

项模板

关系模板

内容选择

约束

XPath表达式和规范化

GraphQuery响应

GraphQuery错误

注册服务

概述

注册

取消注册

服务元数据

概述

公共服务元数据元素

查询服务元数据

注册服务元数据

附录

参考

CMDB 相关的更多相关文章

  1. CMDB反思1

    由于,基本已经完成一期的功能开发,所以要继续CMDB的开发工作了. 最近看了不少CMDB相关的文章,也思考了不少,后面将所思所想(比较浅)记录一下. 发现很多内容都记录在Wiz上,抽空整理到博客中. ...

  2. CMDB项目开发

    CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧 ...

  3. 浅谈中大型企业CMDB的建设

    作者:嘉维蓝鲸产品总监,贺勇 针对CMDB这个主题,之前一直想写一篇文章来表达我的看法,但是之前一直不敢写,为什么?因为CMDB这个主题属于一提大家都懂,但是深入讨论大家都晕菜的一个话题:在2018年 ...

  4. Python学习进程

    1周第1天 主要是变量的学习(11月8日) 1.1 python安装(win和linux下)1.2 ipython安装及使用1.3 变量的定义1.4 变量赋值1.5 运算符(赋值.算术.关系.逻辑)1 ...

  5. CMDBuild部署教程

    一.CMDBuild简介 CMDBuild是一个通过Web界面配置的CMDB系统.可以通过Web界面来进行建模.创建资产数据库,并处理相关的工作流程.CMDBuild可用于集中管理数据库模块和外部应用 ...

  6. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  7. CMDB服务器管理系统【s5day91】:资产采集相关问题

    资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...

  8. Python之路【第二十二篇】CMDB项目

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  9. Python学习路程CMDB

    本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...

  10. CMDB属性及分类问题思考

    定义的烦恼 在某一次系统监控的讨论会议上,我随便提出了个问题:“如何定义一个系统?”,结果答案就五花八门起来了,会议也跑题了. 为什么问这个问题,是因为某些同事觉得某个系统比较大,就往下分为子系统.组 ...

随机推荐

  1. 进程间通信WebSocket 服务端未启动时,客户端重连报错

    当WebSocket服务端未启动时,我们在客户端申请连接,会报 System.Net.Sockets.SocketException 异常. 当然,我们调试时异常设置默认是不勾选这个的.所以不影响正常 ...

  2. YOLO4论文中文版

    文章目录 YOLO4论文中文版 摘要 1.介绍 2.相关工作 2.1.目标检测模型 2.2.Bag of freebies 2.3.Bag of specials 3.方法 3.1.架构选择 3.2. ...

  3. Bing的AI聊天使用体验

    Bing开启了AI聊天功能,我们这里做一个简单的测评,看看各种AI是否达到预期效果. PS:没有"魔法"的各位就不用看下去了 1.登陆 打开edge,遇到的第一个问题就是,使用&q ...

  4. 金三银四好像消失了,IT行业何时复苏!

    疫情时候不敢离职,以为熬过来疫情了,行情会好一些,可是疫情结束了,反而行情更差了, 这是要哪样 我心中不由一万个 草泥 路过 我心中不惊有了很多疑惑和感叹 接着上一篇 一个28岁程序员入行自述和感受 ...

  5. 2022-03-23:在k进制下,最小多小的num,可以让1~num范围的数拥有1的个数不少于n个? 腾讯音乐2022校园招聘。

    2022-03-23:在k进制下,最小多小的num,可以让1~num范围的数拥有1的个数不少于n个? 腾讯音乐2022校园招聘. 答案2022-03-23: 二分法. 代码用golang编写.代码如下 ...

  6. vue全家桶进阶之路36:Vue3 全局路由useRouter和本地路由useRoute

    在 Vue.js 3.x 中,我们可以使用 useRouter 和 useRoute 来获取当前路由对象和当前路由信息. useRouter useRouter 可以用来获取当前路由对象.我们可以通过 ...

  7. 40% building 31/38 modules 7 active ...es\core-js\modules\es6.object.assign.jsBrowserslist: caniuse-lite is outdated.

    一早运行项目发现不正常 虽然能运行,但是怎么看都不顺眼啊,那就照着提示先: npm update 一连串下来啥也看不懂是不是 我就直接npm install看看重新下载一下依赖结果直接给我来了个 :c ...

  8. 一文读懂面试官都在问的Fastjson漏洞

    Fastjson1.2.24-RCE漏洞 漏洞简介 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符 ...

  9. 代码随想录算法训练营Day14 二叉树

    代码随想录算法训练营 代码随想录算法训练营Day14 二叉树|理论基础 递归遍历 基础知识 二叉树都是通过栈来实现的. 二叉树的种类 在我们解题过程中二叉树有两种主要的形式:满二叉树和完全二叉树. 满 ...

  10. ABP - 依赖注入(2)

    依赖注入的使用 构造方法注入 这是将服务注入类的最常用方法,是将依赖项注入类的首选方式,也是微软推崇的模式.这样,除非提供了所有构造方法注入的依赖项,否则无法构造类,显示的声明了类必需的服务,使开发人 ...