Prometheusとの統合
EMQXは、Prometheusなどのサードパーティ監視システムとの統合をサポートしています。PrometheusはSoundCloudによってオープンソース化された監視ソリューションで、多次元データモデルのサポート、柔軟なクエリ言語、強力なアラーム管理など多彩な機能を提供します。
サードパーティ監視システムを利用することで、以下のような利点があります。
- EMQXの監視データを他のシステムの監視データと統合した、包括的な監視システムを構築可能。例えば、サーバーホストの監視情報も取得できます。
- Grafanaダッシュボードなどを使って、図やグラフによるより直感的な監視レポートが得られます。
- Prometheus Alertmanagerを利用したアラームルールや通知方法の設定など、多様なアラーム通知オプションを利用できます。
EMQXはPrometheusのメトリクス監視統合に対して、以下の2つの方法をサポートしています。
- Pullモード: PrometheusがEMQXのREST APIを通じて直接メトリクスを収集します。
- Pushモード: EMQXがメトリクスをPushgatewayサービスにプッシュし、Prometheusがそこからメトリクスを収集します。
本ページでは両モードの設定手順を紹介します。EMQXダッシュボードの左側ナビゲーションメニューで Management -> Monitoring をクリックし、Integration タブで Prometheus を選択して設定を行えます。また、ページ内の Help ボタンをクリックすると、各モードの具体的な設定手順を確認できます。
Pullモード統合の設定
EMQXはPrometheusがシステムメトリクスを収集するために、以下のREST APIを提供しています。
/api/v5/prometheus/stats
: EMQXの基本的なメトリクスとカウンター。/api/v5/prometheus/auth
: 認証・認可を含むアクセス制御に関する主要なメトリクスとカウンター。/api/v5/prometheus/data_integration
: ルールエンジン、コネクター、アクション、Sink/Source、エンコード/デコードに関するメトリクスとカウンター。
これらのAPIを呼び出してメトリクスを取得する際、URLクエリパラメータ mode
を用いて異なるタイプのメトリクスデータを取得できます。パラメータの意味は以下の通りです。
PrometheusのPullエンドポイントの詳細は、EMQX Enterprise APIドキュメントを参照してください。
TIP
デフォルトではPullモードAPIは認証不要です。ページ上の Enable Basic Auth スイッチを設定すると、インターフェースにベーシック認証を有効化できます。有効化後は、EMQXでAPIキーを作成し、Prometheus設定に適用してメトリクスを取得する必要があります。
参考用Prometheus設定例
# prometheus.yaml
global:
scrape_interval: 10s # デフォルトのスクレイプ間隔は10秒ごとです。
evaluation_interval: 10s # デフォルトの評価間隔も10秒ごとです。
# このマシン上のすべての時系列がデフォルトでエクスポートされます。
external_labels:
monitor: 'emqx-monitor'
scrape_configs:
- job_name: 'emqx_stats'
static_configs:
- targets: ['127.0.0.1:18083']
metrics_path: '/api/v5/prometheus/stats'
scheme: 'http'
basic_auth:
username: ''
password: ''
- job_name: 'emqx_auth'
static_configs:
- targets: ['127.0.0.1:18083']
metrics_path: '/api/v5/prometheus/auth'
scheme: 'http'
basic_auth:
username: ''
password: ''
- job_name: 'emqx_data_integration'
static_configs:
- targets: ['127.0.0.1:18083']
metrics_path: '/api/v5/prometheus/data_integration'
scheme: 'http'
basic_auth:
username: ''
password: ''
Pushモード統合の設定
EMQXはメトリクスをPushgatewayにプッシュし、Prometheusがそこからメトリクスを収集する方式をサポートしています。Pushgatewayサービスはデフォルトで無効化されています。ダッシュボードのPrometheus設定ページで Enable Pushgateway トグルスイッチをクリックすると有効化できます。

ビジネス要件に応じて以下の項目を設定し、Save Changes をクリックしてください。
- Interval: メトリクスデータをPushgatewayに報告する時間間隔を指定します。デフォルトは
15
秒です。 - Pushgateway Server: PrometheusサーバーのURLを入力します。デフォルトは
http://127.0.0.1:9091
です。 - Job Name: EMQXクラスター名、ノード名、ホスト名を含む変数を指定します。デフォルトは
${name}/instance/${name}~${host}
です。例えば、EMQXノード名がemqx@127.0.0.1
の場合、name
はemqx
、host
は127.0.0.1
になります。 - Headers: Pushgatewayにプッシュする監視メトリクスのHTTPヘッダーのキーと値を入力します。Add ボタンをクリックして複数のヘッダーを追加可能です。型は文字列で、例として
{ Authorization = "some-authz-tokens" }
のように設定します。
同時に、Help ボタンをクリックし、Use Pushgateway タブの手順を参照して設定を行うこともできます。
TIP
Pushモードでは現状、/api/v5/prometheus/stats
エンドポイントのEMQX基本メトリクスとカウンターのみが含まれるため、Pullモードの利用を推奨します。
Pushgatewayの有効化および設定は、設定ファイルに以下の内容を追加することでも可能です。設定項目の詳細はConfiguration - Prometheusを参照してください。
prometheus {
push_gateway_server = "http://127.0.0.1:9091"
interval = 15s
headers {}
job_name = "${name}/instance/${name}~${host}"
}
GrafanaでEMQXメトリクスを可視化する
GrafanaとPrometheusを組み合わせてEMQXメトリクスを可視化することも可能です。これはEMQXのテンプレートファイルをGrafanaにインポートすることで実現できます。テンプレートのダウンロードは、EMQX | Grafana Dashboard をクリックするか、Monitoring ページの Integration タブ下部の Help ボタンから行えます。
TIP
詳細な操作手順は Monitoring MQTT broker with Prometheus and Grafana をご覧ください。