事件推送网关: “让基础设施建设动起来”

前言

《事件推送网关:让cmdb告别“花瓶”》自发起至今已两月有余,在此期间咱们从无到有对cmdb的事件推送进行了充分的摸索,不断的踩坑填坑,现已基本实现了如下功能:python

  • cmdb和zabbix同步,以“业务_集群_模块”的分组规则进行建立、更新、删除同步;主机建立、模板绑定、删除,代替zabbix的被动的自动发现或自动注册, 握必定的主动性
  • cmdb和jumpserver同步,按“/业务/集群/模块”的节点规则适配jumpserver的树形结构,对节点进行建立、更新、删除同步;资产的分组更新、删除;

基于cmdb,咱们对基础设施的管理有了依据,事件推送网关保证了基础设置的有序流动,咱们能够抽出更多的时间专一于上层的需求建设。web

需求

  1. cmdb和zabbix、jumpserver等系统隔离,资产分组没法保持一致,须要花费大量的精力去维护;
  2. zabbix告警没法关联业务,经过cmdb的业务拓扑为zabbix提供分组依据的同时,告警信息关联业务拓扑来展现,帮助运维快速定位系统;
  3. jumpserver资产分配没法关联业务,经过cmdb的业务拓扑为zabbix提供分组依据,jumpserer  web端只负责权限分配;

系统隔离是一直是运维管理的一大难题,统一的esb总线来适配全部系统是不现实的,所以咱们但愿经过事件推送网关来间接打通。markdown

解决方案

1.cmdb事件推送

 蓝鲸cmdb原生支持主机业务(资源池、主机)、业务拓扑(集群、拓扑)、组织架构(业务)等内容的新增、编辑、删除动做,触发回调自行开发的事件推送网关(gateway);架构

2.事件推送网关(gateway)

gateway接收蓝鲸cmdb事件推送的POST请求,合并请求后调用zabbix、jumpserver等系统的API,实现资产分组、建立,主机转移等操做;运维

3.cmdb触发规则

cmdb的触发规则主要分为如下几类:ide

  • 业务的建立、更新、删除
# 业务触发规则下的参数
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'biz'}
{'action': 'delete', 'obj_type': 'biz'}
复制代码
  • 集群的建立、更新、删除
# 集群触发规则下的参数
{'action': 'create', 'obj_type': 'set'}
{'action': 'update', 'obj_type': 'set'}
{'action': 'delete', 'obj_type': 'set'}
复制代码
  • 模块的建立、更新、删除
# 模块触发规则下的参数
{'action': 'create', 'obj_type': 'module'}
{'action': 'update', 'obj_type': 'module'}
{'action': 'delete', 'obj_type': 'module'}
复制代码
  • 主机转移触发主机标识更新
# 主机转移触发的主机标识更新规则下的参数下
{'action''update''obj_type''hostidentifier'}
复制代码

注意:业务、集群、模块的更新操做,会自动触发主机标识更新,为何呢?post

由于主机标识更新是最小的原子操做,业务、集群、模块一旦更新,全部的主机的分组信息都须要作出一致性改变。所以,最终触发的操做以下:spa

# 业务更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}

# 集群更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}

# 模块更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
复制代码

考虑到cmdb事件推送POST的参数格式的多样性,给gateway解析参数带来了必定的复杂度,在此咱们特定义了一下cmdb触发规则:code

  • 新建业务、集群、模块操做不会进行同步,只有当主机转移至相关模块下才会进行同时新建业务、集群、模块,以减小重复性操做;
  • 删除业务、集群、模块、主机进行同步;
  • 更新业务、集群、模块进行同步;

4.zabbix同步逻辑

22.png

5.jumpserver同步逻辑

与Zabbix不一样的是,Jumpserver没有建立主机操做,由于默认状况下在后续文章《[蓝鲸实现多环境vsphere虚拟机交付]》中会自动在jumpserver中建立主机。经过这一流程,咱们默认全部的主机已经在jumpserver存在了。orm

23.png

总结

在没有cmdb以前,咱们的基础设施管理是无序的,可是这也并不意味着有了cmdb就能将其管理的井井有理。所以,我认为最主要的核心思想仍是基于cmdb,让基础设施在各平台有效的流转起来,而不是让其真正成为一个“花瓶”。

相关文章
相关标签/搜索