告警總是太晚看到?用 HertzBeat 建立即時監控的 5 個關鍵步驟
很多團隊不是沒有監控,而是監控、告警與通知沒有真正接起來。這篇我會用 5 個關鍵步驟拆 HertzBeat 的導入方式,讓告警能在問題擴大前就到真正會處理的人手上。
為什麼很多團隊明明有監控,告警還是總是太晚看到?
真正的問題通常不是「完全沒有監控」,而是監控、告警、通知彼此是斷開的。儀表板有人做,但沒有人固定看;指標有收集,但沒有明確的閾值;通知管道有接,但沒有把告警分派到真正會處理的人。結果就是服務其實早就開始變慢、資料庫連線早就不穩、SSL 憑證早就快過期,但團隊直到使用者抱怨、客服回報,或值班的人手動巡檢時才發現。
如果你最近在看 HertzBeat,我認為最值得注意的不是它「是不是新一代監控平台」,而是它把 monitoring + alerting + notification 放進同一條流程裡,而且採用 agentless、Web UI 為主的操作方式,對很多中小型團隊來說,上手門檻比傳統要自己拼裝多套元件的做法低很多。
先講結論:HertzBeat 的價值,不是多一套儀表板,而是讓告警真的到人
Apache HertzBeat 官方文件把它定位成一個 all-in-one 的 monitoring、alerting、notification 平台,支援網站、資料庫、快取、作業系統、中介軟體、雲原生與網路設備等多種監控場景,也支援 Slack、Email、Webhook 等通知方式。這代表它適合解的問題不是「把監控畫面做得更漂亮」,而是把「資料進來 -> 判斷異常 -> 發出通知 -> 在告警中心處理」這條鏈補完整。
如果你的痛點正好是下面這幾種,HertzBeat 就值得先試:
- 服務其實有異常,但團隊要等人去看 dashboard 才知道
- 告警太多、太吵,久了大家反而忽略
- 通知有送出,但沒有清楚分流到該處理的人
- 你想先快速建立一套可運作的即時監控流程,不想一開始就自己維護太多監控元件
用 HertzBeat 建立即時監控,我會走這 5 個步驟
1. 先部署起來,但只挑最關鍵的服務進來
如果只是要先驗證流程,最簡單的起手式就是官方 Quick Start 提供的 Docker 指令:
docker run -d -p 1157:1157 apache/hertzbeat啟動後進入 http://localhost:1157,預設帳號是 admin/hertzbeat。但我不建議一上來就把所有監控目標全部匯進去。真正有效的做法,是先挑 5 到 10 個最關鍵的東西,例如首頁網站、核心 API、主資料庫、JVM 服務、主機 CPU / 記憶體,因為你現在要建立的是「告警會被看到的最短路徑」,不是把監控範圍一次灌滿。
2. 把監控目標接進來,先確認資料真的有持續進站
HertzBeat 的優勢之一是支援很多常見監控類型與協定,例如 HTTP、JMX、SSH、SNMP、JDBC 等。這代表你可以先從最有感的監控目標開始,例如:網站可用性、API 回應時間、資料庫健康度、JVM 指標、SSL 憑證有效期。
這一步最重要的不是「項目加了多少」,而是 資料有沒有持續更新。如果監控目標建立好了,但實際上沒有穩定拿到指標,那後面的 threshold 與通知設定都只是空轉。我會建議每加一個監控目標,就先在 Monitoring Center 確認最新數值與狀態真的有變化,再往下一步走。
3. 用 real-time threshold 把「觀察」變成「會觸發的告警」
很多團隊的監控卡關,就卡在這裡。畫面上明明看得到 response time、error rate 或 SSL 到期日,但沒有任何規則把它們變成真正的告警。HertzBeat 官方文件把 threshold rule 視為核心功能,而且 real-time threshold 是最適合「需要即時反應」的場景。
實際做法是到 System Page -> Alerting -> Alert Threshold -> New Threshold -> Real-time Threshold,然後選監控指標、設定條件、決定 alert level、notification template 和 trigger count。這裡我特別建議不要偷懶:
- 首頁 API 回應時間持續超過某個值,例如連續 3 次高於 1000ms
- SSL 憑證即將過期時直接告警,而不是等到真的失效
- 錯誤日誌在某個時間窗內累積到一定數量時再通知,避免單點噪音
Trigger Count 很關鍵,因為它能減少單次抖動就吵醒全隊的情況。即時監控不是越敏感越好,而是要在「夠快」和「不要誤報到麻痺」之間抓平衡。
4. 把通知送到會處理的人,而且一定要補上 notification strategy
HertzBeat 官方首頁和通知文件都強調它支援多種通知方式,例如 Slack、Email、Webhook 等。但這裡最容易踩的一個坑是:你新增 recipient,不代表告警就真的會送出去。官方的 Slack / Webhook 文件都有特別提醒,新增接收人之後,還要再配置對應的 notification strategy,指定哪些訊息送給哪些人。
也就是說,這一步至少要做兩件事:
- 建立接收人,例如 Slack Webhook、Email 或 Webhook callback
- 建立 notification policy,根據 alert level 或 tag,把告警送到對的人
如果你只做第一步,團隊最後還是會回到「系統裡有告警,但沒有人真的收到」。對即時監控來說,這是最常見也最致命的空洞。
5. 做一次故障演練,然後用 Alarm Center 把噪音壓下來
告警系統不能只看設定畫面漂不漂亮,一定要做演練。我通常會故意設計一個可控的小故障,例如讓測試 API 的回應時間拉高、讓某個測試服務停掉,或暫時製造一個會觸發 threshold 的條件,然後實際驗證三件事:
- Alarm Center 裡是否真的出現告警
- Slack / Email / Webhook 是否在預期時間內送到
- 告警內容是否足夠讓值班的人知道「哪個服務壞了、嚴重程度是什麼、下一步該做什麼」
HertzBeat 的 Alert Center / Alert Integration 文件也提到 grouping、inhibition、silencing 這些降噪能力。這一層很重要,因為當你真的開始接比較多監控目標時,如果沒有做群組化、抑制和靜默,團隊很快就會從「告警太晚看到」變成「告警太多看到也懶得看」。
什麼情況下,HertzBeat 會特別適合先試?
我認為下面這些情況很適合先用 HertzBeat 做 1 到 2 週的 PoC:
- 你現在最缺的是一條能跑通的監控到通知流程,而不是超複雜的觀測平台架構
- 團隊想先從網站、API、主機、資料庫這類常見目標開始,不想先裝一堆 agent
- 你已經有 Prometheus / Alertmanager 等系統,想把第三方告警整合進同一個 Alert Center
- 你需要用 tag、level、notification policy 做簡單但清楚的值班分流
我會怎麼判斷這次導入有沒有成功?
如果這篇的目標是「不要再太晚看到告警」,那我不會只看有沒有把平台裝起來,而是看這 4 件事:
- 核心服務異常後,團隊是否能在幾分鐘內收到通知
- 告警是否有明確 owner,而不是丟到沒人會看的公共頻道
- 誤報是否已經被 trigger count、grouping、silencing 壓到可接受範圍
- 值班或維運同事是否真的能根據告警內容採取第一步處置
只要這四件事成立,這套監控才算真的開始發揮價值。否則就算 dashboard 再完整,實際上仍然只是「有資料,但沒有反應」。
最後結論
HertzBeat 值得試,不是因為它很紅,而是因為它把監控、告警、通知和告警中心放進同一條操作路徑裡,對想快速建立即時監控流程的團隊很實用。但真正能解決「告警總是太晚看到」的,不是裝好 HertzBeat 本身,而是你有沒有把監控目標、threshold、通知策略和演練流程一起建好。
簡單說,如果你想把「大家有空再看 dashboard」升級成「系統異常時會主動通知到對的人」,那這 5 個步驟就是我認為最務實的起點。
參考資料
- Apache HertzBeat 官方網站:https://hertzbeat.apache.org/
- Quick Start:https://hertzbeat.apache.org/docs/start/quickstart/
- Alarm Threshold Configuration:https://hertzbeat.apache.org/docs/help/alert_threshold/
- Alert Integration:https://hertzbeat.apache.org/docs/help/alert_integration/
- GitHub Repo:https://github.com/apache/hertzbeat