文章目录
OneCMDB是一个为数据中心提供服务的配置管理数据库(configuration management database ,简称CMDB)。存储在数据库中的配置信息可以是硬件、软件、服务、客户、事件、问题、变更请求、文档等等。OneCMDB符合ITIL中描述的IT管理最佳实践要求。
你既可以直接将OneCMDB投入使用,你也可以通过扩展OneCMDB的功能来开发自己的应用程序,例如:开发专属的图形化用户界面、添加修改业务逻辑、第三方应用系统接口程序等等。但需要包含OneCMDB软件的分发授权和额外的工作内容。
OneCMDB 由两个主要部分组成:
核心程序是一个后台服务程序,它实现所有业务逻辑和数据存储,而桌面应用程序提供一个基于Web的图形化界面去访问核心程序。

2 OneCMDB 核心程序(Core)
核心程序实现OneCMDB中业务逻辑和后端数据存储。

2.1 配置项
一般情况下,通过创建配置项(configuration items,简称CI)的方式将数据保存到CMDB中。一个常见的CI是数据中心中的服务器或者软件。更抽象的CI是某个客户的SLA(service level agreement 服务级别协议,简称SLA)。一个CI可以连接(或引用)其他CI,OneCMDB中支持多种引用关系。通过使用CI之间的引用关系,CMDB就可以描述CI之间如何互相联系并以此提供一个环境上下文。并且多个CI都使用的数据可以被存储在一个CI中,其他CI可以引用它。从此,数据可以在同一个地方集中维护了。

每个配置项都有一组属性,属性用于存储CI的书。一般有两类属性:
- 固有属性
- 自定义属性
2.1.1 固有属性
固有属性是每个配置项都有的属性,他们帮助我们保持对配置项的跟踪。固有属性的值是在创建配置项时产生的,他们很少被修改。
- Id 是每个配置项的永远不会改变的唯一的字符串,它由OneCMDB系统产生。
- Alias 用于导入导出配置项时、用户界面不同的菜单中识别不同的配置项。Alias不能包含特殊的字符和空白分隔符。
- Displayname 用于用户界面中显示配置项意义的简短表述,它可以包含有效字符和空白分隔符。
- Description 用于用户界面中显示配置项意义的完整表述。
- Template 选项 模板标记。即:该属性被设置则这个配置项就是一个模板,template 选项不会显示在用户界面中。
- Icon 用于用户界面图形化展示配置项,如果配置项是模板则这个图标会显示成一个字符’T'。
2.1.2 自定义属性
为了利用配置项存储数据,你首先需要添加你自己的属性给配置项。什么属性对你来说是完整的,你就需要存储什么属性到CMDB中。下图是一个关于服务器配置项的简单示例:

2.1.3 属性值类型
当创建一个类型的时候需要给该类型制定一个值类型,支持以下两类:
- 简单类型
- 复杂类型
复杂类型 是一个到其他配置项连接(或引用),用来进一步描述某个属性。

