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,並且讓這所有的「監控資料」串連並關聯在一起供隨時查閱。...

October 18, 2025 · Cheng Wei Chen

定期自動執行 Selenium 來監控網站運作狀態

上週比較忙,所以只整理了一篇較短的舊工作筆記。 由於專案環境的緣故,在某個專案遇到無法按往常慣例為服務設置多重的監控措施。經過討論後,最終在此專案使用了一種不太平常的做法來實現「只設置一項監控 Rule,即同時確認 NGINX、PHP-FPM、MySQL 三者是否正常運作」。該做法是透過 Cron job 定期執行自動化腳本,該腳本會啟用 Selenium 來實際登入網站,並進入特定網頁,最後根據是否能回傳正確的網頁結果,來判斷該服務是否仍正常上線。 (本文同步發表於 Medium。) 前言 如果要確認一個網站是否仍正常運作,我們可以使用多種不同的工具來監控它,例如 Zabbix 的 Web Scenarios、pingdom.com 的 Website Monitoring 或其他各式各樣的 Monitoring tools。 除了直接監控網站之外,有些人也會選擇以監控 Server 上的 Web service(例如 NGINX)或其他 Service 的 Status 是否正常,來確認網站是否仍正常運作。不過有經驗的人都知道,導致網站故障的原因很多,Web service status 正常,但網站依然故障也是有可能發生的。因此更多的人通常是並行多種層面的監控措施,並且設置合宜的 Dashboard 一覽從使用者送出 Request 開始直到 Response 回覆使用者為止的整條路線;倘若網站發生故障,只要一覽 Dashboard 何處出現紅燈,就能迅速定位故障問題點。例如 SRE Taiwan 社群的 Earou Huang 就曾經利用 Serverless Framework 做了一個可以監控系統內部各節點健康狀況的 Project - draft-mesh。 (艦長也曾經試用 Earou 的 draft-mesh 弄了一個 Dashboard。) 總之要確認網站是否仍正常運作的方法很多,可以搭建複雜的監控工具,反之也可以撰寫 shell script + curl command 來快速實現簡易的監控。...

January 25, 2021 · Cheng Wei Chen