Skip to content

Prometheusとの統合

EMQXは、SoundCloudが開発したオープンソースの監視ソリューションであるPrometheusなどのサードパーティ監視システムとの統合をサポートしています。Prometheusは多次元データモデル、柔軟なクエリ言語(PromQL)、強力なアラート機能を提供します。

サードパーティ監視システムを利用することで、以下のような利点があります。

  • EMQXの監視データを他のシステムの監視データと統合した完全な監視システムを構築可能。例えば、サーバーホストの監視情報も取得できます。
  • Grafanaダッシュボードを使ったEMQXメトリクスの可視化など、より直感的な監視レポート(図表)を作成可能。
  • Prometheus Alertmanagerを利用したアラームルールや通知方法の設定など、多様なアラーム通知オプションを利用可能。

EMQXはPrometheusメトリクス監視の統合方法として、以下の2つのモードをサポートしています。

  • Pullモード:PrometheusがEMQXのREST APIを通じてメトリクスを直接収集する方式。
  • Pushモード:EMQXがPushgatewayサービスにメトリクスをプッシュし、PrometheusがPushgatewayから収集する方式。

Prometheus統合の設定手順:

  1. EMQXダッシュボードの Management -> Monitoring に移動します。
  2. Integration タブに切り替えます。
  3. 監視プラットフォームとして Prometheus を選択します。

選択したモードにより、一部の設定項目はPullモードのみ適用されるものや、両モードに影響するものがあります。詳細な設定手順はダッシュボードページの Help ボタンをクリックしてご確認ください。

Pushgatewayを有効化

Prometheus設定オプション

このセクションでは、ダッシュボードで Prometheus を選択した際に利用可能な全設定オプションについて説明します。

一般オプション(Pullモード・Pushモード両方に影響)

レイテンシーバケット

レイテンシー関連メトリクスのヒストグラムバケット境界を指定します。

形式

カンマ区切りの期間リスト:

10ms, 100ms, 1s, 5s, 30s

説明

これらの値は、Prometheusでレイテンシーメトリクスをヒストグラムバケットに分類する際の境界を定義します。バケット間隔が小さいほど詳細な粒度になりますが、メトリクスのカーディナリティやストレージ使用量が増加する可能性があります。

この設定は内部で生成されるレイテンシーヒストグラムメトリクスに影響し、以下に適用されます。

  • Pullモードメトリクス
  • Pushモードメトリクス(Pushgateway経由)

Pullモード設定

以下のオプションは、PrometheusがREST API経由でEMQXメトリクスをスクレイプする場合にのみ適用されます。

Basic Authの有効化

PrometheusのスクレイプAPIに対するHTTP Basic認証の有効化/無効化を設定します。

デフォルトでは、Prometheus PullモードAPIは認証不要です。このオプションを有効にすると:

  • Prometheusは以下のAPIにアクセスする際にHTTP Basic認証を使用する必要があります:
    • /api/v5/prometheus/stats
    • /api/v5/prometheus/auth
    • /api/v5/prometheus/data_integration
  • EMQXでAPIキーを作成する必要があります。
  • prometheus.yamlbasic_authセクションを設定します。

このオプションはPullモードにのみ適用され、Pushgateway統合には影響しません。詳細はPullモード統合の設定をご参照ください。

ネームスペースデータスクレイピングレート制限

ネームスペース関連メトリクスのスクレイピング時の最大リクエストレートを制限します。

ネームスペースレベルのメトリクスはマルチテナント環境でサポートされており、ネームスペース単位で公開または集約可能です。詳細はPrometheusメトリクスの分離をご覧ください。

形式<リクエスト数>/<期間>

1/5s は5秒間に最大1リクエストを許可し、それ以上のリクエストは拒否されます。

動作

  • ネームスペースレベルのメトリクススクレイピングリクエストにのみ適用。
  • 特定のネームスペースを対象とするリクエストは制限対象外。
  • Pullモードのみ適用。

大規模またはマルチネームスペース環境での過負荷防止に役立ちます。

Pushモード設定

PushモードはEMQXがPushgatewayインスタンスにメトリクスを送信します。デフォルトではPushモードは無効です。

Pushgatewayの有効化

Pushgatewayへのメトリクスプッシュを有効/無効にします。有効化時は以下の項目を設定してください。

インターバル

EMQXがPushgatewayにメトリクスをプッシュする間隔を指定します。デフォルトは15秒です。

Pushgatewayサーバー

PushgatewayサーバーのURLを指定します。デフォルトはhttp://127.0.0.1:9091です。

ジョブ名

Pushgatewayにメトリクスをプッシュする際のジョブラベルを指定します。

EMQXのノード名やホスト名から派生した変数を使ってジョブラベルを構成できます。デフォルト値は${name}/instance/${name}~${host}です。

変数

  • ${name}:EMQXノード名(例:emqx
  • ${host}:ホストIPアドレス(例:127.0.0.1

例:ノード名がemqx@127.0.0.1の場合、

  • ${name} = emqx
  • ${host} = 127.0.0.1

ヘッダー

Pushgatewayにメトリクスを送信する際に付与する任意のHTTPヘッダーです。

値の型は文字列で、キーと値のペアで設定します。例:

Authorization = "some-auth-token"

Addをクリックして追加のヘッダーを挿入できます。

Pullモード統合の設定

Pullモードでは、PrometheusがREST APIを通じてEMQXからメトリクスをスクレイプします。

EMQXはメトリクス収集用に以下のエンドポイントを提供しています。

  • /api/v5/prometheus/stats:EMQXの基本メトリクスとカウンター。
  • /api/v5/prometheus/auth:認証・認可を含むアクセス制御に関する主要メトリクスとカウンター。
  • /api/v5/prometheus/data_integration:ルールエンジン、コネクター、アクション、Sink/Source、エンコード/デコードに関連するメトリクスとカウンター。

メトリクス収集モード

上記APIを呼び出す際、URLクエリパラメータmodeを指定することで、異なる種類のメトリクスデータを取得できます。各パラメータの意味は以下の通りです。

PrometheusのPullエンドポイントの詳細は、EMQX Enterprise APIドキュメントをご参照ください。

認証(任意)

デフォルトでは、Prometheus PullモードAPIは認証不要です。

EMQXダッシュボードで Basic Authの有効化 をオンにした場合、PrometheusはHTTP Basic認証で認証を行う必要があります。

その場合の手順:

  1. EMQXでAPIキーを作成します。
  2. Prometheus設定に生成されたAPIキーとシークレットキーを使用します。

Prometheus設定例:

yaml
basic_auth:
  username: '<API_KEY>'
  password: '<SECRET_KEY>'
  • username はAPIキー
  • password は対応するシークレットキー

Prometheusはこれらの認証情報を使ってEMQXメトリクスをスクレイプします。

Prometheusサーバー設定例

PrometheusでEMQXメトリクスをスクレイプ可能にするため、Prometheusサーバーの設定ファイルに以下を追加し、Prometheusサービスを再起動してください。

yaml
# 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モード統合の設定

PushモードはEMQXからPushgatewayへメトリクスを送信します。

ダッシュボードで Enable Pushgateway を有効にし、必要な項目を設定後、Save Changes をクリックしてください。

Pushモードは現状、/api/v5/prometheus/stats エンドポイントのEMQX基本メトリクスとカウンターのみを含みます。包括的な監視には通常Pullモードの利用が推奨されます。

設定ファイル例

設定ファイルに以下を追加してPushgatewayを有効化および設定することも可能です。設定項目の詳細はConfiguration - Prometheusをご参照ください。

bash
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をご参照ください。