CMDB,Configuration Management Database的簡稱,從英文單詞中直譯」配置管理數據庫「,但實際上更多的被稱呼爲」資產管理系統「。
其實出現這種誤差的起因在於不一樣建設思路中對所要達成的」目標「不一樣,而對該」Configuration「的理解不一樣所致使。
CMDB一般具有存儲」Configuration「、創建」Configuration「之間的關係、利用流程或工具維護」Configuration「數據和保證其數據正確性等功能
而在此基礎上開放數據對外服務、聯動其他平臺(CI、CD、流程等)構建完善的運維架構體系是經常使用的作法。前端
在沒有CMDB時,運維人員會採用excel、記事本或者紙質文件去記錄相關的機房、機櫃、物理設備、主機、應用相關的信息。
在這種狀況下常常會遇到疏於更新數據或遺漏丟失數據致使,在整理業務架構、分析當前資源使用率、機房機櫃等採購決策時作出錯誤的判斷,致使資源浪費、故障排查難、遷移難等問題。
總結下來本質問題爲:python
爲解決以上問題,進行CMDB的建設,能夠保證如下基本需求mysql
而在此基礎上開放CMDB數據給予其餘平臺消費,讓數據獲得充分的利用,例如根據關係鏈繪畫架構圖、故障根因分析等經典消費場景。golang
很簡單,當你吐槽excel的時候就能夠開始了!
其實在你吐槽的時候,已經表明着公司的業務成長,你已經沒法用當前的作法去很好的維護這些數據、協調你的工做。
而你總會想着有個地方能夠統一的存儲這些數據,有個web界面給你去查看、更新,接下來你只須要保證數據的不丟失,就能達到你想要的初期效果。
更進一步不斷的優化該系統,使它更加的強大健壯時,你將會發現它不知不覺中成爲了不少系統的基石,這其實就是CMDB最原始的雛形。
固然,如今CMDB已經不止怎麼簡單了,每家公司由於它自身的文化、需求不一樣,造就的CMDB形態也各不相同。
而有些由於建設目標不明確,致使CMDB最終建設失敗,推倒重來也不在少數。web
我的從工做中總結,建設CMDB需注意如下幾點sql
不管是哪一種方式,都是歸一化的將其屬性數據化、關係數據化存放,更加易於消費使用。數據庫
建設CMDB需從戰略方面開始、以戰術方面落地實施後端
從戰略方面需作到如下四點安全
在常見的運維團隊裏,具有研發基礎或高級研發水平的人趨於少數。
若是要進行自研CMDB的話,天然須要尋求研發部外援或者招專職研發
但不管是招人,仍是團隊調整以及磨合都是須要時間的,
並且這裏也會有建設經驗上帶來的研發質量、需求實現誤差等問題。
因此選擇採購仍是自研能夠從時間成本、人員成本兩個維度去衡量網絡
考慮人員成本
考慮時間成本
以上兩個維度的問題中,若是以上問題,」是「居多時可考慮選擇自研,」否「居多時考慮選擇採購。
固然若是財大氣粗,又不想麻煩的話,也能夠選擇採購。
但切記並非採購就等於沒麻煩,選擇成熟且領域頂尖的CMDB產品能夠減小麻煩,但這裏的技術維護成本、甲乙雙方之間的溝通成本以及安全性都須要考慮。
也切記自研並非必定要從0開始,站在巨人的肩膀上也能夠解決很多麻煩。
我的在以往思考中對CMDB系統總體考量梳理以下,但願能夠提供參考,而這裏只是淺談就不展開了。
考慮數據開放策略
考慮數據安全問題
考慮事件響應機制
考慮數據維護環路
考慮數據如何展現
考慮組件高可用
考慮數據庫容災
考慮跨機房方案
語言選擇
考慮數據存儲性能指標
考慮數據庫存儲方案
考慮事件總線組件方案
考慮數據入口方案
自動錄入
文件錄入
在建設中,要對成果或者階段作個評估,以便後續更加精進該系統或修正方向
而這時須要可量化的指標,因此就須要指定如下指標
圍繞建設目標
技術層面
平臺性能
平臺穩定性
CMDB通常存儲的是靜態穩態的數據,這表明這並不會有高頻率的變更,從這點出發代表咱們沒法從CMDB層面去看資源的當前運行態是如何的
而這時候咱們該怎麼作呢?
監控平臺是能夠經過高效、豐富並支持分鐘級或秒級的採集手段採集着各類對象的指標數據。
可是監控平臺的數據在傳統建設中,只有在遇到問題時纔會來使用,這是極其浪費的事情。
因此經過CMDB + 監控平臺兩平臺的數據結合,咱們能夠結合穩態(配置、關係)和動態的數據(指標)去觀測資源的各方面的狀態
好比,經典場景中的」由業務關係出發的應用之間調度鏈以及實時請求訪問狀態圖「,這個圖例能夠實時的觀測到應用的運行狀態,也從圖中能夠全局把控整個調度鏈路。
這是一個很是有趣而實用的場景。
還有着,從關係鏈進行告警根因分析、告警收斂也是很好的實踐場景。
固然場景還有不少,能夠值得去深挖。
CMDB的數據與監控平臺的數據的關聯,在於監控數據的維度概念
維度的簡單理解就是sql語句中的where條件所使用的字段,維度值通常以字符串存儲,能夠參考influxDB的tag概念
監控平臺的數據是從維度去定位到相關的對象的數據,好比經過mysql的ip、port定位到該mysql的指標數據
而CMDB中的數據實例中也會需具有這樣的穩態數據,從這點出發,創建二者的共性數據關聯策略就可將二者數據關聯起來。
這裏不詳細展開。
在常見的CMDB中,錄入的數據,都可以用列表展現,可是若是用地圖呢?
能夠像地圖同樣,檢索查詢定位你想要的點,而後經過拉動,擴大縮小查看周邊的信息。
是否是很是有趣?
其實所謂的地圖化,簡單理解就是關係+場景化
那場景化是什麼呢?
場景化,簡單來講就是"什麼地圖"
好比你是從業務場景去看,那這個地圖就是業務地圖,而後你想要定位mysql實例位置
那順着業務出發層層分割,從業務->應用->依賴服務->Mysql服務->Mysql實例順着定位。
這跟咱們看地圖是同樣的思路,從國家->省->市->縣->鎮->街道,是否是很貼切?
在一般狀況下CMDB中全部資源的關係都是平等的,就是一張很是巨大的網
而地圖化就是經過特定場景化封裝出有層次、有重點的關係鏈路網圖,在越靠近源點的關係數據價值越高。
這樣有利於梳理核心和非核心數據,去除干擾數據,專一場景消費使用,讓數據最大價值化。
本文是我的經歷中對CMDB認識的總結,但願對各位建設CMDB路上有所幫助,謝謝