ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事件推送网关:让cmdb告别“花瓶”

2021-07-14 22:29:53  阅读:376  来源: 互联网

标签:网关 jumpserver zabbix 分组 事件 推送 cmdb


在这里插入图片描述

需求

《蓝鲸之路》系列文章我们通过蓝鲸标准运维打通了zabbix、jumpserver,虽然实现了虚拟机从创建、jumpserver资产录入到权限分配、cmdb资产录入这一套完整的上架流程。但是cmdb、jumpserver、zabbix之间的资产及分组关系不是统一的,团队需要花费一定的精力去维护及团队间信息同步,在此cmdb并没有起到统一数据源及提供数据支撑的作用,因为zabbix、jumpserver等都是脱离蓝鲸体系的。

试想一下我们的jumpserver、zabbix 是要为运维团队的基础运维、应用运维、DBA、业务运维、大数据运维等提供跳板机、告警监控等多样性服务的。虚拟机(服务器)上架的自动化流程只是在新服务器投入使用阶段满足了资产的录入,但是并不满足cmdb、jumpserver、zabbix的之间分组调整的一致性同步,此时可能会出现以下问题:

  • cmdb资产集群、模块资产缺失,在应用作业平台及故障自愈会有遗漏;
  • jumpserver分组资产缺失,会出现使用人的资产遗漏;
  • zabbix 按业务分组告警时,有资产告警遗漏;另由于告警信息通过分组来关联业务,帮我们定位故障点,而此时会导致排查故障时间延长。

综上,我们将需求总结为以下两点:

  • 蓝鲸cmdb和zabbix、jumpserver等系统隔离,资产分组无法保持一致,需花费大量的精力维护;
  • zabbix告警关联业务,通过cmdb的业务拓扑为zabbix提供分组依据,告警信息通过分组来展示,帮助运维快速定位故障点;
  • jumpserver资产分配关联业务,通过cmdb的业务拓扑为jumpserver提供分组依据,保证使用人使用资产的完整性;

解决方案

毋庸置疑的是cmdb作为基础设施统一的数据源,能够为上层应用zabbix、jumpserver提供数据支撑。因此所有的资产分配应该尽可能的与cmdb进行一致性同步,此时就需要用到蓝鲸cmdb的事件推送,进行信息变更实时推送。

事件推送功能能够实现当配置信息发生变化的时候,实时通知到关联的系统中,目前支持 HTTP 的推送方式。使用此功能前需要先为目标系统开发可接收
HTTP 请求的接口。

通过以上官网信息可得:

  • 事件推送,通过业务、模块、资产的一些列动作触发调用回调接口。我们可以获得cmdb变更的相关信息,如:资产ip、业务、模块等信息。
  • 事件推送依赖一个目标系统,用于接收HTTP请求的接口,我们将此接口定位为事件推送网关,需要自行开发。通过事件推送网关,然后接受cmdb推送的资产、业务、模块信息在zabbix、jumpserver创建相关的分组,并将资产ip分配到关联分组中,此时就可以保证和cmdb的业务拓扑一致。

因此,下一步我们需要做的是:

  • 配置cmdb事件推送,定义触发动作及回调接口;
  • 自行开发事件推送网关,用于接收cmdb的推送信息,关联zabbix、jumpserver api进行操作;

探索实现

由于目前处于探索阶段,有很多细节性问题我们还在不断的思考中,不过比较明确是当前先进行cmdb事件推送、自行初步开发事件推送网关接受变更信息。

cmdb事件推送

1.创建事件推送

通过侧边导航打开 “模型管理 - 事件推送” ,点击 【新建】 按钮。
在这里插入图片描述在新增推送的对话框中,主要关注完善三部分内容:

  1. 推送名称:用于区分不同推送,同业务下需要保持唯一。
  2. URL:目标系统接收推送请求的 URL,要求蓝鲸配置平台部署环境访问此 URL 链路畅通。
  3. 事件订阅:根据目标系统的需要,可选择性勾选事件的内容。当填写完成 URL 后,可以使用 “测试推送” 功能中查看到详细的推送信息和进行推送测试(调试配置平台是否能够访问到目标系统的 API)。

在这里插入图片描述

2.事件推送状态查询

创建好一个事件推送以后,可以在推送的列表中直观看到当前推送接收数量和失败情况。
在这里插入图片描述

事件推送网关

事件推送网关是我们自行命名的系统,通过python3.9+django3.2开发,用于cmdb进行回调,在此我们暂且只获取cmdb的变更信息。

组件名作用
python3.9+django3.2开发框架
redis请求去重,缓存变更信息

注意: 10.10.2.11 属于test1、test2两个模块,将其从test2模块中删除只保留test1模块,经测试cmdb的操作分为以下三步:

  • 将10.10.2.11 从test1中删除;
  • 将10.10.2.11 从test2中删除;
  • 将10.10.2.11加到test1模块中;

因此蓝鲸5.1 事件推送的动作触发,会产生多个同一requestid的请求,此时我们借助redis 进行请求去重,我们只接受最终分组信息即可。

# 1.python环境
conda create -n gateway python=3.9
source activate gateway
pip install django redis 

# 2.创建项目
django-admin startproject gateway
cd gateway
python manage.py startapp gw_cmdb

事件推送网关的具体实现,我们将在后面的文章中进一步梳理,在此暂不释放,请持续关注后面的内容。

标签:网关,jumpserver,zabbix,分组,事件,推送,cmdb
来源: https://blog.csdn.net/yanggd1987/article/details/118738760

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有