混合雲一站式運維監控--滴滴夜鶯

3806c7ebdb78508abea8cfbd3fc116b3.gif

01 滴滴夜鶯簡介


滴滴夜鶯是一套分佈式高可用的運維監控系統,最大的特點是混合雲支持,既可以支持傳統物理機虛擬機的場景,也可以支持K8S容器的場景。同時,滴滴夜鶯也不只是監控,還有一部分CMDB的能力、自動化運維的能力,很多公司都基於夜鶯開發自己公司的運維平臺。開源的這部分功能模塊也是商業版本的一部分,所以可靠性有保障、會持續維護,諸君可放心使用。

02 滴滴夜鶯主要功能


本節闡述滴滴夜鶯的核心功能模塊,大家可以重點關注用戶資源中心和監控告警部分。

》用戶資源中心


6b7c0c9a88bbbbad7a1e4b425aa34d80.png


這是一個平臺底座,所有的運維繫統,都需要依賴此係統,內置用戶、權限、角色、組織、資源的管理。最核心的是一棵組織資源樹,樹節點的類別和擴展字段可以自定義,組織資源樹的層級結構最簡單的組織方式是:租戶--->項目--->模塊,複雜一點的組織方式:租戶--->組織--->項目--->模塊--->集羣,組織是可以嵌套的。


節點上掛兩類對象,一個是人員權限,一個是資源,資源可以是各類資源,除了主機設備、網絡設備,也可以是rds實例,redis實例,當然,這就需要rds、redis的管控系統和RDB打通了。滴滴在做一些大的中後臺商業化解決方案的時候,RDB就是扮演了這麼一個底座的角色。

》資產管理系統


c408c9a2bba276ffda3e17ffef60685e.png


這裏的資產管理系統,是偏硬件資產的管理,這個系統的使用者一般是系統部的人,資產管理類人員,應用運維相對不太關注這個系統。開源版本開放了一個主機設備的管理,大家可以二次開源,增加一些網絡設備管理、機櫃機架位的管理、配件耗材的管理等等,有了底座,上面再長出一些其他系統都相對容易。


每一條資產,都有一個租戶的字段,代表資產歸屬,需要管理員去分配資產歸屬(修改資產的所屬租戶),各個租戶才能使用對應的資產,分配完了之後,會出現在用戶資源中心的“遊離資源”菜單中,各個租戶就可以把遊離資源掛到資產樹上去分門別類的管理使用。樹節點的創建是在樹上右鍵哈。

》任務執行中心


7493da1e2a0c4dda09b203f553e03938.png


用於批量跑腳本,類似psshansiblesaltstack,不過不支持playbook,大道至簡,就用腳本擼吧,shell、python、perl、ruby,都行,只要機器上有解析器。因爲是內置到夜鶯裏的,所以體系化會更好一些,和組織資源樹的權限是打通的,可以控制不同的人對不同的機器有不同的權限,有些人可以用root賬號執行,有些人只能用普通賬號執行,歷史執行記錄都可以通過web頁面查看審計。任務本身支持一些控制:暫停點容忍度單機超時時間中途暫停中途取消中途Kill等。


一些經常要跑的腳本,可以做成模板,模板是對腳本的一種管理方式,後續就可以基於模板創建任務,填個機器列表就可以執行。比如安裝JDK調整TCP內核參數調整ulimit等機器初始化腳本,都可以做成模板。


開源版本的任務執行中心,可以看做是一個命令通道,後續可以基於這個命令通道構建一些場景化應用,比如機器初始化平臺服務變更發佈平臺配置分發系統等。任務執行中心各類操作都有 API 對外暴露,具體可參看:router.go 我司的命令通道每週執行任務量超過60萬,就是因爲各類上層業務都在依賴這個命令通道的能力。

》監控告警系統


b0c56ad8e7de5e82330d009115b1fc44.png


這塊核心邏輯和v2版本差別不大,監控指標分成了設備相關指標和設備無關指標,因爲有些自定義監控數據的場景,endpoint不好定義,或者endpoint 經常變化,這種就可以使用設備無關指標的方式來處理。監控大盤做了優化,引入了更多類型的圖表,但滴滴夜鶯畢竟是個metrics監控系統,處理的是數值型時序數據,所以,最有用的圖表其實就是折線圖,其他類型圖表,看看就好,場景較少。滴滴夜鶯也可以對接Grafana,有個專門的 DataSource插件,Grafana會更炫酷一些,只是,在數據量大的時候性能較差。

03 滴滴夜鶯架構


f9bf06bb81d240d74a2fa7e0b99643d5.png


講解幾個關鍵點:

  • agent主動與job建立tcp長連接,拉取腳本任務執行,並且將結果上報;

  • agent主動調用ams的http接口,上報自身的基本信息;

  • agent主動調用monapi的接口,拉取採集策略,比如進程、端口、日誌、插件的相關採集策略;

  • agent主動與transfer建立tcp長連接,推送監控數據;

  • transfer將接收到的監控數據推送一份給tsdb做數據持久化,一份給judge做告警判斷;

  • index用來存放監控數據的索引,tsdb+index也可以使用m3db替換,滴滴夜鶯支持多種後端存儲機制;

  • judge是告警引擎,週期性從monapi拉取告警策略,對接收到的數據做閾值判斷,生成告警事件,將告警事件推給redis,monapi從redis消費這些告警事件,將事件持久化到數據庫,並且按要求發送告警通知。

04 滴滴夜鶯資料


  • 文檔:https://github.com/didi/nightingale/wiki

  • 在生產環節使用開源版的企業用戶,可以加入OCE,我們會額外給予更好的支持,比如專屬的技術沙龍、企業一對一的交流機會、專屬的答疑羣等。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章