告警規則
本頁說明 go-web-monitor 何時寄出離線告警、失敗計數如何累積與歸零,以及告警信的內容。
失敗計數
每個網站在 .webMonitor.json 有一個 count 欄位,記錄連續離線次數。每輪檢查後依下表更新(internal/service/monitor.go:159):
| 本輪結果 | 原計數 | 動作 | 新計數 |
|---|---|---|---|
| 上線 | 任意 | 無 | 0 |
| 離線 | 0–3 | 無 | 原計數 + 1 |
| 離線 | 4 | 寄出告警 | 0 |
條件寫法是 (count+1)%5 == 0;由於計數在第 5 次時歸零,實際效果是「每累積 5 次連續離線寄一次」。
stateDiagram-v2
[*] --> Healthy
Healthy: 上線(count = 0)
Failing: 離線(count 1–4)
Healthy --> Failing: 離線
Failing --> Failing: 離線且 count < 4
Failing --> Healthy: 上線
Failing --> Alerted: 第 5 次離線
Alerted: 寄出告警,count 歸零
Alerted --> Failing: 仍離線
Alerted --> Healthy: 上線
告警頻率
| 情境 | 結果 |
|---|---|
| 網站短暫離線 1–4 分鐘後恢復 | 不寄信 |
| 網站持續離線 | 約第 5、10、15... 分鐘各寄一次 |
手動 refresh |
也算一輪,會加速累積 |
告警不會在網站恢復上線時寄出「恢復通知」。
告警信內容
| 欄位 | 值 |
|---|---|
| 主旨 | Website Offline Alert: <url> |
| 格式 | HTML(Content-Type: text/html; charset=UTF-8) |
| 內文 | 網址、Status: Offline、Reason: HTTP <code>、檢查時間 |
Reason 中的狀態碼在連線失敗時為 HTTP 0。
寄送條件
告警以背景 goroutine 呼叫 SMTP.SendEmail(),下列任一不成立時不會寄出,錯誤只寫到 stderr(slog):
enabled為truehost已設定to至少一個收件者
SMTP 的設定方式見 設定 Email 告警,連線細節見 SMTP 連線。