2.1.4 属性值列表
简单类型和复杂类型的属性值都可以构成属性列表,一个叫做“Ip_addresses”的属性实例可以包含一个字符串列表,一个叫做“Harddisks”的属性实例可以包含到harddisk配置项引用列表。
2.2 引用
引用时到其他配置项的连接。有如下几个原因我们需要使用引用:
- 维护多个配置项中相同的数据是非常困难的,替代办法是:将数据放到一个单一的配置项中病让所有其他的配置项引用它。如果需要修改数据,只需要在OneCMDB中修改这个共用的配置项即可。
- 查看哪些设施依赖于某一配置项。假如你想重启某个网络交换机,哪些计算机将会受到影响呢?让交换机配置项引用所有连接到它的计算机,OneCMDB将帮助你自动列出所有依赖该交换机的服务器。
- 发现数据中心中的配置错误。假如一台服务器只能使用一个全局IP地址,我们将IP地址存在它自己的配置项中,并让每个服务器指向它使用的IP地址(IP 地址配置项),OneCMDB将通过计算每个IP地址配置项引用次数来帮助你发现哪个IP地址同时被几个服务器使用。
OneCMDB能处理很多不同的引用类型 ,例如:安装于(Installed On)和依赖于(Depends On)。引用类型在OneCMDB模型文件中的模板里面描述,也可以自己定义引用类型,有如下几个原因我们需要定义不同的引用类型:
- 影响范围分析,典型应用在处理变更请求时或者事件解决前。例如:想区分“某个服务正常工作依赖于该系统”和“该子系统支持某个服务”。(译者注:一个表示必须,一个表示有用)
- 过滤关联。如果你设法直观显示不同CI集的关联关系,你可能会发现从错综复杂的图片中找到你需要的关联是困难的。定义不同关联之后你可以选择只显示和硬件实例关联的CI项,并且图片不会过于复杂。
2.3 策略
策略控制着OneCMDB怎样处理配置项的变更。系统有三种不同的策略:
- CI策略
- 属性策略
- 事件策略
策略触发器用于在特定配置项上启用预先定义的策略。需要注意的是要使更改过后策略生效,仅仅点击[Apply]按钮是不够的,你必须重新启动OneCMDB。
请注意当前不能在OneCMDB Desktop定义和管理策略。如果你想使用策略,你必须在System View中手工编辑策略对象。
2.3.1 CI策略
控制配置项修改行为,例如:创建、删除、添加属性等等。
2.3.2 属性策略
控制属性的修改行为。
2.3.3 事件策略
用户开发的策略,意味着调用某个Java类中的方法。这一点给了足够的自由度让策略能够处理更多内容。
2.3.4 策略触发器
它是多个策略(CI策略、属性策略或者事件策略)和特定配置项模板之间的连接桥梁。策略将被应用到该模板的所有配置项和所有子配置项。
在当前OneCMDB发布版本中策略触发器只能分配到模板不能分配到实例。 这一点在后续版中考虑。
2.4 作业及触发
作业(Job)是OneCMDB为了执行若干任务而调用的外部程序,一个作业的输入参数被存储在某个配置项中,一个作业的输出可以回填到数据库中新配置项或者已有配置项。
作业在OneCMDB模型文件中定义,因此,OneCMDB中一个作业是否有效取决于哪个数据模型被使用。
作业可以通过手工或者调度的方式触发。
2.5 变更日志
配置项每个单一的变更都会被OneCMDB自动记录并保存在变更日志中。每个变更都分配了一个唯一的RFC-ID(变更请求ID)。当CMDB中同一时间有一系列的变更时,这些变更将被分配一个共同的事务ID(TX-ID)。
2.6 模板
使用模板有以下几个好处:
- 使得创建新配置项更简单,因为你不必每次都从头开始。
- 使得成批更新配置项更简单,因为在模板和基于模板创建的配置项之间有永久的绑定。例如:当你给模板添加一个属性时,所有只要基于该模板创建的已有配置项都会添加这个属性。
- 让你容易在不同组配置项之间设置限制条件。
2.6.1 继承
继承意味着当一个新配置项被创建时模板中所有属性都会被复制给它,也意味着模板的任何修改都会传递给所有基于它的配置项。像前面描述那样,这个严格的行为通过配置策略来控制。
使用继承有如下几个规则:
- 一个配置项只能继承一个模板。
- 一个配置项只能从一个模板继承。
- 一个模板可以从另外一个模板继承。
请注意在手册和GUI中关于继承特性有几个不同的描述词语,有时候我们说基于(based on),有时候是后代(descendant )或子孙(offspring)。
2.7 模型
2.7.1 模型的概念
OneCMDB使用模型定义CMDB的结构,每个模型能够包含几个部分 、定义模板、引用、实例等等。CMDB系统将要做什么包含什么取决于你可以导入的一个或者几个模型。你可以飞速添加带有更多配置项(含数据)或者新结构或新功能的模型。你也可以导出模型作为备份和在其他地方安装OneCMDB时重复使用。
OneCMDB也有一些关于系统相关信息和系统配置信息的模型,这些模型会被自动加载,用户不用担心他们,只有当你扩展OneCMDB功能或者基于OneCMDB构建自己的应用程序时,你可能对这些模型感兴趣。
2.7.2 模型文件
每个模型用XML语法定义在一个文本文件中。因此,如果有必要可以使用任何文本编辑器来阅读和编辑它。当然也可以通过OneCMDB Desktop来管理它。模型文件格式在开发人员手册V2.0中描述。
一个OneCMDB模型可以在一个或者几个模型文件中定义,这使得实际上可以在一个模型文件中定义模板,而在另一个模型文件中定义配置实例。
2.7.3 可供选择的模型
当前OneCMDB分发文件中包含一个基本的模型,基于这个模型可以对CMDB项目有一个好的开端。分发文件中也包含一个开发好的可以喝NMAP发现系统共同工作的模型,一个开发好的可以和Nagios网络监控系统共同工作的模型。
有关模型的更多信息你可以在模型(本站翻译文章:[译]OneCMDB 模型)文章找到。
原文见:http://www.onecmdb.org/wiki/index.php?title=OneCMDB_Overview_And_Concepts,本文为OneCMDB中文站翻译,完成于2009-12-29。




