"Logging"
- 長期上線主機的維護項目:會累積的資料、定期讀的 log、對外入口的盤點、安全更新、會到期的設定與檢查間隔的推算
單台 Linux 主機(VPS、雲端主機)長期上線時,沒有人操作也會改變的狀態與維護對它們做的事:log 與資料的寫入者和清理機制(logrotate、journald、容器 log)、磁碟寫滿時各元件的反應、每份 log 要讀的欄位、入口在主機與雲端各層的盤點(ss)、各條更新管道的安全更新與重開機(dnf-automatic、unattended-upgrades、needs-restarting)、會到期與會改變的設定、檢查間隔的推算,以及接手一台已上線的主機時先處理哪幾項
- 可觀測性與 log 同生命週期管理
log group、metric、alarm 寫進建立資源的同一套 IaC,讓監控跟資源同生共滅,出事時追得到查得到
- 三層 log 設計
連線生命週期 log、protocol 訊息 log、使用者行為 log — 三層各自的職責、詳細程度和啟停控制
- 功能規格中的 log 點定義方法
把 log 點設計從 debug 階段前移到功能規格階段 — 每個功能的規格文件新增可觀測性欄位,列出啟動 / 步驟 / 錯誤 / 完成四類 log 點
- 自架 log endpoint vs 商業方案的取捨判斷
自用工具用自架 log receiver(20 行 Go + grep)、商業 app 用 Sentry/Crashlytics — 判斷依據是使用者規模和 debug 需求
- 「事後補 log」vs「設計產物 log」的品質差異
事後補的 log 是救火工具、設計產物的 log 是可觀測性基礎設施 — 從一次實機修復補 log 的教訓拆解兩者在格式、覆蓋率、維護成本上的差異
- T.C4 Client-side log 缺失導致 debug 只能靠實機盲測
Flutter app 六個核心元件中只有兩個有 log(且全是 W2 hotfix 補的),連線失敗時開發者無法從任何 log 判斷失敗發生在哪一步 — 被迫用最昂貴的 debug 方式:插拔裝置反覆測試
- 6.5 如何新增結構化記錄欄位
區分 operational log、domain event log 與狀態資料
- 3.5 logging - 日誌系統
結構化日誌輸出與除錯
- 3.6 log/slog:結構化日誌
用 key-value log 設計可查詢、可過濾的程式訊號
- 5.6 Hook 系統可觀測性設計
日誌架構、錯誤可見性、健康監控:讓 44 個 Hook 的運行狀態透明可追蹤
- Ring Buffer(環狀緩衝區)
撈 log 撈不到事發當下那幾行、或想知道一份 log 能回溯多久時讀 — 固定大小、寫滿之後從頭覆蓋的紀錄區
- logrotate
/var/log 底下的檔案越長越大、輪替之後新檔是空的而舊檔還在長、刪了 log 檔磁碟空間沒有回來,或要讀懂 /etc/logrotate.d/ 底下某個設定檔時
- journald(systemd-journald)
用 journalctl 查不到重開機之前的紀錄、journal 佔掉多少磁碟不清楚、某個服務的 log 出現 Suppressed 訊息,或要判斷一筆紀錄該去 journal 還是 /var/log 底下的檔案找時