前段時間熱播的電視劇《開端》想必不少人都看過的,其新穎的拍攝手法和不落俗套的劇情著實頗具亮點。

(圖片來自sohu.com)

為什么要說到這部劇呢?因為這部劇可以更好的幫我們理解什么是系統(tǒng)的可觀測性,讓你從一大堆技術(shù)概念中解脫出來。

我們都知道,為了保障一個軟件系統(tǒng)的正常運行,通常我們都會為它增加監(jiān)控手段,這里邊主要有兩類監(jiān)控:黑盒監(jiān)控與白盒監(jiān)控。

什么是黑盒監(jiān)控與白盒監(jiān)控?

黑盒監(jiān)控是指對服務(wù)器的監(jiān)控,重點關(guān)注磁盤空間、CPU 使用率、內(nèi)存使用率、平均負載等領(lǐng)域,這些是業(yè)內(nèi)大多數(shù)人認為要監(jiān)控的標(biāo)準(zhǔn)系統(tǒng)指標(biāo)。

(圖片來自pandorafms.com)

白盒監(jiān)控是對在服務(wù)器上運行的應(yīng)用程序的監(jiān)控,可能是從Web 服務(wù)器收到的 HTTP 請求數(shù)量到應(yīng)用程序生成的響應(yīng)代碼時間等的任何內(nèi)容。

只有監(jiān)控是不夠的

在劇情里,主角們發(fā)現(xiàn)異常后多次進行警告和報警,但是問題始終沒有完美解決。因為這個系統(tǒng)很復(fù)雜,甚至于牽扯到之前的一個系統(tǒng)問題(作案嫌疑人之女的交通事故)。僅僅是針對當(dāng)前狀態(tài)的監(jiān)控與告警,是無法讓這個系統(tǒng)快速的從故障中恢復(fù),更別說進行一次有效的迭代提升質(zhì)量了。

所幸,劇情中的循環(huán)就類似我們的代碼一樣,它可以重來讓我們充分的debug。一次次的重置就像一次次的上線一樣,那么問題來了,無論是劇情里還是現(xiàn)實中循環(huán)終究是有限制的,所以我們需要盡快找到解決問題的辦法。

劇情里的可觀測性

如果我們把公交車看成一個應(yīng)用系統(tǒng)服務(wù)器,那個爆炸就是系統(tǒng)宕機的話,我們就會發(fā)現(xiàn),這簡直就是一部實現(xiàn)系統(tǒng)可觀測性的好教材。

當(dāng)男女主角身在公交車內(nèi)時,對應(yīng)的就是系統(tǒng)的白盒監(jiān)控狀態(tài);當(dāng)提前下車時,他們就和那些警察一樣處于黑盒監(jiān)控狀態(tài)。

在兩種狀態(tài)相互交替下,他們會用心觀查每個乘客的細節(jié):每個人的位置、雙肩包被緊緊抱住、行李箱非常扎眼、蛇皮袋被視若珍寶、高壓鍋用來裝肉等等,這些是什么?聰明的你一定想到了,這些就是應(yīng)用系統(tǒng)的部分指標(biāo)數(shù)據(jù)(Metrics)。

(圖片來自smzdm.com)

主角們記錄的精確到幾點幾分的動作/行為,不僅忠實的還原了當(dāng)時的情況,同時也為排查問題助了一臂之力,這不就是系統(tǒng)的日志數(shù)據(jù)(Logs)么。

隨著劇情的推進,他們獲取了更重要的數(shù)據(jù),包括每個人物的關(guān)系,以及不同循環(huán)里事件的發(fā)展路徑,這些也是對破案最為關(guān)鍵的信息,其實對應(yīng)的就是系統(tǒng)的追蹤數(shù)據(jù)(Traces)。

到此,構(gòu)建可觀測性的三大類數(shù)據(jù)支撐已經(jīng)完備,我們也不難發(fā)現(xiàn)追蹤數(shù)據(jù)(Traces)才是定位問題和解決問題的核心。

可觀測性能定位根本問題

劇情最后,在主角們多輪艱苦卓絕的努力下,問題終于得到了圓滿的解決。但是,我們該慶幸么?不,我們該反思。如果從一開始主角們就知道人物的關(guān)系和事件的先后順序,破案還會這么困難么?答案自然是否定的。

