已知限制
本頁列出 go-web-monitor 目前版本中已確認的行為限制與缺陷,每項附上觸發條件與替代做法。
監控清單
| 限制 | 觸發條件 | 替代做法 |
|---|---|---|
| 重啟後網址格式改變 | 以 del example.com 刪除重啟前用 add example.com 加入的網站:重啟後清單載入的是正規化後的 https://example.com,比對不到 |
刪除時輸入完整網址,或新增時就輸入完整網址 |
add 會卡住介面 |
目標無回應時,add 在介面執行緒上同步檢查,最多等待 HEAD 與 GET 各 10 秒 |
新增前先確認網址可連線 |
| 只有 404 觸發 GET | 伺服器以 405 等其他狀態碼拒絕 HEAD 時直接判定離線 |
監控支援 HEAD 的端點(如健康檢查路徑) |
SSL 檢查
| 限制 | 觸發條件 |
|---|---|
http:// 網站一律 N/A |
前綴未去除,主機名稱解析錯誤 |
自訂埠的網站一律 N/A |
憑證固定從 443 埠取得,且主機名稱含埠號時位址無效 |
| 只檢查葉憑證 | 中繼憑證先到期不會反映在天數上 |
| 限制 | 說明 |
|---|---|
| CC 收件者收不到信 | Cc 只寫在信件標頭,RCPT TO 只送給 to 清單,CC 地址實際上不會收到 |
| 無恢復通知 | 網站恢復上線時不寄信 |
| 告警信尾連結為舊 repo 名稱 | 信尾連結指向 github.com/pardnchiu/web-monitor |
| 密碼明文存放 | .webMonitor.json 以 0644 權限寫入 |
介面與錯誤回饋
| 限制 | 說明 |
|---|---|
| 錯誤訊息不顯示於面板 | add/del/smtp 錯誤以 fmt.Printf 輸出,會直接寫在 tview 畫面上造成殘影;test 與告警的寄送錯誤寫到 stderr |
| 無法設定檢查間隔 | 固定每 1 分鐘 |
| 無歷史紀錄 | 只保存最近一次結果,Uptime 是當輪比例 |
並行安全
狀態表 status 的保護不完整:Update() 在取鎖前讀取 status,Add()/Remove() 只持有讀鎖卻寫入 status 與 list,GetStatus() 回傳的是同一個 map 供介面迭代。背景檢查(每分鐘或 refresh)與 add/del 同時發生時,可能觸發 Go runtime 的 concurrent map read and map write 致命錯誤並結束程式。
降低風險的做法:避免在 refresh 或整分鐘檢查進行中執行 add/del。
安裝
go.mod 的 module 名稱為 website-monitor,與 GitHub 路徑不符,無法以 go install 安裝,見 快速開始。