Skip to content
此頁面由 AI 翻譯,內容可能有疏漏。歡迎到 GitHub 協助改進。

通知中心 ​

通知中心訂閱 Gately 內部的事件匯流排,依規則把 DDNS 變動、憑證到期、WAF 攔截、程序異常等事件推送到 Webhook、Telegram、Bark、ntfy、Gotify、Pushover、Discord、Slack、Server酱、PushPlus、企業微信(WeCom)、釘釘(DingTalk)、飛書(Feishu)和電子郵件。管理介面位於側邊欄「系統」分組 → 「通知中心」。

運作方式 ​

  1. 各模組在狀態變動時向程序內事件匯流排發布事件,發布不會阻塞業務。
  2. 通知中心收到事件後逐條比對規則:規則已啟用、事件層級不低於規則的最低層級、事件類型符合規則的事件清單。
  3. 命中的規則經過靜默去重後,把訊息投遞到規則選擇的已啟用管道。同一事件命中多條規則時,同一管道只發送一次。
  4. 每次投遞的結果(成功或失敗原因)寫入「最近投遞」,記憶體中保留最近 200 筆;失敗同時寫入模組日誌。

單次投遞的逾時為 45 秒。

管道 ​

點擊「新增管道」,選擇類型並填寫欄位。所有管道都有名稱(必填)、備註和啟用開關。金鑰類欄位儲存後不再回顯,編輯時留空表示保持原值。

類型必填欄位選填欄位
Webhook請求網址請求方法(預設 GET,可選 GET、POST、PUT、PATCH)、請求標頭(每行 Key: Value)、請求本文、成功判定內容、逾時(秒,預設 20)、略過憑證驗證
TelegramBot Token、Chat IDAPI 網址(留空使用 https://api.telegram.org)
Bark裝置 Key服務網址(留空使用 https://api.day.app)
企業微信機器人網址無
釘釘機器人網址簽章金鑰(機器人啟用「加簽」時填寫)
飛書機器人網址簽章金鑰(機器人啟用「簽名校驗」時填寫)
電子郵件伺服器、收件者,以及寄件者或使用者名稱至少填寫一項加密方式、連接埠、使用者名稱、密碼
ntfy主題服務網址(留空使用 https://ntfy.sh)、存取權杖
Gotify服務網址、應用程式權杖無
Pushover應用程式權杖、使用者 Key無
DiscordWebhook 網址無
SlackWebhook 網址無
Server酱SendKey無
PushPlusToken無

網址類欄位需要以 http:// 或 https:// 開頭的完整網址。

Webhook 範本變數 ​

請求網址與請求本文中可以使用以下變數,寫法為大括號包住變數名稱(也相容 # 前綴寫法):

變數內容
title標題,格式為 [Gately] 事件標題
message事件的詳細描述
text完整正文,含描述、來源、層級、時間
type事件類型,如 ddns.changed
source事件來源
level層級 info、warn 或 error
timeRFC 3339 格式的時間

事件自帶的附加欄位(如 ip、container)也可以作為變數使用,名稱與上表重複時以上表為準。網址中的變數值會做 URL 跳脫。

電子郵件 ​

加密方式取值預設連接埠
STARTTLSstarttls587
SSL/TLStls465
無加密none25

連接埠填 0 時依加密方式取預設連接埠。收件者可以填多個,以逗號分隔。郵件使用 UTF-8 編碼的純文字,伺服器支援 AUTH 且填寫了使用者名稱時使用 PLAIN 驗證;寄件者留空時使用使用者名稱。

簽章與回傳碼 ​

  • 釘釘:填寫簽章金鑰後,請求自動附帶 timestamp 與 sign。
  • 飛書:填寫簽章金鑰後,請求本文自動附帶 timestamp 與 sign。
  • 企業微信、釘釘、飛書、Bark 會檢查回應中的業務回傳碼,HTTP 200 但業務失敗時同樣記為投遞失敗。

規則 ​

點擊「新增規則」:

欄位說明
名稱必填
事件至少一項。可選具體事件類型,* 表示全部事件,也可以輸入萬用字元,如 ddns.*。萬用字元採用 Go path.Match 語法
最低層級info(資訊)、warn(警告)、error(錯誤),留空為資訊。事件層級低於該值時不推送
管道至少一個
靜默(秒)同一規則下,同一來源的同類型事件在該時間內只推送一次,期間的重複事件會被丟棄。0 表示不去重
啟用開關

提示

WAF 攔截和上游狀態變動可能頻繁發生,建議為這類規則設定 300 秒以上的靜默時間。

規則範本 ​

新增規則時可以點擊範本預先填入事件、等級與靜默時間,再選擇管道儲存:

範本事件
關鍵故障DDNS 更新失敗、憑證續期失敗、上游無法使用、子行程異常結束、備份失敗、容器結束
憑證到期憑證即將到期、續期失敗(靜默 24 小時)
位址變化DDNS 解析更新、STUN 位址變化
服務健康上游無法使用與恢復、容器結束、子行程結束
安全與登入登入失敗、IP 封鎖、登入成功、存取敏感內容
設定變更管理後台的每一次設定變更

事件類型 ​

事件類型名稱層級觸發條件
ddns.changed動態網域:解析已更新資訊DDNS 工作成功更新解析
ddns.failed動態網域:更新失敗錯誤DDNS 工作更新失敗
stun.changedSTUN:穿透位址變動資訊STUN 規則的穿透位址變動
ssl.expiring憑證:即將到期警告憑證剩餘有效期不足 7 天,同一憑證每 24 小時最多提醒一次
ssl.renew_failed憑證:續期失敗錯誤憑證簽發或續期失敗
waf.blockedWAF:攔截請求警告WAF 攔截了一個請求,附帶 ip、host、path 欄位
upstream.down反向代理:上游無法使用錯誤Web 服務的某個後端被判定無法使用
upstream.up反向代理:上游恢復資訊無法使用的後端恢復
docker.exitedDocker:容器結束警告或錯誤容器以非零結束碼結束(警告),或因記憶體不足被終止(錯誤)
process.exited子程序異常結束錯誤由 Gately 託管的子程序異常結束並將自動重新啟動,來源為該程序的日誌名稱
backup.done備份:完成資訊排程或手動備份全部目的地成功,見 設定備份
backup.failed備份:失敗錯誤備份打包失敗,或任一目的地寫入失敗
auth.failed驗證:連續失敗警告管理後台登入失敗,附帶 ip 欄位
auth.banned驗證:IP 已被封鎖警告Web 服務驗證連續失敗觸發自動封鎖
login.success管理後台:登入成功資訊管理後台登入成功,附帶 ip、user 欄位
audit.change管理後台:設定變更資訊管理後台中的任意變更操作,附帶 actor、ip、method、path 欄位,見稽核與設定歷史
audit.access管理後台:存取敏感內容警告下載備份、診斷包、憑證私鑰或開啟終端機等,欄位同上
notify.test測試通知資訊管道的「測試」按鈕產生,不參與規則比對

測試發送 ​

管道卡片上的「測試」按鈕會向該管道直接發送一則標題為「測試通知」的訊息,不經過規則,也不要求管道已啟用。發送成功會提示「測試通知已發送」,失敗時顯示具體錯誤。測試結果同樣出現在「最近投遞」中,規則欄顯示為「測試」。

對應介面為 POST /api/notify/channels/{key}/test,可透過 API 權杖 的 notify:write 權限呼叫。

以 Apache-2.0 授權條款開源發布。