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. PostgreSQL插件那么多,怎样管理最高效?

    摘要:华为云RDS for PostgreSQL通过插件管理功能,很好地解决了PostgreSQL版本与插件耦合的问题,帮助用户更直观.更快速地安装管理数据库插件. 本文分享自华为云社区<Pos ...

  2. C# 编译异常CS0433

    编译后遇到nuget版本冲突: error CS0433: 类型"ShellFile"同时存在于"Microsoft.WindowsAPICodePack.Shell, ...

  3. pytest的fixture

    1 什么是fixture @pytest.fixture def my_fruit(): return Fruit("apple") 如上,用@pytest.fixture装饰的函 ...

  4. 麻了,一个操作把MySQL主从复制整崩了

    前言 最近公司某项目上反馈mysql主从复制失败,被运维部门记了一次大过,影响到了项目的验收推进,那么究竟是什么原因导致的呢?而主从复制的原理又是什么呢?本文就对排查分析的过程做一个记录. 主从复制原 ...

  5. 2020-12-09:TCP中,慢启动是什么?

    福哥答案2020-12-09: 简单回答:乘法增大. 中级回答:cwnd拥塞窗口.rwnd接收窗口.MSS最大报文段长度.ssthresh慢开始门限.使用慢开始算法后,每经过一个传输轮次(即往返时延R ...

  6. 2021-04-16:摆放着n堆石子。现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。求出将n堆石子合并成一堆的最小得分(或最大得分)合

    2021-04-16:摆放着n堆石子.现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.求出将n堆石子合并成一堆的最小得分(或最大得分)合 ...

  7. 2021-10-18:乘积最大子数组。给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。力扣152。

    2021-10-18:乘积最大子数组.给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积.力扣152. 福大大 答案2021-1 ...

  8. Anaconda入门使用指南(一)

    python 是目前最流程的编程语言之一,但对于很多初学者而言,python 的包.环境以及版本的管理却是一个令人头疼的问题,特别是对于使用 Windows 的童鞋.为了解决这些问题,有不少发行版的 ...

  9. 让你的 conda “回滚”到以前版本的环境

    我现在使用 Anaconda 作为我的主要 Python 发行版,同样,我们公司也将它用于所有开发人员机器以及他们的服务器.然而,前几天我在浏览一些论坛技术文章时遇到了一个我以前从未知道的 conda ...

  10. [Kotlin Tutorials 21] 协程的取消

    协程的取消 本文讨论协程的取消, 以及实现时可能会碰到的几个问题. 本文属于合辑: https://github.com/mengdd/KotlinTutorials 协程的取消 取消的意义: 避免资 ...