事件中心與通知
事件中心會記錄系統中發生的狀況;通知規則則決定哪些事件需要傳送至哪些管道。建議先確認事件能穩定記錄,再建立少量真正有價值的通知,以免每次正常存取都變成告警雜訊。
資料之間的關係
| 物件 | 作用 |
|---|---|
| 事件 | 一次登入、封鎖、更新或狀態變化的結構化記錄 |
| 供應商 | Webhook、Email 或訊息推播管道的連線設定與憑據 |
| 規則 | 依事件類型、時間窗、Threshold、彙總維度與 Cooldown 決定是否通知 |
| 通知目標 | 規則所引用的供應商,以及該規則專用的接收目標 |
| 投遞記錄 | 規則觸發後,每個目標各自產生的一次傳送與重試記錄 |
刪除事件不會刪除已產生的投遞記錄;清除投遞記錄也不會刪除事件或規則。刪除規則只會停止後續通知,不影響既有事件。
事件頁面
事件頁面可識別的系統事件包括:
- 身分驗證:登入成功、登出、登入失敗、工作階段 IP 漂移;
- 安全性:掃描器攔截、閘道 Rate Limit 封鎖、閘道可見性攔截、WAF 阻擋;
- SSH:登入成功、登入失敗、IP 封鎖;
- 網路:DDNS 更新、FRP 連線/中斷、Cloudflared 連線/中斷;
- 遠端喚醒:WOL 廣播完成(管理員、傳送門、點燈科技或巴法雲);
- 終端機:SSH 目標變更、主機指紋確認、連線測試、本機終端機啟用/停用,以及本機或遠端工作階段的建立、結束、退出與遺失;
- 系統:應用程式更新提示、CPU 告警/恢復、記憶體告警/恢復;
- Runtime:元件啟動、停止、重新啟動、健康檢查失敗、恢復與異常結束。
事件層級分為資訊、注意、錯誤與嚴重;來源系統則分為管理後台、身分驗證 Proxy、系統監控與 Runtime 監控。
頁面支援:
- 搜尋事件 ID、IP、工作階段或憑據;
- 依事件類型、層級與來源系統篩選;
- 分頁查看並開啟結構化詳細資訊;
- 刪除單筆事件,或批次刪除已選取的事件;
- 清除所有事件。
「清除事件」會刪除事件中心保存的所有事件;括號中的數量只代表目前 View 符合的筆數,並不表示只清除目前的篩選結果。此操作無法復原,但不會清除通知規則與投遞記錄。
事件詳細資訊會依類型顯示憑據、驗證方式、工作階段、IP 與地理位置、失敗次數、封鎖時間、DDNS IP 變化、Trace ID、WAF 規則、Tunnel PID、WOL 目標與投遞來源、資源 Threshold 等欄位。閘道可見性攔截還會記錄請求 Host、路徑、方法,以及生效的是閘道全域或 Host 自訂範圍。進行疑難排解時,可複製詳細資訊,並與請求記錄、WAF Log、Tunnel Log 或裝置上線狀態交叉比對。
本機終端機事件會標明終端機後端、執行身分及是否為特權身分,方便確認工作階段實際以誰的權限執行。終端機事件只稽核設定變更與工作階段生命週期,不會保存管理員在 Shell 中輸入的每一條命令;需要命令層級留存記錄時,應在主機或遠端 SSH 目標另外設定稽核。
頁面頂端的 Trace ID 查詢 可貼上 Response Header、攔截頁、Request Log 或通知中的完整 ID。完整鏈路追蹤會關聯同一 Request 的 WAF、系統事件、通知觸發與投遞;舊事件或未啟用對應收集時可能只有部分鏈路。
事件也會記錄導覽面板同步失敗/恢復與遠端裝置 SSH 關機,不應依賴固定的事件類型數量。驗證和安全事件會共用 IP 屬地快取;首次遇到未快取位址時可先儲存,再非同步補齊,通知會在可用時使用補齊欄位。
核心服務狀態與診斷
事件中心 → 狀態 每 5 秒更新管理服務、Go 閘道程序、閘道 Data Plane、驗證橋接、儲存與設定同步的健康狀態。程序卡也會顯示版本、PID、啟動時間、CPU、記憶體或 Go Runtime 資訊;服務卡顯示探測延遲與連續失敗原因。受上游阻擋 代表目前元件本身可執行,但相依元件尚未就緒。
狀態頁面提供三類疑難排解資料:
| 操作 | 內容與範圍 |
|---|---|
複製診斷資訊 | 複製目前版本、平台、元件健康狀態與最近 Runtime 事件的 JSON 摘要 |
查看 Log | 查看管理服務或 Go 閘道最近 200 筆已遮蔽核心 Runtime Log;不包含 Request、WAF 或驗證記錄 |
匯出診斷包 | 下載 diagnostics.json 與有大小上限的管理、閘道及 Supervisor Log,供故障回報使用 |
核心診斷 Log 的總容量上限為 6 MiB;達到上限後會輪替檔案或捨棄低優先級資訊。狀態頁會顯示涵蓋時間、磁碟用量與已捨棄的 INFO 數量。清除單一元件 Log 只會移除該元件目前與上一代的核心 Runtime Log,不會刪除 Runtime 事件、Crash Log 或其他元件 Log。
診斷 Log 會遮蔽常見密鑰欄位,但診斷包仍可能揭露版本、平台、路徑、元件狀態與故障時間。對外分享前請先檢查內容;Request 明細應另從 Request Log 或 WAF Log 匯出,三者並非同一類型的記錄。
Rust 執行診斷
在 事件中心 → 狀態 → 執行診斷 點選 開始 60 秒取樣,每秒收集目前 Rust 管理程序的資源、背景工作及 SQLite 操作統計。開啟視窗不會自動取樣;可提前停止並保留結果,關閉視窗後伺服器仍會自動完成。
收集記憶體詳情 是獨立的按需快照,不會回收記憶體。匯出 JSON 可保留逐秒樣本、操作統計與記憶體詳情,狀態頁診斷匯出也包含目前報告。新一輪會取代上一輪,服務重新啟動後報告會遺失,應先匯出。
CPU 以一個邏輯核心滿載為 100%,首個缺少基準的樣本不等於零;工作經過時間包含等待,不是 CPU 時間。Linux 提供較完整的資訊,macOS 主要提供程序 CPU 與 RSS,Windows 主要提供程序工作集;不可用欄位不等於零。報告不含其他實例或 Go 閘道的資源,單次 RSS 升高不足以確認記憶體洩漏。
Go 閘道記憶體
Go 閘道程序卡右下角的記憶體按鈕可調整 Garbage Collection 強度與 Go Runtime 軟性記憶體上限,也可立即執行一次回收。狀態卡中的 Heap、RSS、GC 次數、Active Request 與連線數可用來判斷趨勢;軟性上限只限制 Go Runtime 管理的記憶體,不是 Process RSS 的硬上限。
積極(GOGC 50)會更頻繁回收,通常降低記憶體但增加 CPU 開銷;平衡(100)是預設值;寬鬆(200)更重視 Throughput。自訂範圍為25–500。- 記憶體上限預設使用自動模式:取執行環境有效記憶體約四分之一,並限制在
128–512 MiB;無法讀取有效記憶體時使用256 MiB。 - 手動上限可設為
64–4096 MiB,且不能超過目前有效系統記憶體的 50%。儲存值會在閘道啟動時、接受業務流量前先行恢復。 立即回收可能短暫增加 CPU 或造成暫停,只適合疑難排解或確認回收效果,不應當作定期最佳化按鈕反覆點擊。
低記憶體 NAS 或 Container 請先保留自動上限;只有狀態頁持續顯示 Heap/RSS 壓力,且已排除流量、深度監控或異常連線後,再逐步降低 GOGC 或設定手動上限。每次調整後都要同時觀察 CPU、延遲與閘道健康狀態。
CPU 與記憶體監控
資源監控只會在 Runtime 能力可用的平台上啟動;目前 Windows 部署不提供此功能。Linux 類環境會依系統資源資訊,計算整機或目前 Container 可見範圍內的 CPU 與可用記憶體,並產生告警與恢復事件。這不是 Process-level Profiler,無法指出實際由哪個處理程序造成負載。
目前的預設規則如下:
| 指標 | 告警臨界值 | 恢復臨界值 | 取樣間隔 | 持續時間 |
|---|---|---|---|---|
| CPU | 80% | 60% | 5 秒 | 30 秒 |
| 記憶體 | 80% | 60% | 5 秒 | 30 秒 |
使用率必須持續達到告警臨界值,才會產生告警;告警後也必須持續降回恢復臨界值,才會產生恢復事件。60%–80% 的中間區間可避免在臨界值附近反覆告警。短暫的 Spike 不會立即形成事件,第一筆 CPU Sample 也只用來建立計算基準。
目前可在管理介面查看資源事件並替其設定通知,但沒有可調整上述取樣與臨界值的控制項。不要將通知規則中的時間窗與觸發次數誤認為資源取樣臨界值:前者決定既有事件如何傳送,後者決定事件何時產生。
Docker 中顯示的是 Container Runtime 可見的 CPU 與記憶體限制;若部署時設定了 Resource Limit,應搭配這些限制解讀告警。沒有資源事件時,請先確認目前平台能力與事件系統皆正常,再檢查負載是否確實持續超過臨界值。
設定通知供應商
前往 事件中心 → 通知 → 供應商,先建立並測試傳送管道。目前支援:
- Webhook;
- WxPusher;
- Server醬;
- PushPlus;
- WeCom(企業微信);
- DingTalk(釘釘);
- Lark(飛書);
- Email;
- PushDeer;
- HarmonyOS MeoW;
- MagicPush;
- Bark;
- Telegram。
不同管道對 Markdown、Action Button、Mention 與訊息長度的支援程度不一,請以新增供應商時顯示的欄位與功能為準。
建立時請設定名稱、類型、啟用狀態與連線參數。部分管道另提供預設接收目標;規則中同名的目標欄位留空時,會沿用供應商預設值。目前使用 WxPusher 必須安裝並登入其官方 App,不能再依賴直接在微信中接收訊息。
儲存前可測試表單中的草稿設定;儲存後也能從清單再次測試。編輯敏感欄位時會顯示「已設定,留空則維持不變」;不需要為了保留金鑰而再次貼上舊值。
Webhook URL、Token、SMTP 密碼與接收識別碼等都屬於敏感設定,不可貼至公開 Log 或截圖。供應商已被規則引用時,後端會阻止刪除;請先調整或刪除對應規則。
Webhook 自訂內容
Webhook 供應商可設定自訂標頭與標準、JSON 或文字本文;規則的 Webhook 目標可繼承供應商設定或覆寫本文。先預覽,再傳送測試請求以確認第三方格式。
編輯器的通知詳情依事件列出可插入欄位,公共詳情提供事件類型、風險、來源、發生時間與彙總統計。使用 {{message.fact_values.login_ip}}、{{message.fact_values.credential_name}} 等固定名稱;名稱不隨語言或排列改變,值仍是通知中的格式化內容。原始事件資料使用 event.payload.*。
{{message.fact_values}} 可引用整個物件;JSON 字串只含單一變數時保留型別,混合文字則轉成字串。事件缺少的欄位會在預覽標示,獨立 JSON 變數為 null,嵌入文字時為空字串,不阻止投遞。
樣例 Context 留空時使用伺服器樣例;填入樣例 JSON 後可修改為目標事件資料,用於標準與自訂本文的預覽及測試,不會儲存或影響實際投遞。重試使用原訊息快照,歷史訊息可能沒有 fact_values。
HarmonyOS MeoW
選擇 鴻蒙MeoW 後填寫:
| 欄位 | 說明 |
|---|---|
服務位址 | 官方 API 使用預設的 https://api.chuckfang.com;自架相容服務請填寫其 Base URL |
接收暱稱 | MeoW App 中設定的使用者暱稱,不得包含 /;此值相當於接收識別碼,應比照敏感憑據保存 |
逾時秒數 | 預設 5 秒,可設定 1~30 秒 |
此管道可傳送 Markdown 通知並支援通知操作,但不支援 Mention。儲存後請先傳送測試訊息,確認 HarmonyOS 裝置已收到內容,再將該供應商加入通知規則。
建立通知規則
前往 事件中心 → 通知 → 規則。至少要有一個供應商才能建立規則;每種事件類型目前只能建立一條規則。新增時只會列出尚未設定規則的事件,並可一次選取多個事件批次建立。
批次建立時會使用下列預設觸發條件:
| 欄位 | 新增預設值 | 說明 |
|---|---|---|
| 時間窗 | 60 秒 | 在此時間窗內累計同一組事件 |
| 觸發次數 | 1 次 | 達到次數後產生通知 |
| 彙總維度 | 依事件自動建議 | 決定哪些事件要計入同一組 |
| Cooldown | 60 秒 | 同一組觸發後,抑制重複通知 |
規則建立後,可逐條編輯觸發條件。彙總維度包括全域、IP、工作階段、主體物件、Hostname 與供應商。自動建議範例如下:
- 登入失敗、掃描器、閘道 Rate Limit、WAF 與 SSH 事件依 IP;
- 閘道可見性攔截依全域彙總;
- 工作階段 IP 漂移依工作階段;
- DDNS 更新依供應商;
- CPU 與記憶體事件依 Hostname;
- Tunnel 與應用程式更新依主體物件;
- 遠端喚醒完成依主體物件區分裝置;
- 登入成功與登出依全域。
一條規則可加入多個供應商,但同一個供應商在該規則中只能加入一次。部分供應商要求在規則目標中填寫接收者、Topic、Chat ID 或其他目標欄位;這些欄位只會影響目前規則。
建議的起始規則
- 登入失敗:依 IP 彙總,在短時間窗內達到多次後再通知;
- 掃描器、閘道 Rate Limit、WAF 與 SSH 封鎖:依 IP 彙總;
- 閘道可見性攔截:預設依全域彙總;流量較大時提高臨界值或延長 Cooldown,避免同一策略產生通知風暴;
- DDNS:依供應商彙總,重點關注失敗結果;
- FRP 與 Cloudflared:依主體物件區分不同 Tunnel;
- CPU、記憶體:同時替告警與恢復事件設定規則;
- 應用程式更新:依主體物件傳送一次提示。
- 遠端喚醒:依主體物件彙總;失敗結果用於告警,成功結果仍只表示廣播已提交,不代表裝置已上線。
登入成功、SSH 登入成功等高頻事件若臨界值設為 1,可能產生大量通知。請依實際存取量調整時間窗、臨界值與 Cooldown。
應用程式更新事件包含 Release Notes 時,系統會將目前可更新版本的說明摘要同時寫入純文字與 Markdown 內文,因此只顯示內文的推播管道也能收到,而不只存在於結構化詳細資訊中。通知不會連續串接多個歷史版本的說明。需要查看完整或更早的內容時,請前往 版本與更新 頁面或專案 Release History。
查看投遞結果
投遞記錄 會顯示觸發時間、規則、供應商、狀態、訊息摘要與嘗試次數。狀態包括佇列中、傳送中、成功、失敗待重試、失敗放棄與已略過。
詳細資訊中可查看:
- 規則、供應商與目前狀態;
- 嘗試次數、觸發時間、傳送時間與下次重試時間;
- 失敗或略過原因;
- 傳送時凍結的標題、摘要與內文 Snapshot;
- 已遮蔽敏感資訊的 Request Summary 與 Response Summary。
排查「規則未觸發」與「供應商未收到」時,請依下列順序:
- 先確認事件本身已經產生。
- 檢查該事件類型是否有規則,且規則與目標是否仍為啟用狀態。
- 檢查時間窗、臨界值、彙總維度與 Cooldown。
- 若已有投遞記錄,請查看狀態、失敗原因、嘗試次數與下次重試時間。
- 檢查供應商連線能力、憑據、接收目標與對端 Rate Limit。
清除投遞記錄會刪除所有投遞歷史,且無法復原,但不會影響事件或後續規則觸發。需要稽核時,請先複製相關詳細資訊。
通知系統只用來輔助事件應變,不能取代請求記錄、WAF Log 與備份。
