前言作為一款全球下載量超千萬的大規(guī)模分布式物聯(lián)網(wǎng) MQTT 服務(wù)器,最新發(fā)布的 EMQX 5.0 不僅全球首個(gè)達(dá)成單集群 1 億 MQTT 連接支持,也是首個(gè)將 QUIC 引入 MQTT 的開創(chuàng)性產(chǎn)品。如今,EMQX 在各個(gè)行業(yè)為高可靠、高性能的物聯(lián)網(wǎng)實(shí)時(shí)數(shù)據(jù)移動、處理和集成提供著動力,助力企業(yè)構(gòu)建關(guān)鍵業(yè)務(wù)的 IoT 應(yīng)用。 在使用 EMQX 的過程中,不管是用戶、運(yùn)維人員還是開發(fā)者,都需要對其運(yùn)行狀態(tài)及產(chǎn)生的指標(biāo)數(shù)據(jù)進(jìn)行監(jiān)控與觀察,以便及時(shí)發(fā)現(xiàn)問題并處理。除使用內(nèi)置的 Dashboard 以外,我們還可以通過 EMQX 提供的 API 來將監(jiān)控?cái)?shù)據(jù)集成到第三方監(jiān)控平臺中,對包括集群節(jié)點(diǎn)狀態(tài)、連接、訂閱主題數(shù)、消息吞吐量等 EMQX 運(yùn)行狀態(tài)相關(guān)指標(biāo)進(jìn)行監(jiān)控。 使用第三方監(jiān)控系統(tǒng)對 EMQX 進(jìn)行監(jiān)控有如下好處:
本文將以 Prometheus 和 Grafana 為例,介紹如何將 EMQX 5.0 的監(jiān)控?cái)?shù)據(jù)集成到 Prometheus 中,使用 Grafana 來展示 EMQX 的監(jiān)控?cái)?shù)據(jù),并最終搭建出一個(gè)簡單的 EMQX 監(jiān)控系統(tǒng)。
準(zhǔn)備工作在開始之前,我們需要先準(zhǔn)備好以下運(yùn)行環(huán)境,安裝并運(yùn)行所需要的軟件工具。本文示例將使用 Docker 來安裝和啟動,讀者也可根據(jù)文章中提供的官方下載地址,自行下載安裝包進(jìn)行安裝。 安裝 EMQX 5.0使用 Docker 快速安裝和啟動 EMQX 5.0: docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:latest 除 Docker 安裝外,EMQX 還支持使用 RPM 或 DEB 包安裝,具體安裝方法請參考 EMQX 5.0 安裝指南。 安裝完成后,我們可以打開 http://localhost:18083來訪問 EMQX 的 Dashboard,查看 EMQX 的運(yùn)行狀態(tài)。如果能夠正常訪問到 EMQX 的 Dashboard,此時(shí)說明 EMQX 已經(jīng)安裝成功。 ![]() 安裝 Prometheus同樣,示例中我們將使用 Docker 的方式來快速安裝和使用 Prometheus,因?yàn)榇藭r(shí)我們還沒有開始配置 Prometheus,所以可以先下載一份 Prometheus 官方提供的 Docker 鏡像。 docker pull prom/prometheus 在安裝完成后,需要配置一份 Prometheus 的配置文件,用于指定 Prometheus 的數(shù)據(jù)源,以及告警規(guī)則等信息。因此可先將 Prometheus 的配置文件配置好,在啟動時(shí)將配置文件掛載到容器中運(yùn)行即可。具體配置步驟請見后文。 除使用 Docker 外,也可以參考 Prometheus 官方文檔,下載和使用二進(jìn)制包來安裝和運(yùn)行 Prometheus。 安裝 Grafana使用 Docker 快速安裝和啟動 Grafana: docker run -d --name grafana -p 3000:3000 grafana/grafana-oss 讀者也可以參考 Grafana 官方文檔,下載和使用二進(jìn)制包來安裝和運(yùn)行 Grafana。 當(dāng) Grafana 啟動完成后,我們可以打開 http://localhost:3000來訪問 Grafana,如果能夠正常訪問到 Grafana 的登錄頁面,此時(shí)說明 Grafana 已經(jīng)安裝成功。 ![]() 安裝 Node Exporter這是一個(gè)可選的步驟。 如果想要監(jiān)控部署 EMQX 的主機(jī)信息,可以使用 Node Exporter 來獲取主機(jī)的信息。Node Exporter 用于收集服務(wù)器的監(jiān)控?cái)?shù)據(jù),例如 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等信息。
本文不建議使用 Docker 來安裝 Node Exporter。安裝完成后,我們可以通過http://localhost:9100/metrics來訪問 Node Exporter 的監(jiān)控?cái)?shù)據(jù)。如果可以訪問到系統(tǒng)主機(jī)的監(jiān)控?cái)?shù)據(jù),說明 Node Exporter 已經(jīng)安裝成功。 ![]() 配置 Prometheus完成上述的準(zhǔn)備工作后,我們需要配置 Prometheus,使 Prometheus 可以正常采集到 EMQX 的監(jiān)控?cái)?shù)據(jù)。 配置 Prometheus 數(shù)據(jù)采集Prometheus 通過配置文件來指定數(shù)據(jù)采集的目標(biāo),配置文件默認(rèn)路徑為/etc/prometheus/prometheus.yml,可以通過 --config.file參數(shù)指定配置文件路徑。 EMQX 5.0 提供了一個(gè)獲取 Prometheus 格式監(jiān)控?cái)?shù)據(jù)的 HTTP API --/api/v5/prometheus/stats,使用該 API 時(shí)無需認(rèn)證信息,我們只需要將其配置到 Prometheus 的配置文件中的metrics_path中即可。 對于使用 Node Exporter 來獲取主機(jī)監(jiān)控?cái)?shù)據(jù)的用戶,還需要將 Node Exporter 服務(wù)的地址配置到 Prometheus 的配置文件的 static_configs中。 在 Prometheus 配置文件中,通過 scrape_configs指定數(shù)據(jù)采集的目標(biāo),以下為完整的 Prometheus 配置文件內(nèi)容示例:
# prometheus.yaml 在上述配置中,job_name為數(shù)據(jù)采集的任務(wù)名稱,static_configs為數(shù)據(jù)采集的目標(biāo),targets為數(shù)據(jù)采集的目標(biāo)地址,127.0.0.1:18083為 EMQ X 5.0 的 API 服務(wù)的地址端口。 最后再將上述的配置文件內(nèi)容保存為prometheus.yaml,并將其拷貝到 /etc/prometheus/目錄下,或存儲到您的需要存儲該文件的自定義路徑下。至此我們就完成了 Prometheus 的簡單配置。 啟動 Prometheus在完成了 Prometheus 的配置后,我們就可以通過使用配置文件來啟動 Prometheus 服務(wù)了。如果您是使用 Docker 安裝的 Prometheus,可以通過以下命令啟動 Prometheus: docker run -d --name prometheus -p 9090:9090 -v /path/to/your/prometheus.yaml:/etc/prometheus.yaml prom/prometheus --config.file=/etc/prometheus/prometheus.yaml 如果是通過其它方式下載和安裝的,可以在運(yùn)行 Prometheus 時(shí)指定配置文件路徑,例如: ./prometheus --config.file=prometheus.yml
運(yùn)行成功后,打開 http://localhost:9090就可以訪問 Prometheus 的 Dashboard 了。通過 Dashboard 可以查看 Prometheus 的運(yùn)行狀態(tài),輸入 emqx可以查找 EMQX 的監(jiān)控?cái)?shù)據(jù),如果數(shù)據(jù)顯示正常,就表示此時(shí) Prometheus 已經(jīng)成功啟動,并成功采集到 EMQX 的監(jiān)控?cái)?shù)據(jù)。 ![]() 關(guān)于使用 Pushgateway除直接通過使用包含 EMQX 的 API 配置文件的方式來指定采集數(shù)據(jù)指標(biāo)外,EMQX 同樣支持使用 Pushgateway 來采集數(shù)據(jù)指標(biāo)。
通常情況下,我們不需要使用 Pushgateway 服務(wù),因?yàn)?EMQX 本身就支持通過 API 來獲取數(shù)據(jù)指標(biāo)。如果盲目使用 Pushgateway 去獲取數(shù)據(jù),可能會出現(xiàn)一些問題,例如:Pushgateway 監(jiān)視多個(gè)實(shí)例時(shí),Pushgateway 會成為單個(gè)故障點(diǎn),Pushgateway 不會丟棄或者刪除其 Series 并且會一直暴露給 Prometheus,等等。 但是在某些情況下,我們可能需要使用 Pushgateway 來采集數(shù)據(jù)指標(biāo),例如:當(dāng) EMQX 服務(wù)運(yùn)行在 Docker 容器或 Kubernetes 集群中時(shí),我們可以通過使用 Pushgateway 來采集數(shù)據(jù)指標(biāo),而不需要將 EMQX 的 API 暴露到外部網(wǎng)絡(luò)中。且通常,Pushgateway 中唯一有效用例是用于捕獲服務(wù)級批處理作業(yè)的結(jié)果。 使用 Docker 安裝 Pushgateway 服務(wù): docker run -d --name pushgateway -p 9091:9091 prom/pushgateway 此時(shí),我們可以通過 http://localhost:9091來訪問 Pushgateway 的 Dashboard。 EMQX 提供了一個(gè)配置 Pushgateway 服務(wù)的 API,可以將 EMQX 的數(shù)據(jù)指標(biāo)通過配置上報(bào)到 Pushgateway 的服務(wù)地址中,并最終由 Prometheus 從 Pushgateway 中拉取數(shù)據(jù)指標(biāo)。同時(shí)也可以直接在 EMQX Dashboard 中配置 Pushgateway 的服務(wù)地址,輸入完成后,點(diǎn)擊更新即可。 ![]() 使用 Pushgateway 需要在 Prometheus 的配置文件的 scrape_configs中新增如下配置:
# EMQX Pushgateway monitoring 完成配置后,同樣根據(jù)上述中啟動 Prometheus 的操作,使用配置文件啟動 Prometheus 服務(wù),即可完成 EMQX 的監(jiān)控配置。 配置 Grafana在完成了使用 Prometheus 采集 EMQX 數(shù)據(jù)指標(biāo)的配置后,我們就可以使用 Grafana 來可視化監(jiān)控 EMQX 的指標(biāo)數(shù)據(jù)了。經(jīng)過前文的準(zhǔn)備工作,我們已經(jīng)可以成功打開 Grafana 的 Web 控制臺了。初次使用 Grafana 的默認(rèn)賬號和密碼為 admin,登錄成功后,我們就可以添加數(shù)據(jù)源了。 添加 Prometheus 數(shù)據(jù)源使用 Grafana 可以將 Prometheus 作為數(shù)據(jù)源,添加 Prometheus 數(shù)據(jù)源的步驟如下:
![]() 配置完成后,我們就可以在 Grafana 中使用 Prometheus 作為數(shù)據(jù)源來獲取監(jiān)控?cái)?shù)據(jù)了。接下來我們可以繼續(xù)添加 Dashboard 的模版來可視化監(jiān)控 EMQX 的數(shù)據(jù)指標(biāo),也可以手動新建一個(gè) Dashboard,根據(jù)自己的需求來添加圖表。 導(dǎo)入 Dashboard我們提供給了一個(gè)默認(rèn)的 Grafana 的 Dashboard 模板,可以直接導(dǎo)入到 Grafana 中,然后選擇剛才新建的 Prometheus 數(shù)據(jù)源,倒入成功后打開監(jiān)控面板后,就可以看到 EMQX 的監(jiān)控?cái)?shù)據(jù)了。 默認(rèn)的 Dashboard 模板可以在 EMQX | Grafana Dashboard 中下載,也可以在 EMQX Dashboard 的 監(jiān)控集成配置頁面中的幫助頁面里,點(diǎn)擊 下載按鈕下載。 具體的導(dǎo)入步驟如下: 1.點(diǎn)擊左側(cè)的 Import,進(jìn)入導(dǎo)入 Dashboard 的頁面; ![]() 2.點(diǎn)擊 Upload JSON file,選擇剛才下載的 Dashboard 模板 來導(dǎo)入,或直接輸入 https:///grafana/dashboards/17446-emqx/ 地址在 Import via 欄下的輸入框中; ![]() 3.點(diǎn)擊 Load,選擇剛才新建的 Prometheus 數(shù)據(jù)源,點(diǎn)擊 Import,即可導(dǎo)入 Dashboard 模板。 ![]() 導(dǎo)入 Dashboard 模板后,就可以在監(jiān)控面板內(nèi)看到 EMQX 的監(jiān)控?cái)?shù)據(jù)了,如下圖所示: ![]()
以下為該模版中默認(rèn)顯示的指標(biāo):
您也可以根據(jù)默認(rèn)模版,自定義修改 Dashboard,添加自己需要的指標(biāo)或修改圖表的樣式等,具體操作步驟可參考 Grafana 官方文檔。 在 EMQX Dashboard 中輕松配置集成 Prometheus從 EMQX 5.0.11 版本起,用戶可以在 EMQX Dashboard 中的 功能配置-> 監(jiān)控-> 監(jiān)控集成頁面中,選擇 Prometheus,并在該選項(xiàng)下點(diǎn)擊「幫助」按鈕來獲取更多的監(jiān)控集成操作信息,在指導(dǎo)下更輕松地配置 Prometheus。 您只需要根據(jù)幫助頁面的步驟提示,安裝 Prometheus 和 Grafana 服務(wù),然后在配置項(xiàng)填入一些關(guān)鍵的配置信息,如 EMQX 的地址、獲取指標(biāo)數(shù)據(jù)的 API 等,點(diǎn)擊生成按鈕就可自動生成并下載配置文件,還可以下載默認(rèn)的 Grafana Dashboard 模板。 ![]() 同樣在幫助頁面中,可以分為默認(rèn)和使用 Pushgateway 兩種配置方式。使用 Pushgateway 的配置方式,可以在頁面中打開啟動開關(guān),輸入 Pushgateway 的地址和上報(bào)數(shù)據(jù)時(shí)間,點(diǎn)擊保存后,即可完成配置。 更多關(guān)于如何在 Dashboard 中配置集成 Prometheus 的信息,可以參考 EMQ X Dashboard 配置監(jiān)控集成的文檔。 總結(jié)本文介紹了如何使用 Prometheus 采集 EMQX 的數(shù)據(jù)指標(biāo),并使用 Grafana 對其進(jìn)行可視化監(jiān)控。 閱讀我們的指標(biāo)監(jiān)控文檔,了解更多關(guān)于您可以查詢到的數(shù)據(jù)指標(biāo)。 有關(guān)使用該監(jiān)控系統(tǒng)中的規(guī)則和配置告警的更多詳細(xì)教程文章,敬請關(guān)注后續(xù)推送。
|
|