監控與 Metrics
EMQX 監控與 Metrics:Dashboard 統計、節點狀態、系統資源、Prometheus 整合概念與訊息速率指標。
為什麼要學這個
broker 用起來正常,不代表它負載健康。要守住一間房子的訊息骨幹,你需要知道「目前有多少連線與訂閱、每台節點還剩多少記憶體、訊息進出速率是不是爆炸」。EMQX 的 Monitoring 模組,就是把這些數值集中在一起看的地方。
這章會帶你讀懂 Dashboard 裡的叢集統計、節點狀態與系統資源欄,以及 EMQX 提供的 Stats 與 Metrics 兩種指標。最後再用 Prometheus 說明「把 EMQX 監控搬進自己的監控系統」的入門概念,讓你在家也能搭自己的 Grafana 儀表。
核心概念
EMQX 把監控資料分成兩類:Statistics(統計)是整數型計值,給你某一個時間點的單一數值;Metrics(計量)是整數型的累加計數器,例如累計的位元組數與訊息數。兩者都是 Dashboard 最直接的觀察方式。
在 Dashboard 左側展開 Monitoring,會看到幾個子選單:Cluster Overview(叢集總覽)、Clients、Subscriptions、Retained Messages,以及 Delayed Publish 與 Alarms——後兩個是 EMQX Enterprise 版的功能。
若不想打開 Dashboard,你還有三條路:用 REST API 抓同一份資料、訂閱 $SYS/ 開頭的系統主題,或把指標推給 Prometheus 等第三方監控。這章尾段會帶到 Prometheus。
名詞對照
| 英文 | 中文 | 說明 |
|---|---|---|
| Monitoring | 監控 | Dashboard 中觀察叢集狀態的模組 |
| Cluster Overview | 叢集總覽 | 登入後的首頁,叢集級數字 |
| Node | 節點 | 叢集裡的一座 EMQX 實例 |
| Statistics | 統計 | 某一時間點的整數型計值 |
| Metrics | 指標 | 累計型的計數器(位元組、封包、訊息、事件) |
| Prometheus | 普羅米修斯 | 第三方監控/蒐集指標的服務 |
動手做
進入 Monitoring 模組
左側選 Monitoring → Cluster Overview,先看到叢集層級的連線數、訂閱數與主題數。
切到 Nodes 分頁
上半部把群組切到 Nodes,展開叢集裡的每一顆節點(你家用 add-on 一般是單節點)。
看系統資源與版本
節點欄可看到連線數、版本、持續運行時間、Erlang 進程數與記憶體/CPU 用量。點節點名能再進「節點細節」。
利用〔Metrics〕分頁看累計指標
再切 Metrics 分頁,逐項看 bytes、packets、messages、 events 四組計量;把數字與時間選取範圍一起觀察。
Cluster Overview:連線與節點總覽
Cluster Overview 是 Monitoring 的第一個子選單。切到 Nodes 分頁,能看到每個節點的名稱、狀態、持續時間、連線數、版本、Erlang 進程數、記憶體與 CPU 用量。節點畫成灰色表示它已停止,點名稱可進「節點細節」看 system paths 與 log 路徑。
居家環境通常是單節點,因此 Node 分頁的第一個預設就是你的 add-on 本身。版本欄是確認「目前 EMQX 是 5.8.9」最直接的地方。
下方時間序列圖可以選過去 1 小時、6 小時…… 到 7 天,觀察連線數與訊息量的走勢。
若想讓 Dashboard 重新開始計數,可以用 Reset Monitoring Data 把前面累積的資料清掉再累積。
Statistics 與 Metrics
在 Cluster Overview 的 Metrics 分頁,EMQX 的 Metrics 分四個維度:bytes(輸入輸出的位元組數)、packets(各種 MQTT 封包收發數)、messages(訊息數,含 QoS 0/1/2、接收、送出、轉發、捨棄)、events(事件數,如連線、session、認證與存取)。
另有一部分是 Statistics,例如:
connections.count/connections.max:目前連線數與歷史最大值。sessions.count/sessions.max:目前的 session 數。subscriptions.count:目前訂閱總數(含共享訂閱)。topics.count:目前唯一主題數。retained.count:目前保留(retained)資訊數量。delayed.count:目前延遲發布的資訊數。
多數指標都用「目前值+歷史最大」的形式給你看,適合做長期趨勢。
跟 Prometheus 整合
EMQX 可以把監控名片揭露給第三方監控系統,最常見的是 Prometheus。好處是讓 EMQX 與主機其他量在同一張圖上,或用 Grafana 畫出視覺化儀表、用 Alertmanager 通知異常。
在 Dashboard 的 Management → Monitoring 頁,「Integration」分頁選 Prometheus 設定。EMQX 支援兩種模式:
- Pull(拉取)模式:Prometheus 定期來打 EMQX 的 REST API,例如
/api/v5/prometheus/stats(基本指標與計數器)、/api/v5/prometheus/auth(存取控制)、/api/v5/prometheus/data_integration(規則、Connector、Action、Sink)、Sink 相關)。 - Push(推送)模式:EMQX 把指標推給 Pushgateway(預設關閉),再由 Prometheus 去收集;此模式目前只包含 basic 指標。
基本上最常用的是「拉取模式」——你只要在 Prometheus 設定底下 url 指到 EMQX,就能收 metrics。
拉模式 API 預設不需驗證;若要啟用 Basic Auth,需在 EMQX 建立一組 API key,並把 key 放進 Prometheus 設定。
故障排除
- 首頁數字看似沒有更新:Overview 的圖有時間範圍與整理間隔可選;改長範圍再觀察,或按 Reset Monitoring Data 重新累積。
- 某節點畫成灰色:表示該節點停止。別把資料誤判成「缺號」;先看到節點狀態欄。
- 想找目前 EMQX 版本:進 Monitoring → Nodes,Version 欄就是正在運作的 EMQX 版本(本書目標是 5.8.9)。
- Delayed Publish/Alarms 在左欄消失:這兩項是 EMQX Enterprise 版功能,Open Source 5.8.9 不提供,不是壞掉。
常見問題
Statistics 跟 Metrics 到底差在哪
Statistics 是一次抓的整數型計值(例如現在有幾個訂閱、歷史最大幾個);Metrics 是累計型計數器(例如累計收了多少 bytes、發出多少封包)。Dashboard 把兩者都擺在 Monitoring 裡。
為什麼 Dashboard 看不到 Alarms/Delayed Publish
因為它們是 EMQX Enterprise 版的功能。Open Source 5.8.9 不會在 Monitoring 左欄顯示,這是授權界線,不是設定錯。
Prometheus 的 Pull 與 Push 我該選哪種
多數人選 Pull(拉取),EMQX 官方文件也建議 Pull,因為 Pushgateway push 模式目前只包含 basic 指標,沒有 auth 或 data_integration 的那麼完整。
怎麼看一座節點的系統資源
進 Monitoring → Nodes,點節點名稱開啟細節頁,裡面有記憶體/CPU 用量、Erlang 進程數與連線數等。家用單節點把它當作「EMQX 實例的健康狀態」即可。