運維思索:cmdb打通zabbix、jumpserver探索

需求

《藍鯨之路》系列文章咱們經過藍鯨標準運維打通了zabbix、jumpserver,雖然實現了虛擬機從建立、jumpserver資產錄入到權限分配、cmdb資產錄入這一套完整的上架流程。可是cmdb、jumpserver、zabbix之間的資產及分組關係不是統一的,團隊須要花費必定的精力去維護及團隊間信息同步,在此cmdb並無起到統一數據源及提供數據支撐的做用,由於zabbix、jumpserver等都是脫離藍鯨體系的。python

試想一下咱們的jumpserver、zabbix 是要爲運維團隊的基礎運維、應用運維、DBA、業務運維、大數據運維等提供跳板機、告警監控等多樣性服務的。虛擬機(服務器)上架的自動化流程只是在新服務器投入使用階段知足了資產的錄入,可是並不知足cmdb、jumpserver、zabbix的之間分組調整的一致性同步,此時可能會出現如下問題:redis

  • cmdb資產集羣、模塊資產缺失,在應用做業平臺及故障自愈會有遺漏;
  • jumpserver分組資產缺失,會出現使用人的資產遺漏;
  • zabbix 按業務分組告警時,有資產告警遺漏;另因爲告警信息經過分組來關聯業務,幫咱們定位故障點,而此時會致使排查故障時間延長。

綜上,咱們將需求總結爲如下兩點:django

  • 藍鯨cmdb和zabbix、jumpserver等系統隔離,資產分組沒法保持一致,需花費大量的精力維護;
  • zabbix告警關聯業務,經過cmdb的業務拓撲爲zabbix提供分組依據,告警信息經過分組來展現,幫助運維快速定位故障點;
  • jumpserver資產分配關聯業務,經過cmdb的業務拓撲爲jumpserver提供分組依據,保證使用人使用資產的完整性;

解決方案

毋庸置疑的是cmdb做爲基礎設施統一的數據源,可以爲上層應用zabbix、jumpserver提供數據支撐。所以全部的資產分配應該儘量的與cmdb進行一致性同步,此時就須要用到藍鯨cmdb的事件推送,進行信息變動實時推送。api

事件推送功能可以實現當配置信息發生變化的時候,實時通知到關聯的系統中,目前支持 HTTP 的推送方式。使用此功能前須要先爲目標系統開發可接收 HTTP 請求的接口。緩存

經過以上官網信息可得:服務器

  • 事件推送,經過業務、模塊、資產的一些列動做觸發調用回調接口。咱們能夠得到cmdb變動的相關信息,如:資產ip、業務、模塊等信息。
  • 事件推送依賴一個目標系統,用於接收HTTP請求的接口,咱們將此接口定位爲事件推送網關,須要自行開發。經過事件推送網關,而後接受cmdb推送的資產、業務、模塊信息在zabbix、jumpserver建立相關的分組,並將資產ip分配到關聯分組中,此時就能夠保證和cmdb的業務拓撲一致。

所以,下一步咱們須要作的是:markdown

  • 配置cmdb事件推送,定義觸發動做及回調接口;
  • 自行開發事件推送網關,用於接收cmdb的推送信息,關聯zabbix、jumpserver api進行操做;

探索實現

因爲目前處於探索階段,有不少細節性問題咱們還在不斷的思考中,不過比較明確是當前先進行cmdb事件推送、自行初步開發事件推送網關接受變動信息。app

cmdb事件推送

1.建立事件推送

經過側邊導航打開 "模型管理 - 事件推送" ,點擊 【新建】 按鈕。框架

0.png

在新增推送的對話框中,主要關注完善三部份內容:運維

  1. 推送名稱:用於區分不一樣推送,同業務下須要保持惟一。
  2. URL:目標系統接收推送請求的 URL,要求藍鯨配置平臺部署環境訪問此 URL 鏈路暢通。
  3. 事件訂閱:根據目標系統的須要,可選擇性勾選事件的內容。當填寫完成 URL 後,能夠使用 "測試推送" 功能中查看到詳細的推送信息和進行推送測試(調試配置平臺是否可以訪問到目標系統的 API)。

1.png

2.事件推送狀態查詢

建立好一個事件推送之後,能夠在推送的列表中直觀看到當前推送接收數量和失敗狀況。

2.png

事件推送網關

事件推送網關是咱們自行命名的系統,經過python3.9+django3.2開發,用於cmdb進行回調,在此咱們暫且只獲取cmdb的變動信息。

組件名 做用
python3.9+django3.2 開發框架
redis 請求去重,緩存變動信息

注意: 10.10.2.11 屬於test一、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
複製代碼

事件推送網關的具體實現,咱們將在後面的文章中進一步梳理,在此暫不釋放,請持續關注後面的內容。

相關文章
相關標籤/搜索