天天看點

運維思索:cmdb打通zabbix、jumpserver探索需求解決方案探索實作

運維思索:cmdb打通zabbix、jumpserver探索需求解決方案探索實作

需求

《藍鲸之路》系列文章我們通過藍鲸标準運維打通了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.建立事件推送

通過側邊導航打開 “模型管理 - 事件推送” ,點選 【建立】 按鈕。

運維思索:cmdb打通zabbix、jumpserver探索需求解決方案探索實作

在新增推送的對話框中,主要關注完善三部分内容:

  1. 推送名稱:用于區分不同推送,同業務下需要保持唯一。
  2. URL:目标系統接收推送請求的 URL,要求藍鲸配置平台部署環境通路此 URL 鍊路暢通。
  3. 事件訂閱:根據目标系統的需要,可選擇性勾選事件的内容。當填寫完成 URL 後,可以使用 “測試推送” 功能中檢視到詳細的推送資訊和進行推送測試(調試配置平台是否能夠通路到目标系統的 API)。
運維思索:cmdb打通zabbix、jumpserver探索需求解決方案探索實作

2.事件推送狀态查詢

建立好一個事件推送以後,可以在推送的清單中直覺看到目前推送接收數量和失敗情況。

運維思索:cmdb打通zabbix、jumpserver探索需求解決方案探索實作

事件推送網關

事件推送網關是我們自行命名的系統,通過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
           

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