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

在这里插入图片描述

前言

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

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

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

需求

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

系统隔离是一直是运维管理的一大难题,统一的esb总线来适配所有系统是不现实的,因此我们希望通过事件推送网关来间接打通。

解决方案

1.cmdb事件推送

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

2.事件推送网关(gateway)

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

3.cmdb触发规则

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

  • 业务的创建、更新、删除
# 业务触发规则下的参数
{
    
    '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'}

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

因为主机标识更新是最小的原子操作,业务、集群、模块一旦更新,所有的主机的分组信息都需要做出一致性改变。因此,最终触发的操作如下:

# 业务更新
{
    
    '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触发规则:

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

4.zabbix同步逻辑

在这里插入图片描述

5.jumpserver同步逻辑

与Zabbix不同的是,Jumpserver没有创建主机操作,因为默认情况下在后续文章《[蓝鲸实现多环境vsphere虚拟机交付]》中会自动在jumpserver中创建主机。通过这一流程,我们默认所有的主机已经在jumpserver存在了。

在这里插入图片描述

总结

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

猜你喜欢

转载自blog.csdn.net/yanggd1987/article/details/118821088