回到我們的軟件系統(tǒng)中,潛在復(fù)雜性的來源是永無止境的,監(jiān)控可能變得異常復(fù)雜,以至于監(jiān)控本身變得很脆弱、難以維護。因此,一套好的監(jiān)控系統(tǒng)應(yīng)該是簡單并有效的,提供源自基于時間序列的設(shè)備、已知故障模式以及黑盒測試的關(guān)鍵業(yè)務(wù)和系統(tǒng)指標(biāo),而不是提供成百上千無太大意義的指標(biāo),意圖“監(jiān)控一切”的做法很多時候都是一種反面教材。

(圖片來自dockone.io)

可觀測性則不同,它旨在提供對系統(tǒng)行為的高度精細的洞察以及豐富的上下文,非常適合指導(dǎo)調(diào)試并真正解決系統(tǒng)的問題。由于無法預(yù)測系統(tǒng)可能遇到的每一種故障模式,或預(yù)測系統(tǒng)可能出現(xiàn)異常的每一種可能方式,因此我們構(gòu)建的可觀測性是用證據(jù)而非推測進行調(diào)試系統(tǒng),這很重要。

總結(jié)

可觀測性并不是在取代監(jiān)控,它也不是一種我們通常理解的工具形態(tài)。準(zhǔn)確的講,它是一種屬性的范疇,甚至在很多時候是種能力的體現(xiàn)形式,越復(fù)雜的系統(tǒng)越需要這種屬性或能力。

但是話說回來,可觀測性也并非萬能的,它可以引導(dǎo)開發(fā)人員找到準(zhǔn)確的答案,但不能保證讓他們100%找到答案。這個過程當(dāng)中依舊需要當(dāng)事人對系統(tǒng)、網(wǎng)絡(luò)等有著良好的理解甚至直覺,才能讓定位問題變得輕松并高效。

  • 在數(shù)字時代的浩瀚云端,應(yīng)用監(jiān)控平臺如同一雙智慧的眼睛,守望著云端應(yīng)用的運行狀態(tài),保障著云計算的穩(wěn)健發(fā)展。作為領(lǐng)跑者之一,基調(diào)聽云領(lǐng)跑潮流,不斷創(chuàng)新,致力于為用戶提供更為強大、智能的應(yīng)用監(jiān)控解決方案。讓我們一同踏上這場智能監(jiān)控的征程,暢游于應(yīng)用監(jiān)控平臺的無限可能。

    2023-11-17

  • API層監(jiān)控,它主要是通過監(jiān)控數(shù)據(jù)和微服務(wù)實例來進行一系列圖標(biāo)、面板分析和統(tǒng)計來進行實時監(jiān)控的工具。本文將為您詳細介紹API層監(jiān)控的相關(guān)內(nèi)容。

    2023-09-28

  • Web前端已經(jīng)成為各類企業(yè)網(wǎng)站、應(yīng)用程序必不可少的一部分,有越來越多的用戶使用Web前端應(yīng)用程序和網(wǎng)站,Web前端性能的調(diào)整變得非常重要。為了能為企業(yè)提供更高的性能更強的使用體驗,為進一步提高Web前端性能,許多公司開始嘗試Web前端性能監(jiān)控工具。本文將介紹web前端性能監(jiān)控的優(yōu)勢是什么。

    2023-04-25

  • 隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,人們越來越多依賴于網(wǎng)絡(luò),對數(shù)字化、可視化運維管理平臺提出了更高的要求,包括大數(shù)據(jù)快速收集個人偏好、快速發(fā)現(xiàn)影響的業(yè)務(wù)范圍、快速定位問題、快速解決平臺訪客過多導(dǎo)致的網(wǎng)絡(luò)崩潰等問題。

    2023-06-26

  • apm應(yīng)用性能管理開發(fā)?是指利用信息技術(shù)和管理方法,開發(fā)和實現(xiàn)應(yīng)用性能管理(apm)解決方案的過程,它可以幫助客戶監(jiān)控和優(yōu)化應(yīng)用程序的運行狀態(tài)和用戶體驗,提升業(yè)務(wù)效率和競爭力。

    2023-08-24