FR-068 · 需求索引 · 本頁由 build 掃資料夾生成

FR-068 系統 Log 轉發

狀態:已上線 文件 1 份 handoff 1 份

系統 log 可以在 UI 上設定,直接轉發到客戶自己的 log server。

白話說明:客戶(特別是落地版)機房裡通常已經有一套集中收 log 的平台(ELK、Graylog、rsyslog 之類),希望我們的系統也把 log 送過去,跟其他系統的 log 放在一起看。本案讓管理者在系統設定頁填上「對方主機位址+埠號+用哪種協定」,勾選要送哪些內容,按下儲存就開始轉發,不必改設定檔也不必重啟服務;旁邊還有一顆「發送測試 log」按鈕可以當場驗連不連得通。

送的內容分兩條流、各自獨立勾選:應用 log(系統運作紀錄,給工程師排錯用)與稽核事件(誰登入、誰改了什麼,合規客戶接 SIEM 真正要的就是這條)。

轉發是旁路,不會拖垮主服務——網路斷掉、對方主機掛了,本機 log 照常寫,系統照常跑。

給誰用、解決什麼問題

誰會用到 客戶的系統管理者(設定);客戶的資安/維運團隊(在自己的平台上看我們送過去的紀錄)
原本的痛 客戶機房裡每套系統的 log 都進同一個平台,唯獨我們的要另外登入系統看——在客戶的監控網裡是個黑洞;合規客戶的 SIEM 收不到我們的稽核事件
本案之後 在設定頁填對方位址、勾要送什麼、存檔即開始送,不必改設定檔也不必重啟服務
怎麼驗收 進系統管理的「Log 轉發設定」→ 填客戶 log server 的位址與埠號 → 按「發送測試 log」→ 到對方平台上看得到那筆測試訊息 → 存檔後隨便做個操作(例如登入),對方平台收得到對應的稽核事件
§1

收官現況

2026-08-25 需求討論拍板(範圍單純、決策點只有三個,未走 HTML 討論稿),同月完成 BE、FE、手冊與 SPEC,經一輪 STG 驗證與四筆修正後隨 v1.17.0 出貨,188 STG 與 189 POC 皆已升級到位。

design.md 是 2026-08-25 拍板當下的設計定案,內容未隨後續修正回頭改寫;實際落地與設計的差異記在下面「實作與設計的差異」。

§2

D1–D6 決策摘要

完整理由與被排除的方案見 design.md §2。

# 決策 定案
D1 協定 Syslog(RFC 5424,UDP/TCP)+ GELF(UDP/TCP)兩種。這兩種是 rsyslog/Graylog/ELK 三家的最大公約數;不做各家專屬 API 對接(認證與版本相容坑太多)
D2 轉發範圍 應用 log 與稽核事件兩條流都做,UI 上分開勾選。只做應用 log 會做完才發現不是合規客戶要的東西
D3 設定層級 系統層全域一份。資料表帶可空的 tenant_id(NULL=全域)預留租戶層,未來要開只動 UI 與單點 helper
D4 失敗語意 轉發失敗絕不拖垮主服務:掛在 QueueHandler/QueueListener 後面,主執行緒零阻塞;UDP 送出即忘,TCP 斷線靜默降級不重試風暴
D5 敏感內容 第一版不過濾(信任邊界在客戶內網,手冊註明)。架構預留遮罩掛點
D6 生效方式 設定改完熱生效,不重啟服務;另給「發送測試 log」按鈕驗連通
§3

實作與設計的差異

出貨後的修正,都已併入 v1.17.0:

項目 design.md 原本寫的 實際落地
遮罩開關 UI 放一顆 disabled 的開關,標「即將推出」 整個隱藏——未上線的功能不該在畫面上曝光,客戶會問「這個為什麼點不了」 CM-1410
syslog 封包格式 用 stdlib SysLogHandler 即可 stdlib 預設會在封包尾端補一個 NUL byte、時戳也不是真 UTC,兩者都不合 RFC 5424,Graylog 收得到流量卻無法解析。已關掉 NUL 結尾並改送真 UTC 時戳 CM-1408
封包的來源主機欄位 未著墨 原本送出容器 ID(每次重建就變、對方看不懂),改成送站台位址;syslog 與 GELF 兩邊都要改(第一次只改了 syslog 那半邊) CM-1408
授權標示 未著墨 新設定頁被 license 機制誤判為「未授權」功能而擋下,補進基礎設施豁免清單 CM-1409
§4

相關文件

§5

文件

以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。

設計

文件 類型 標題 最後更新
designmd 設計 FR-068 系統 Log 轉發(Log Forwarding to Log Server) 2026-08-29

交接與收口時間軸(handoff/,1 份)

由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。

日期 文件 標題
2026-08-29 2026-08-29-CM1429-public-site-broken-handoffmd CM-1429 交接:需求文件站公網側欄壞掉,成因未查明
§6

Notion 卡

卡片內容(決策紀錄、驗收條件)以 Notion 為準,本頁只記座標。

關係 卡號 標題 狀態
母案 CM-1389 FR-068 系統 Log 轉發:UI 設定轉發到客戶 log server(母卡) Done
子卡 CM-1390 T-1 BE:log 轉發設定表+CRUD+handler 鏈掛載 Done
子卡 CM-1391 T-2 FE:log 轉發設定頁+測試按鈕 Done
子卡 CM-1392 T-3 手冊三家對接範例+SPEC 頁 Done
子卡 CM-1406 T-4 出測試版 image+188 STG 升級驗證 Done
子卡 CM-1408 syslog 封包不合 RFC 5424(尾端 NUL+假 UTC 時戳),Graylog 收得到卻無法 ingest Done
子卡 CM-1409 Log 轉發設定頁被 license 誤標「未授權」 Done
子卡 CM-1410 設定頁隱藏「敏感資料遮罩」開關(未上功能不曝光) Done
子卡 CM-1411 T-5 正式進版打包+188/189 升級(189 只准升級模式、資料不可掉) Done
子卡 CM-1412 雲端空間整合操作下放 Tenant Admin——root 旗標守門改能力點 Done
§7

關聯

牽動的 SPEC 頁(連向線上 SPEC 手冊,開新視窗):

相關需求