近期工作需要,计划调研一下目前CMDB系统的一些现有的技术架构,欲对我们自己的管理平台进行一次较大规模的重构计划,借此机会学习一下,同行一些比较优秀的CMDB系统的技术架构,取长补短!

什么是CMDB

中文解释

CMDB –Configuration Management Database 配置管理数据库

具体介绍

在实际的项目中,CMDB常常被认为是构建其它ITIL(Information Technology Infrastructure Library,IT基础架构库)流程的基础而优先考虑,ITIL项目的成败与是否成功建立CMDB有非常大的关系。

功能介绍

CMDB工具中至少包含这几种关键的功能:整合、调和、同步、映射和可视化。

整合是指能够充分利用来自其他数据源的信息,对CMDB中包含的记录源属性进行存取,将多个数据源合并至一个视图中,生成连同来自CMDB和其他数据源信息在内的报告;

调和能力是指通过对来自每个数据源的匹配字段进行对比,保证CMDB中的记录在多个数据源中没有重复现象,维持CMDB中每个配置项目数据源的完整性;自动调整流程使得初始实施、数据库管理员的手动运作和现场维护支持工作降至最低;

同步指确保CMDB中的信息能够反映联合数据源的更新情况,在联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新 CMDB,找出未被批准的变更;

应用映射与可视化,举例说明应用间的关系并了解应用和其他组件之间的依存关系,了解变更造成的影响并帮助诊断问题。

作为IT管理的核心,CMDB不仅是各大管理软件厂商关注的重点,也逐渐成为系统管理项目实施的热点。在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战。同时,由于CMDB是IT管理信息的集中,在法规的遵从性实施和管理上,CMDB也是一个重要的工具和手段。

而在具体实施中需要注意的是,CMDB项目不是一个简单的软件安装过程,而是一个咨询、培训、实施、优化密切结合的综合过程;涉及到平台工具采购、咨询服务、实施服务、培训、甚至扩展开发等内容;同时,CMDB项目不能一蹴而就,而是一个循序渐进、持续发展的过程,需要企业后续的投入和不断改进服务。

CMDB建模思路

  • 配置管理面向消费,发挥数据价值
  • 配置管理以数据和模型为核心
  • 配置管理以整合的思路推进
  • 配置元模型和分视角模型相结合

CMDB与传统数据库的区别

CMDB软件侧重于信息的管理(采集、整合、记录、维护、检验、更新等),数据库侧重于信息的物理存储,两者是密切联系的。

CMDB的功能需要专门的CMDB管理软件,很难在传统数据库上直接完成。因为对配置信息的管理是CMDB的核心功能,而这一部分功能很难由数据库软件实现。

比较优秀的轮子

XOPS

采用vue + drf 的运维自动化系统 django rest framework、channels。

demo地址: http://demo.xufqing.cn

每两小时还原数据

管理员账号:admin 密码admin@1234

1.png

2.png

3.png

4.png

持续构建样例

11.png

SuperCMDB

组件栈

  • python3.7
  • Tornado4.5
  • DRF3.9
  • MYSQL

前台展示

主机管理

image

WebTerminal

image

授权规则

imageimage

登录日志

image

命令统计

image

录像回放

image

AutoCmdb

运行环境

Project version Description
python 3.6.5
django 1.11.15 必须此版本
djangorestframework 3.8.2
ansible 2.7.0 不能低于此版本

功能说明

1
2
3
4
5
6
7
8
9
10
11
12
以下功能,都是用python来完成的
1. 使用django rest framework开发api
2. 优雅获取本机IP
3. 判断ip地址是否有效
4. 判断ssh端口是否开放
5. 自动使用yum安装软件
6. 自动完成ssh免密码登录
7. 根据数据库记录的变化,自动写入文件/etc/ansible/hosts
8. 使用ansible 2.x API收集客户端硬件信息
9. 根据返回的硬件信息,使用事务写入数据库中
10. 使用psutil模块获取cpu和内存使用情况,并发送给后端API,统一入库.
11. 使用Highcharts插件来展示监控图表,比如: cpu和内存.

效果

首页:

Image text

ansible管理:

Image text

ansible主机:

Image text

主机详情:

Image text

总结

比较有代表性的案例,貌似就是这三个,其他还有一些文章也很值得参考,这里就不再列举了。综合起来,几乎所有的CMDB都是后端采用Python开发的Django restful framework,前端采用VUE,底层采用psutil采集硬件信息,这也符合现在趋势,不同的是中间层采用的技术架构,有的用celery部署主从节点通过消息队列通信和管理任务,有的是通过ansible来管理控制主机。还有就是采用django-channels来实现websocket进行实时通讯。具体使用什么技术架构,就要根据自身公司业务的特性来决定了。