網路可觀測性(network observability)
盯著幾盞警示燈,和能夠回答你可能想到要問的任何問題,這兩者是有差別的。汽車儀表板告訴你引擎過熱;一位帶著完整診斷的技師卻能告訴你為什麼,以及該修哪個零件。網路可觀測性(network observability)就是把第二件事套用到網路上:不只是一組固定的警示,而是能從外部充分理解網路的內部狀態,足以回答你沒有預料到的問題——包括那些你在出事之後才想到的。
這個詞來自控制理論,在那裡,若一個系統的內部狀態能從它的輸出重建出來,這個系統就是可觀測的。對網路與其上的服務而言,這意味著結合幾種訊號:指標(metrics,隨時間變化的數值量測,如延遲或錯誤率)、日誌(logs,帶時戳的離散事件記錄),以及追蹤(traces,單一請求跨越眾多元件所走的路徑,並在每一步附上時間)。可觀測性就是收集這一切(往往透過串流遙測)、並讓你自由切片與關聯它們的實務與工具——於是當一個網頁很慢時,你能問「對誰慢、走哪條路徑、從何時開始、哪一跳增加了延遲?」並真的得到答案。
對它與單純監控(monitoring)的區別以及限制要誠實。監控是用預先定義的檢查盯著已知問題(「若 CPU 超過 90% 就警示」);可觀測性則旨在讓你調查你從未寫過檢查的未知問題。但它不是魔法:你只能從你實際收集到的訊號去重建狀態,所以儀表化(instrumentation)的缺口是任何儀表板都填不了的盲點,而更多資料也不會自動變成更多洞察——少了用心的關聯,它只是一堆昂貴的乾草。良好的可觀測性正是讓除錯者的核心問題——是連結、主機、DNS,還是路徑?——能用證據而非猜測來回答的關鍵。
使用者回報結帳頁面很慢。在已具備可觀測性的情況下,一位工程師把一個延遲指標的尖峰、某個服務的錯誤日誌,以及一段顯示延遲是加在單一一次 DNS 查詢上的請求追蹤關聯起來——在數分鐘內就斷定問題出在 DNS,而不是連結或應用程式。若只有基本監控,他們頂多知道「有東西很慢」。
可觀測性結合指標、日誌與追蹤,讓你能調查從未為它寫過警示的問題——並回答「是連結、主機、DNS,還是路徑?」
可觀測性不同於監控:監控檢查已知問題,可觀測性旨在調查未知問題。但你只能從你收集到的訊號重建狀態——儀表化的缺口就是盲點,而沒有關聯的更多資料只是一堆昂貴的乾草。