近年來,可觀測性熱度節節攀升,企業在可觀測性實踐過程中常常也伴隨著一系列棘手的問題:
接下來我們就跟隨嘉為科技AIOps產品負責人宋蘊真的腳步,步步深入,深度剖析可觀測性,全面深度挖掘探索企業運維可觀測體系的建設之路。
*注:以下內容整理自:嘉為科技AIOps產品負責人 宋蘊真 于 嘉為藍鯨2022研運一體創新峰會的精彩分享——《運維可觀測體系化建設之路》。
01. 正本清源——可觀測與相關易混淆概念
1)監控VS可觀測性
談及可觀測性,就不得不提一個經常會被混淆的概念,也就是監控。在我們以往的實踐過程中,通常遇到最多的問題就是:企業現在已經建設了許多監控工具了,可觀測的體系建設能夠帶來什么價值?
首先需要明確:監控是一種可觀測的實現手段,而可觀測性本身不止于監控。
對于運維來說,在發現問題時,傳統監控通通僅能指向問題發生的對象,將告警發送給用戶,此時依靠運維人員的歷史處理經驗來進行下一步動作。往往這種處理方式經由經驗豐富的運維人員處理,能夠得心應手,但是當運維人員缺乏處理經驗時,我們僅僅只能夠發現問題的表層,而無法得知問題的根源,造成運維在解決問題時,猶如開“盲盒”一般,毫無頭緒的境況。
監控使用者更偏向于具備豐富經驗的傳統運維老手,舉個例子來說,就如同老中醫通過把脈能夠大體判斷病癥,同樣的,運維老手從儀表盤就大概能夠判斷出問題的程序或機器。但這種方式非常依賴于過往的經驗,以及運維人員對這套系統的熟悉度。
而對于可觀測來說,它更像是西醫的概念,就好比去醫院進行體檢時,通過很多全面的檢查,醫生就能夠比較精確的指向病因根源。可觀測性讓我們通過更加復合的手段,讓不具有很多運維經驗或者對系統并不熟悉的人也能夠很好的完成運維工作。
2)可視化VS可觀測性
第二個容易混淆的概念,往往出現在初步接觸可觀測領域,即可視化和可觀測性的混淆。本身這兩個概念都比較大,在此我們也僅僅只淺談可觀測里面的可視化。
在可觀測中的可視化就是將觀測數據進行展現的手段,而在更大的領域,有的企業會去做數字孿生,將各種對象以數字化方式進行投射或展示。
可觀測更關注的點并不在可視化上,更多時候只是將可視化作為呈現數據的手段,除了呈現數據,可觀測還包括數據的收集、存儲、分析等,最終整合后組織成一個良好的產品形態,輔助運維人員進行排障。
02. 以史為鏡——可觀測發展進程
1)可觀測性的發展
以史為鏡,縱觀可觀測性的整個發展歷程。企業在選用或采購產品時,通常也會去了解產品發展的來龍去脈,那么可觀測的發展是怎樣的呢?
在早期,可觀測并不是作為一個獨立概念被提出,而是在海外經典理論——控制論中有所提及。在控制論的描述中,信息在系統中不斷的進行傳輸,系統會隨著信息不斷的反饋而調整行為,最終形成整體反饋的閉環。
控制論在傳入國內后,被我國著名科學家錢學森發揚光大,并且在工程學上進一步進行應用。其核心基本問題就是系統的能控性與能觀測性,也就是通過系統中信息的不斷反饋,來指導并優化整體工程。
為了方便理解,我們以人體領域來和研運領域進行對比,更形象的解釋可觀測的概念。
對于人來說,判斷事物需要從眼睛看到,耳朵聽到以及感官獲取,這就是人體的觀測系統。在觀測到數據后,通過大腦進行判斷,接著進行下一步行動思考,構成完整的觀測閉環。
而對于運維,我們希望建立AI專家系統的概念,能夠像人腦一樣,通過可觀測系統收集數據后進行判斷,對于能夠解決的問題給予自動化或手動的操控,對于需要求助的可以申請工單獲得問題支持。
在這里,最大的價值點仍然在于信息的輸入,如果能夠盡早的獲取系統中的數據,就能夠盡早的思考和分析,從而采取行動。
2)IT與可觀測性相輔相成
回顧IT發展史,事實上,可觀測性與IT的發展是密不可分、相輔相成的。IT發展史大體來說可以分為三個時代,可觀測性手段也隨之不斷的進步。
① 單機時代
早期IT對象較為單一,大型機時期,觀測手段主要通過儀表盤進行,隨著DOS的出現,可以通過命令查詢信息,但此時并不具備監控的能力,直到Windows/Linux的出現,通過記錄Syslog數據,使得大家可以在遠端或者不在電腦上的情況下理解系統的信息。
而這種結構化的文本數據Syslog,如今在在業內,我們也通常稱之為日志,實際上,日志就是最明細、最單元、也是最早出現的一種觀測數據。
② 局域網時代
隨著局域網時代的到來,存儲成本變高,上述對結構化數據記錄這種觀測手段,存在著是信息量日趨龐大的問題,面對這樣的挑戰,一個劃時代的數據——指標類型數據出現了,它通過將低維度的結構化事件進行升維,在此之后,我們逐漸能夠對IT對象進行集群式的觀測和監控,通過插件對結構化的日志聚合成指標數據,從而節省存儲和網絡的開銷,這也是最早期監控的雛形。
在這個時代,誕生了一些極具代表性的軟件:Zabbix以及以日志為核心的Splunk,代表了集群化的局域網時代IT觀測的的兩種核心工具。
③ 互聯網時代
我們來到現在的互聯網時代,C端用戶不斷增多,在云原生技術的飛速推動下,IT面臨著更多更復雜的對象和架構,如右上角CNCF矩陣圖所示。
在這樣一個對象暴漲的時代,依靠過去用插件做采集的模式已經逐漸行不通,于是云原生開發者們相應的開始做一些觀測工具,為了拓展生態能力,適配對接更多類型的對象,開源社區共建共享的形式也逐漸鋪開。誕生一些諸如DATADOG、dynatrace等較為代表性的工具。
回顧整個觀測手段的發展過程,其核心也是圍繞經典三支柱Metrics、Logs和Traces在發展,其中Traces即是分布式架構時代下產生的新的元數據。在互聯網時代,新的商業化的軟件和企業也有以下一些與以往不同的思路,來實現現代化的可觀測:
03. 工欲善其事,必先利其器
在整個可觀測發展過程中,每一個企業可能都會建立一些監控工具、日志工具,但這些工具就像是散亂的零件,沒有辦法組裝打通,各個工具之間體驗也完全不一致。
這就好比過去我們需要進行拍照,打電話,閱讀文本時,往往需要不同的工具,而到了現在,這些功能會被統一整合進手機里,以更高的效率、更好的體驗來去解決問題。
“工欲善其事,必先利其器”。可觀測性并非是簡單的工具搭建,低整合度的工具排查問題時不僅效率低下,同時存在著跨系統排障不一定可行的隱患。那么如何“打磨利器”呢?這里我們看DATADOG提出的3個重要概念:Any Stack、Any Scale和Any APP。
1)豐富且可擴展的采集能力(Any Stack)
運維系統最大的復雜度并不在于運維系統的建設,也不在于運維工具如何建設,而是在于運維的對象非常多,要求各種各樣的運維專家來應對這些不同對象所產生的問題。
可觀測性的建立第一步,即是強調需要具備豐富的從不同對象采集數據的能力。這也是整個觀測系統建設的基礎,實現方式主要有兩個點,一是要依賴于開源社區的貢獻,而是將采集能力建設為可插拔的方式。
2)靈活可擴展的大數據后臺架構(Any Scale)
通常在做可觀測時,都會面向一個非常大的系統,與傳統局域網集群和單體監控不同,我們所面臨的主要問題并不是穩定的指標數據,而是相對變化頻繁的Logs,Traces數據,隨著業務系統調用量的變化,如流量洪峰時,系統的數據壓力就非常難以預測。所以,建立背后可彈性支持海量數據、能夠扛住流量洪峰的后臺架構,是系統穩定的重要保障。
3)觀測手段整合,提供下鉆能力(Any App)
第三點Any App,是針對各類不同場景,都可提供相應工具或能力。一方面體現的場景在于對Traces Logs和Metrics數據之間相互映射的關系,從低維度數據聚合到中高維度,在實際使用過程中從高維數據產生的告警去探索和溯源。
另一方面,在整個運維系統組織構建時,CMDB的建模與可觀測也是相輔相成的,在CMDB中建立資源對象模型后,能夠進一步實現維度下鉆,通過Traces的動態聚合,生成不同的微服務,從而獲取不同時段下具體的指標有哪些,相關動態拓撲又是什么樣的,從而更好的實現從宏觀到微觀角度排查問題。
04. 規程 OR 文化?
聊完了工具,我們最后再來談一談企業落地決策,到底是以一個好的規程,還是建立一個文化來去落地。這里我們的建議是根據企業組織現狀來去決定。
1)設立規程
這種思路比較適用于人才密度相對較低的團隊,例如在一些企業中,會有一定的正式員工負責監控、觀測的項目,同時會有一些外包團隊幫助進行具體操作,在這種情況下,一般是Control(控制)大于Context(基于背景信息協作)的協作模式,也就是需要通過建立良好的流程來控制整套系統的運行。
在建立工具體系以后,制定好具體的流程策略以及相對于的負責團隊,同時打通觀測前中后期全流程,可以更好的控制整個團隊排查問題的效率。
2)形成文化
在一些企業中,團隊會追求運維向運維開發轉型,或是運維工程師向SRE工程師的轉型,企業希望能夠將團隊變得更加精英化,此時我們就需要去激發每個人的主觀能動性,通過建立一些正向的反饋,讓整個團隊在過程中不僅得到技術上的精進,更能夠從中獲得成就感,從而形成一正向的循環。
同時我們也鼓勵團隊中積極分享更多的技術與方法論實踐,將整個文化進行推廣,不僅僅局限在運維團隊之中,還需要與開發、業務團隊之間溝通交流,跨團隊的推廣實踐。其次,提早進行埋點設計,早期建設時就需要考慮可觀測設計中可能出現的瓶頸,在后續的實際運行過程中,能夠幫助更好的發現問題。
最后是鼓勵工程師探索更多觀測手段,而不是像傳統的所謂“盡責”,單純追求所有問題的呈現和記錄,最后造成“狼來了”的局面,告警一直不停,但卻不會去關注問題所在。這樣的團隊最終也就演變成為“互相甩鍋”的割裂組織。
關于可觀測性的內容還有很多,限于篇幅,我們僅僅只涉及到了冰山一角,當然可觀測性的發展路途還很漫長。
申請演示
主站蜘蛛池模板: 华蓥市| 昔阳县| 尖扎县| 原平市| 玛曲县| 临漳县| 湘阴县| 远安县| 忻州市| 桐乡市| 东港市| 历史| 海伦市| 蓬莱市| 电白县| 开远市| 西充县| 余庆县| 新建县| 玛纳斯县| 荔波县| 南靖县| 马关县| 高密市| 宜宾县| 射洪县| 明星| 穆棱市| 浮梁县| 淮安市| 杭锦后旗| 漯河市| 大同市| 长顺县| 通辽市| 德江县| 榆中县| 财经| 城步| 平乡县| 礼泉县|