Data Observability 系列文 7:有了監控為什麼還不夠?
前言 嗨,大家好,我是艦長。 歡迎來到系列文的第 7 篇。過去 6 篇,我鋪了很多梗,讓大家可以更多認識軟體圈與 Data 圈的差異,點出原來 Data 圈關心的產品就是 Data 本身。 這篇文我們繼續拉回一個不分軟體圈和 Data 圈的議題「為什麼我們需要可觀測性?」 軟體圈有監控,但還是會發生客戶比你更早打電話來反應:「欸,你們的服務,今天是不是怪怪的?」 而 Data 圈也同樣有做資料監控,可是 Data User 還是會跑來跟你說:「欸,這份報表的數字怪怪的喔!」 所以到底是為什麼,明明我們已經有做了許多努力,卻無法解決品質問題? 監控:見樹不見林的被動查核 前一篇文章中,我們有談到資料工程、資料監控。我覺得其實工程與監控這兩者都是基礎建設,也就是本來就該做的基本任務。 你本來就需要資料工程搭建資料管線去處理 Data,你的資料管線本來就該有基本的監控、告警與日誌功能。同樣你寫的軟體與線上服務,本來就該做好應有的 Error handling、Log 及監控告警等。 然而過去以來我們多半都是用一種「被動」的態度在處理「監控」。 因為有了 A,所以要加上 B 監控。 因為發生了 C,所以要加上 D 監控。 因為老闆說要 E,所以加上 F 監控。 也就是被動的檢核,「基於已知的問題,設定規則來檢查」。 並不是說監控(被動的檢核)就沒有用處,它當然很有用,它能幫我們發現與紀錄一些明確的問題,不然為什麼大家要在各種任務上,建立各種檢核表、SOP、檢核點。但它也有所侷限,容易形成一種局部、單點的查核。 可觀測性:提升系統資訊透明度的主動思維 而本系列文想要介紹的「資料可觀測性(Data Observability)」,則是受到近年(有人說是約 2010 年)開始在 IT 圈浮出水面之關鍵字「可觀測性(Observability)」的影響,約於 2019 年開始有人談論的題目。 有些文章會將可觀測性定義為,建立一套機制,讓我們可以透過主動觀測目標系統的「外部輸出」(例如:Logs, Metrics, Traces),以此有效的推斷、理解該系統的「內部狀態」,並且除錯那些「未知的問題」。 (謎之音:怎麼聽起來有點玄?) 我覺得這個定義點出「可觀測性(Observability)」最主要的重點是,讓我們建立一種「主動觀測」的思維。而這與 DevOps 提倡的提升「資訊透明度」是相符合的。 也就是過去我們也有做監控、有收集 Log、收集 Metrics,但是我們並沒有主動的去運用這些「監控資料」。 而自從進入可觀測性 1.0 的時代之後,我們開始對「監控」加入了主動性,即是我們不只做過去的那些收集 Logs、收集 Metrics、設立告警 Rules 的基本建設。我們還加上 Traces,並且讓這所有的「監控資料」串連並關聯在一起供隨時查閱。...