IT资源管理系统Sm@rtCMDB
概述
1.1 背景
配置管理库(CMDB)是存储和管理信息技术服务及相关资源组件各类配置信息的数据库,在企业信息技术服务运营管理体系中扮演了非常重要的角色。作为智能运维的基础,CMDB保存着整个 IT 系统的配置信息、关联关系,负责实际环境中的服务和资源组件数据的维护,为其他运维管理系统提供基础数据。
SmartCMDB产品作为企业配置管理库的技术载体,能够为系统监控、服务管理、自动化操作、安全管理、运维大数据等软件平台提供配置数据服务,帮助企业深入了解和掌控复杂的信息技术服务及资源组件,对变更风险评估、问题诊断定位做出更加准确的决策。
1.2 产品定位
随着云计算、容器、微服务等技术的发展,企业的数据中心 IT 规模正在快速扩张,单纯依靠人工实现对IT资源的管理已经变得不再现实。SmartCMDB充分迎合云时代智能化运维管理的需求,通过各种自动化手段实现以应用为核心的全面资源管理以及运维消费场景共享,支撑数据驱动的智能化运维新模式。
SmartCMDB产品重点解决如下问题:
1)支持面向业务的CMDB动态建模
系统支持面向业务视角的CMDB分层模型,可以根据实际环境进行配置项分类,配置项属性、配置项状态、CI与CI之间关系的定义和动态调整,提供面向业务的整体IT架构画像。
2)支持自动化的CMDB数据维护
系统内置业内的CMDB 自动发现组件,同时支持有代理和无代理两种工作模式,通过自动发现机制发现并收集从公有云/私有云到传统IT的各类 IT 资源配置信息、关联关系,为 CMDB 提供第一手的数据,避免手工方式带来的工作量大,数据更新不及时不准确等问题。
3)提供多场景消费的开放API,为第三方运维工具提供共享信息
系统提供场景、配置项、关系等各个层面的数据消费Restful API,实现与监控、ITSM、云管、自动化运维、Devops工具等各种第三方系统对接,实现高性能的查询、更改、推送操作,完成组织内各种运维工具间的基础信息共享和任务联动,实现基于IT架构驱动的运维管理。
4)支持配置信息的可视化展现
结合各种典型的运维场景,提供多层次的可视化拓扑,从物理连接、部署关系、调用关系、业务关联等多个维度清晰展现配置项关联关系,为故障分析、风险评估、架构管理等复杂运维工作提供支撑。
产品架构介绍
SmartCMDB实现对企业中各类IT资源信息的集中收集和管理,并根据各种配置数据的应用场景,通过消费驱动配置数据的抽取、处理和展示。
系统的功能结构如下图所示:
产品功能结构
SmartCMDB主要实现四个方面的功能:
(1)配置数据收集。提供企业级配置自动化发现模块,实现对IT环境中各类环境设施、IT基础架构、应用系统和业务服务信息的收集。
(2)数据存储管理。完成对CMDB信息的管理,包括维护模型、配置项、关系映射的版本,对采集获取的管理对象数据进行模型化和实例化,并将配置项实例映射到应用服务和业务服务。
(3)数据维护功能。提供CMDB访问管理门户,完成配置模型、配置项实例、配置版本等日常管理功能,同时还提供可视化拓扑展现、报表、访问权限控制等功能。
(4)API服务接口。为外部运维场景消费CMDB中存储的各类资源配置数据提供标准Restful API接口。
系统功能实现
3.1 配置信息自动收集
3.1.1 配置自动发现
SmartCMDB的 CMDB 自动发现组件通过自动发现机制,发现 IT环境中的网络设备、服务器、存储、数据库、中间件、应用程序,发现它们的部署和运行配置参数,发现它们之间的关联关系,并将这些数据提供给上层 CMDB系统。
SmartCMDB的 CMDB 自动发现组件的主要功能:
(1)自动发现网络环境中的网络设备、服务器、存储、数据库、中间件、应用组件;
(2)自动发现上述 IT 资源的部署和运行配置参数;
(3)自动发现上述 IT 资源的关联关系;
(4)通过接口向CMDB系统提供上述IT资源的配置信息和关联关系信息;
(5)从应用系统的视角,向用户可视化展示 IT 资源的拓扑关系。
3.1.2 自动发现工作模式
SmartCMDB系统 CMDB 自动发现组件的工作模式如下图所示。
CMDB 自动发现组件通过各种内置配置采集器,以远程无代理方式发现并采集各种 IT 资源的配置信息,然后依据 CMDB 模型,将信息保存在配置库中,向用户展示 IT 资源关联关系、详细配置信息,通过 API 向 CMDB 提供自动发现的 IT 资源配置信息。
配置发现组件也提供基于代理的发现模式,实现资源信息的深度发现。
3.1.3 自动发现范围
自动采集的信息依据 CMDB 模型保存到配置库中。CMDB 模型分为三层:应用层、PaaS 层(支撑软件)、IaaS 层(硬件环境)。
应用系统通常是作为一个单元进行部署和版本控制的组件集合,为某一个业务单位或者某一业务处理来服务。应用系统由一个或多个应用组件实例构成。
应用组件实例运行在单机或者集群环境中,包括容器集群、中间件集群。应用组件实例调用数据库实例或者缓存实例提供的服务,或者是公有云环境的消息服务、数据库服务。
应用组件、PaaS 层的各种支撑软件运行在物理服务器或者虚拟机中,IaaS 层的物理服务器、物理存储、网络设备沟通 IaaS 资源池,虚机可以在 IaaS 资源池中的任意一台物理服务器上运行。在多云环境中,应用组件、各种支撑软件也可能运行在公有云的云主机中,使用公有云存储服务。
3.1.4 数据调和
从采集层上来的配置项属性数据经过数据调和后才能入到CMDB库中。当采集上上报的配置项实例在CMDB库已经存在时,其属性要么合并到CMDB库现有配置项实例中,要么更新现有配置项实例的对应属性值。用户为每个CI类型属性定义数据调和规则,约定采集渠道的优先级。当采集上报的配置项属性在CMDB库对应配置项实例中不存在时,数据调和模块自动将其合并到CMDB库。当采集上报的配置项属性在CMDB库对应配置项实例中已存在时,数据调和模块可以用来源优先级较高的值替换,也可以生成一个配置项审核的请求,将新采集的属性信息以及CMDB库中当前的属性信息一起提交,由后者发起审核流程,由用户确定是否需要将新采集的属性值更新到CMDB库。
3.2 配置信息管理
3.2.1 CMDB面向管理
配置管理数据库CMDB的数据模型基于面向对象技术,可以灵活进行扩展,并提供可视化的模型管理工具,管理项可以根据管理的层次进行树状设计。
CMDB模型管理提供图形化界面定义CMDB的数据结构,包括CI类型、每个CI类型包含的属性、对应的CI状态取值、允许的关系类型、CI实例唯一性判断规则,定义每个CI属性字段的数据类型、合法性校验规则、数据调和规则。
3.2.2 配置类别管理
配置类别设计将要纳入到配置管理中的配置类别,能够实现自定义配置类别模板。
用户可以自定义树形的配置项分类,根据分类定义该分类对应的属性。通常配置项的属性会根据不同用途定义属性分类,针对主机的分类,定义主机的常用属性、特有属性等,然后再相应的属性分类定义配置项的属性。
3.2.3 配置项模型
配置项属性表示配置项CI的一项信息,如序列号、版本等。系统支持附件的方式记录CI的相关额外信息:手册、维护合同、配置文件、图片等,可以使CI的信息更加全面。不同配置项之间的字段是不尽相同的,系统能够灵活地增加新的字段,满足对各种配置项信息的记录。
支持配置项的层次化结构。配置项结构的细分程度取决于组织中配置项的使用情况。例如:将服务器整体看作一个配置项,则可将CPU看作服务器的一个配置属性;进一步细分,可将CPU看作是一个配置项。
CMDB的父子配置项类型之间具有可继承性,子分类的配置项类型应可继承父分类的配置项类型的属性和类型关系定义,并可在继承基础上进一步扩展定义。
3.2.4 配置关系管理
CMDB不仅记录了配置项的详细信息,还能够记录各元素之间的关系:父配置项、子配置项、关联配置项等逻辑关系。
系统能够支持以多级层次化(3层以上)的结构描述配置项的关联逻辑,并且能够以业务拓扑图(树状结构视图形式)展现这种关联的逻辑。对监控平台中产生的告警情况能够反映在业务拓扑图中。
3.3 配置维护功能
3.3.1 配置信息维护功能
系统支持CMDB中配置项和配置关系的查询、新增、修改、删除、批量导入导出等操作。
系统支持对配置项对象、配置项操作日志、配置项版本的查询。
系统支持对配置项、关系的添加和有效性验证。
系统可以对配置项字段和配置项关系进行修改和有效性验证。
系统可以对单一配置项或者多个配置项进行删除,用户只能删除被授权配置项类型对应的数据。配置项删除支持逻辑删除,删除对象仍旧保存在CMDB中。
系统支持配置项和关系的导入功能,用户可以从CMDB模型管理模块中导出每种CI类型的配置项实例的Excel导入模板文件,手工填写相关字段值后,批量导入到系统中。系统会对导入字段值进行校验、数据调和。
系统支持配置项和关系的导出功能,可以选择导出全部配置项和关系记录或者选定的配置项类型及其子类的记录,配置项记录导出后应直接可以作为导入模板使用。
3.3.2 IT资源关系图
系统可以图形化显示应用系统所依赖的服务器、网络设备之间的物理连接关系,应用系统所依赖的应用组件与中间件、数据库系统等支撑软件之间,以及它们与服务器之间的部署关系,应用系统各个应用组件之间、应用组件与中间件、数据库系统之间的数据访问逻辑关系。
3.3.3 配置信息盘点
为了保证配置项信息准确性和完整性,配置管理提供针对特定对象和范围的审核;包括规范的审核以及差异审核等。系统可以通过配置审核策略来生成配置审核(盘点)任务工单,并更改相关配置项的审核状态。
对于盘点或者日常运维过程中发现的配置信息异常情况,系统提供配置管理流程,由配置经理和相关责任人对数据变更进行确认并完成修改。
3.3.4 配置信息订阅
系统提供自动感知CMDB数据的变化功能,实时向订阅用户推送CMDB变化内容。
用户或者其他运维系统可以设定所关注的CMDB数据,并且订阅所关注的数据增删改变化,由CMDB系统进行推送。
3.3.5 数据权限管理
具有用户角色分类和权限控制功能,根据角色设定查询、变更、管理配置管理数据库内容。提供安全控制功能,保证经过正常变更程序和授权人员方可输入和变更配置信息,其它人员只具察看数据库权限。
3.3.6 数据查询和搜索
系统支持对CI属性(基础属性和扩展属性)和关系的全文检索的查询和搜索,用户可以自定义关键词、查询范围形成查询主题,进行快捷搜索,获取CI信息以及关系视图。
3.4 服务化API
CMDB自动化系统对外提供Restful接口,供各种DevOps工具、运维工具消费CMDB数据。主要接口有:
(1)认证接口
基于用户名、口令的认证,返回一个会话ID。后续所有接口操作都需要带此会话ID作为身份标识。当会话超时后,需要重新调用此接口进行认证,获得新的会话ID。
(2)获取CI实例简要信息
输入一个CI类型,返回该CI类型的所有CI实例的简要信息列表,如CI实例ID、CI实例名称、IP、OS、厂商、版本、标签、创建时间、修改时间等。
(3)获取CI实例详细信息
输入一个CI实例ID,返回其所有属性值、连接关系信息。
(4)获取CI实例关联关系
输入CI实例,返回该CI实例的所有关联关系、关联关系属性值、以及对端的CI实例ID。
(5)获取CI实例指定关系类型的对端CI实例
输入CI实例、关系类型,返回与该CI实例关联的指定关系类型的对端CI实例ID。
(6)判断两个CI实例之间是否存在某种关联关系类型
输入CI实例、关系类型,返回是否存在。
(7)设置CI实例状态
输入一个CI实例ID和状态值,返回更新成功标识。
(8)更新CI实例属性
输入一个CI实例ID、属性及属性值,进行相关属性的更新,返回更新成功标识。
(9)新增CI实例
输入新的CI实例信息,将CI实例新加入系统,返回操作成功标识。
(10)更新CI实例的属性值
输入CI实例ID、属性名、属性值,更新相应CI实例的属性值,返回操作成功标识。
(11)新增CI实例关联关系
输入上端CI实例、下端CI实例、关系类型、关系属性值,在系统中增加新的关联关系,返回操作成功标识。
(12)删除CI实例关联关系
输入上端CI实例、下端CI实例、关系类型,在系统中将此关系删除掉,返回操作成功标识。
配置自动发现属性示例
网络设备:
基本信息:IP 地址、MAC 地址、设备名、设备类型、厂商、OS 版本、接口信息。
设备之间的物理连接关系:上游设备、上游设备端口、下游设备、下游设备端口。
F5 BIG-IP
端口信息
地址池
负载均衡策略
Windows 服务器
Windows 服务器硬件信息以及 OS 信息;
基本信息:主机名、IP 地址、当前时间、最近启动时间、系统区域(zh-cn;中文(中国))、时区、NTP 服务是否开启
OS 信息:OS 大类(Windows)、OS 名称(如 WindowsServer 2008 SP2)、OS 版本(6.1.7601 Service Pack 1 Build7601)
硬件信息:服务器厂商、设备型号、产品 ID、BIOS 信息;CPU 总核数、总主频数、CPU 个数;物理内存大小、虚拟内存大小、虚拟内存文件位置;本地硬盘类型、大小、数量,文件系统大小(文件系统类型);网络接口(包括以太网接口、HBA 接口)类型、IP、MAC。
安装软件信息。软件名称、版本、发布者。
补丁列表信息。KB 号、MS 号。
注册表参数信息。TcpTimedWaitDelay,MaxUserPort
Linux 服务器
基本信息:主机名、IP 地址、当前时间、最近启动时间、时区、默认语言、NTP 服务是否开启
OS 信息。OS 大类(Linux、AIX、HP-UX)、OS 名称(Redhat Enterprise 6.5 Santago)、OS 内核版本(Linux的内核版本)。
硬件信息:
(1)服务器厂商、设备型号、产品 ID、BIOS 信息;
(2)CPU 总核数、总主频数、CPU 个数;
(3)物理内存大小、SWAP 内存大小、SWAP 内存文件位置;
(4)本地硬盘类型、大小、数量,文件系统大小(文件系统类型);
(5)网络接口(包括以太网接口、HBA 接口)类型、IP、MAC。
安装软件信息。软件名称、版本、发布者。
OS 参数信息:
(1)ulimit 参数
(2)Selinux 是否启用
AIX 服务器
基本信息:主机名、IP 地址、当前时间、最近启动时间、时区、默认语言、NTP 服务是否开启
OS 信息。OS 大类(AIX)、OS 名称、OS 内核版本。
硬件信息
(1)服务器厂商、设备型号、产品 ID、BIOS 信息;
(2)CPU 总核数、总主频数、CPU 个数;
(3)物理内存大小、SWAP 内存大小、SWAP 内存文件位置;
(4)本地硬盘类型、大小、数量,文件系统大小(文件系统类型);
(5)网络接口(包括以太网接口、HBA 接口)类型、IP、MAC。
安装软件信息。软件名称、版本、发布者。
OS 参数信息
(1)用户最大进程数(maxuproc)
(2)系统块大小(ncargs)
(3)limits
Vmware 云环境
物理机信息。
(1)主机信息。IP 地址、设备名、所属集群、虚拟 CPU(已用、总共)、虚拟内存(已用、总共)、存储(已用、总共)。
(2)连接的存储信息。数据存储名称、类型、存储容量(已用、总共)。
(3)虚拟网络信息。端口组、VLAN 号。
(4)拥有的虚机信息。虚机 ID、IP、名称、CPU 核数(主频)、内存、磁盘空间、OS 类型、OS、状态。
存储:数据存储名称、类型、存储容量(已用、总共)。
虚拟网络:端口组、VLAN 号。
虚机:虚机 ID、IP、名称、CPU 核数(主频)、内存、磁盘空间、OS 类型、OS、状态。
Oracle 数据库
Oracle 数据库部署信息
(1)版本、安装目录、服务端口、RAC 架构、主从同步架构(对端信息)。
(2)数据文件信息
(3)日志文件信息
运行实例信息
(1)Oracle 服务、实例、用户、主从角色。
(2)最大连接数、归档模式
(3)表空间配置信息(文件路径、初始大小、拓展方式和每次增加空间大小、当前表空间大小)
(4)PGA、SGA、共享池、游标设置的最大值,日志缓冲大小
SQL Server 数据库
SQL Server 数据库部署信息:版本、安装目录、服务端口。
运行实例信息:数据库、用户;最大连接数;数据库归档方式
Mysql 数据库
Mysql 数据库部署信息:版本、安装目录、数据目录、服务端口、主从同步结构(对端信息)。
运行实例信息
(1)数据库、用户、主从角色、读写角色。
(2)最大连接数、表缓冲区大小、空闲连接超时时间、交互式连接超时时间、请求的 backlog 队列长度、写操作的超时时间、读操作的超时时间、表高速缓存大小、结果缓存大小、线程缓存大小、是否开启 binlog、主从操作写入 binlog、binlog 文件的最大容量。
(3)InnoDB引擎独立表空间开启、redo 日志的大小、redo 日志的文件个数、innodb 引擎的数据与索引缓存大小、读 io 的后台线程数、写 io 的后台线程数、事务日志所使用的缓冲区大小、innodb 版本号、是否启用表锁
DB2 数据库
DB2 数据库部署信息,版本、安装目录、服务端口。
运行实例信息:数据库、用户、表空间、最大连接数。
Sybase 数据库
Sybase 数据库部署信息:版本、安装目录、服务端口。
运行实例信息:数据库、用户、最大连接数。
Informix 数据库
Informix 数据库部署信息:版本、安装目录、服务端口。
运行实例信息:数据库、用户、最大连接数。
PostgreSQL 数据库
PostgreSQL 数据库部署信息:版本、安装目录、服务端口、最大连接数。
运行实例信息:数据库、用户。
MongoDB
MongoDB 数据库部署信息:版本、安装目录、服务端口。
Redis
Redis 数据库部署信息:版本、安装目录、服务端口。
Weblogic
Weblogic 部署信息
(1)版本、安装目录、服务端口;
(2)管理域名、域目录、域服务端口
(3)JVM 版本、JVM 目录
管理域运行实例信息
(1)JVM 运 行参数
(2)连接池参数
(3)应用组件、应用组件连接的数据库
Websphere
Websphere 部署信息:
(1)版本、安装目录;
(2)单元、节点,应用服务器名、端口(HTTP 端口、管理控制台端口、SOAP 端口),管理服务器名、端口
(3)JVM 版本、JVM 目录
节点运行信息:JVM 运行参数;连接池参数;应用组件、应用组件连接的数据库
Tomcat
Tomcat 部署信息:版本、安装目录、端口;JVM 版本、JVM 目录
运行信息:JVM 运行参数;应用组件、应用组件连接的数据库
JBoss
部署信息:版本、安装目录、端口; JVM 版本、JVM 目录
运行信息:JVM 运行参数;应用组件、应用组件连接的数据库
Apache WebServer
部署信息:版本、部署目录、端口