v0.1.0

已知限制

本頁列出 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 埠取得,且主機名稱含埠號時位址無效
只檢查葉憑證 中繼憑證先到期不會反映在天數上

Email

限制 說明
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 安裝,見 快速開始。

EN