Skip to content

ブローカーのヘルス指標

このページは、EMQX ブローカーの監視に最も役立つ Prometheus メトリクスを厳選してまとめたリファレンスです。これらのメトリクスの公開およびスクレイピング方法については、Prometheusとの統合をご参照ください。

指標は以下の4つの分野に分類されています。

  1. システム:オペレーティングシステムおよびErlang VMのリソース。
  2. ブローカー:接続とメッセージトラフィック、ならびにブローカーの状態。
  3. 認証と認可:接続時のIDチェックおよびメッセージごとのACL判定。
  4. データ統合:ルール、アクション、コネクター、ブリッジ。

すべてのメトリクスは EMQX の Prometheus エンドポイント(/api/v5/prometheus/stats/api/v5/prometheus/auth/api/v5/prometheus/data_integration)で公開されています。エンドポイントの詳細や mode クエリパラメータについては、Prometheusとの統合を参照してください。

コレクターのデフォルト設定について

emqx_ プレフィックスのメトリクスは常に有効です。より詳細な Erlang VM メトリクスである erlang_vm_ プレフィックスのものは、上流の Prometheus Erlang エクスポーター由来であり、EMQX 6.0 以降では デフォルトで無効 になっています。プロセス数、アロケーター別メモリ、GCやスケジューラーの内訳を有効にするには、prometheus.collectors.vm_system_infovm_memoryvm_statisticsenabled に設定してください。

システム

ハードウェア層に最も近い信号です。ブローカーが不調になると、通常これらのいずれかが最初に変動します。

CPU

メトリクス説明
emqx_vm_cpu_use使用中のCPU割合(パーセント)。
emqx_vm_cpu_idleアイドル状態のCPU割合(パーセント)。

メモリ

メトリクス説明
emqx_vm_total_memoryシステム全体のメモリ容量(バイト)。
emqx_vm_used_memory使用中のシステムメモリ(バイト)。
erlang_vm_memory_processesアロケーター別メモリ:プロセス(vm_memory コレクター有効時)。
erlang_vm_memory_atomアロケーター別メモリ:アトム。
erlang_vm_memory_binaryアロケーター別メモリ:バイナリ。
erlang_vm_memory_etsアロケーター別メモリ:ETSテーブル。
erlang_vm_memory_codeアロケーター別メモリ:ロード済みコード。
erlang_vm_memory_systemアロケーター別メモリ:システムオーバーヘッド。

ファイルディスクリプタ

メトリクス説明
emqx_vm_max_fdsブローカープロセスのソフトFD上限値。

Erlangプロセスとスケジューラー負荷

メトリクス説明
emqx_vm_run_queue現在のスケジューラーの実行キュー長。持続的にゼロ以外の場合はCPU飽和を示します。
emqx_vm_process_messages_in_queuesすべてのErlangプロセスのメールボックス長の合計。大きいまたは増加傾向は処理遅延を意味します。
erlang_vm_process_count現在のErlangプロセス数(vm_system_info コレクター有効時)。
erlang_vm_process_limit設定された最大Erlangプロセス数。

内部メールボックス監視

メトリクス説明
emqx_vm_mnesia_tm_mailbox_sizeMnesiaトランザクションマネージャのメールボックス深さ。高値はトランザクション競合を示します。
emqx_vm_broker_pool_max_mailbox_sizeブローカーディスパッチプール内の最大メールボックス長。高値はサブスクライバー側のバックプレッシャーを示します。

アップタイム

メトリクス説明
emqx_vm_uptime_msブローカーの稼働時間(ミリ秒)。急激に小さくなるとノードが再起動したことを示します。

クラスター複製のヘルス(Mria)

メトリクス説明
emqx_mria_lagレプリカノードごとの複製遅延。
emqx_mria_replicantsレプリカ数。
emqx_mria_bootstrap_time最後のブートストラップに要した時間。
emqx_mria_message_queue_lenMriaのメールボックス長。

オーバーロード保護

メトリクス説明
emqx_overload_protection_new_connオーバーロードによって拒否された接続数。
emqx_overload_protection_gcオーバーロード保護による強制ガベージコレクション回数。
emqx_overload_protection_hibernationトリガーされたプロセスのハイバーネーション数。
emqx_overload_protection_delay_ok遅延適用が成功した回数。
emqx_overload_protection_delay_timeout遅延試行がタイムアウトした回数。

ブローカー

コアの運用信号です。メッセージ関連カウンターのレートを監視し、特に dropped 系列に注意してください。

クラスター トポロジー

メトリクス説明
emqx_cluster_nodes_running稼働中のクラスター ノード数。
emqx_cluster_nodes_stopped停止中のクラスター ノード数。0より大きい場合はアラート対象です。
emqx_conf_sync_txid適用済みの最後のクラスター設定トランザクションID。ノード間で異なる場合は同期問題を示します。

ライセンス(Enterprise)

メトリクス説明
emqx_license_expiry_atライセンスの有効期限(UNIXエポック秒)。
emqx_license_issued_atライセンス発行日時。
emqx_license_max_sessionsライセンスのセッション上限。
emqx_cert_expiry_atリスナー証明書の有効期限。

接続、セッション、チャネル

メトリクス説明
emqx_connections_count現在の接続数。
emqx_connections_max起動以降の最大接続数。
emqx_live_connections_count現在接続中(TCP接続確立済み)のクライアント数。
emqx_live_connections_max最大ライブ接続数。
emqx_sessions_countアクティブなセッション数(現在切断中の永続セッションも含む)。
emqx_sessions_max最大セッション数。
emqx_cluster_sessions_countクラスター全体のセッション数。
emqx_cluster_sessions_max最大クラスター全体セッション数。
emqx_channels_countチャネルプロセス数(接続クライアントごとに1つ)。
emqx_channels_max最大チャネル数。

サブスクリプションとトピック

メトリクス説明
emqx_subscriptions_countサブスクリプション数。
emqx_subscriptions_max最大サブスクリプション数。
emqx_subscriptions_shared_count共有サブスクリプション数。
emqx_subscriptions_shared_max最大共有サブスクリプション数。
emqx_subscribers_countサブスクライバープロセス数。
emqx_topics_countユニークなトピック数。
emqx_topics_max最大トピック数。
emqx_routes_countルートテーブルのサイズ。
emqx_routes_max最大ルートテーブルサイズ。
emqx_durable_subscriptions_count永続セッションのサブスクリプション数。
emqx_durable_subscriptions_max最大永続セッションサブスクリプション数。

保持済み、遅延、禁止

メトリクス説明
emqx_retained_count保持メッセージ数。
emqx_retained_max最大保持メッセージ数。
emqx_delayed_count遅延パブリッシュキューの深さ。
emqx_delayed_max最大遅延キュー深さ。
emqx_banned_count禁止されたクライアント/ユーザー名/IPのエントリ数。

メッセージ

メトリクス説明
emqx_messages_receivedクライアントから受信したアプリケーションレベルのメッセージ数。
emqx_messages_sentクライアントへ送信したアプリケーションレベルのメッセージ数。
emqx_messages_publish発行された PUBLISH パケット数。
emqx_messages_deliveredサブスクライバーへの配信数(1つのパブリッシュメッセージが複数配信される場合あり)。
emqx_messages_ackedサブスクライバーから受信したアック数。
emqx_messages_forwardノード間のメッセージ転送数。
emqx_messages_retained保持メッセージイベント数。
emqx_messages_delayed遅延パブリッシュのキューイング数。

メッセージドロップ(問題の最初の兆候)

メトリクス説明
emqx_messages_droppedドロップされたメッセージの合計数。
emqx_messages_dropped_expiredメッセージの有効期限超過によるドロップ数。
emqx_messages_dropped_no_subscribersマッチするサブスクライバーがいなかったためのドロップ数。
emqx_messages_dropped_quota_exceededクライアントごとのクォータ超過によるドロップ数。
emqx_messages_dropped_receive_maximumサブスクライバーの MQTT v5 受信最大数制限超過によるドロップ数。

サブスクライバーごとの配信ドロップ

メトリクス説明
emqx_delivery_droppedドロップされた配信の合計数。
emqx_delivery_dropped_expired配信前に期限切れとなった数。
emqx_delivery_dropped_no_localMQTT v5 の no-local ルールによるドロップ数。
emqx_delivery_dropped_qosサポートされていない QoS によるドロップ数。
emqx_delivery_dropped_queue_fullサブスクライバーのメッセージキューが満杯によるドロップ数。
emqx_delivery_dropped_too_largeサブスクライバーの最大パケットサイズ超過によるドロップ数。

バイト数

メトリクス説明
emqx_bytes_received受信した合計バイト数。
emqx_bytes_sent送信した合計バイト数。

パケットレベル(プロトコルデバッグ用ダッシュボード)

メトリクス説明
emqx_packets_received受信したパケットの合計数。
emqx_packets_sent送信したパケットの合計数。
emqx_packets_connect受信した CONNECT パケット数。
emqx_packets_connack_sent送信した CONNACK パケット数。
emqx_packets_connack_errorゼロ以外の理由コードを持つ CONNACK(多くのクライアント認証失敗がここに表示されます)。
emqx_packets_disconnect_received受信した DISCONNECT パケット数。
emqx_packets_disconnect_sent送信した DISCONNECT パケット数。
emqx_packets_publish_received受信した PUBLISH パケット数。
emqx_packets_publish_sent送信した PUBLISH パケット数。
emqx_packets_publish_error受け入れられなかった PUBLISH。
emqx_packets_publish_auth_error認可により拒否された PUBLISH。
emqx_packets_puback_received受信した PUBACK パケット数(QoS 1)。
emqx_packets_puback_sent送信した PUBACK パケット数(QoS 1)。
emqx_packets_pubrec_received受信した PUBREC パケット数(QoS 2)。
emqx_packets_pubrec_sent送信した PUBREC パケット数(QoS 2)。
emqx_packets_pubrel_received受信した PUBREL パケット数(QoS 2)。
emqx_packets_pubrel_sent送信した PUBREL パケット数(QoS 2)。
emqx_packets_pubcomp_received受信した PUBCOMP パケット数(QoS 2)。
emqx_packets_pubcomp_sent送信した PUBCOMP パケット数(QoS 2)。
emqx_packets_subscribe_received受信した SUBSCRIBE パケット数。
emqx_packets_suback_sent送信した SUBACK パケット数。
emqx_packets_subscribe_error失敗した SUBSCRIBE パケット数。
emqx_packets_subscribe_auth_error認可により拒否された SUBSCRIBE。
emqx_packets_unsubscribe_received受信した UNSUBSCRIBE パケット数。
emqx_packets_unsuback_sent送信した UNSUBACK パケット数。
emqx_packets_unsubscribe_error失敗した UNSUBSCRIBE パケット数。
emqx_packets_pingreq_received受信した PINGREQ パケット数。
emqx_packets_pingresp_sent送信した PINGRESP パケット数。

クライアントライフサイクル(フックトリガーカウンター)

メトリクス説明
emqx_client_connect受信した CONNECT。
emqx_client_connack送信した CONNACK。
emqx_client_connectedclient.connected フックが発火。
emqx_client_disconnectedclient.disconnected フックが発火。
emqx_client_disconnected_reason切断理由別の切断数。
emqx_client_subscribeサブスクライブフックが発火。
emqx_client_unsubscribeアンサブスクライブフックが発火。

セッションライフサイクル

メトリクス説明
emqx_session_created作成されたセッション数。
emqx_session_resumed再開された永続セッション数。
emqx_session_takenover新しいクライアントに引き継がれたセッション数。
emqx_session_discarded廃棄されたセッション数(既存セッションのクリーンスタート)。
emqx_session_terminated終了したセッション数。

認証と認可

HTTP、LDAP、またはデータベースバックエンドが認証経路にある場合に、ブローカーまたはバックエンドのどちらが遅延または障害の原因かを判断するためにこれらのメトリクスを使用します。

接続時認証結果

メトリクス説明
emqx_authentication_success認証成功(匿名を除く)。
emqx_authentication_success_anonymous匿名認証成功。
emqx_authentication_failure認証失敗。

認可判定

メトリクス説明
emqx_authorization_allow判定:許可。
emqx_authorization_deny判定:拒否。
emqx_authorization_nomatchマッチするルールなし(no_match 設定にフォールバック)。
emqx_authorization_matched_allow許可ルールが発火。
emqx_authorization_matched_deny拒否ルールが発火。
emqx_authorization_cache_hitキャッシュヒット。
emqx_authorization_cache_missキャッシュミス。
emqx_authorization_superuserスーパーユーザーバイパス経路。

認証チェーンの状態

メトリクス説明
emqx_authn_total設定された認証プロバイダー数。
emqx_authn_enableプロバイダーごとの有効フラグ(0 / 1)。
emqx_authn_statusプロバイダーごとのリソース状態。
emqx_authn_users_countプロバイダーごとのユーザーレコード数(パスワード、mnesia、DBバックエンドの場合)。

プロバイダーごとの認証ランタイムカウンター

メトリクス説明
emqx_authn_successプロバイダーごとの認証成功数。
emqx_authn_failedプロバイダーごとの認証失敗数。
emqx_authn_nomatchプロバイダーごとの無視数(チェーンは次のプロバイダーへ継続)。
emqx_authn_latencyプロバイダーごとのバックエンドレイテンシ。

認可ソースの状態

メトリクス説明
emqx_authz_total設定された認可ソース数。
emqx_authz_enableソースごとの有効フラグ(0 / 1)。
emqx_authz_statusソースごとのリソース状態。
emqx_authz_rules_countソースごとのルールレコード数(ファイル、mnesia、DBバックエンド)。

ソースごとの認可ランタイムカウンター

メトリクス説明
emqx_authz_allowソースごとの許可判定数。
emqx_authz_denyソースごとの拒否判定数。
emqx_authz_nomatchソースごとの無視数(チェーン継続)。
emqx_authz_latencyソースごとのバックエンドレイテンシ。

組み込みDBサイズ

メトリクス説明
emqx_authn_builtin_record_count組み込み認証データベースのユーザー数。
emqx_authz_builtin_record_count組み込み認可データベースのルール数。

データ統合

トラフィックはルールエンジンに入り、アクションやコネクターにファンアウトし、外部システムに到達します。各レイヤーは独自のカウンターを公開しており、順に読むことでメッセージがどこで失われているかがわかります。

インベントリ

メトリクス説明
emqx_rules_count設定されたルール数。
emqx_actions_count設定されたアクション数。
emqx_connectors_count設定されたコネクター数。
emqx_schema_registrys_countスキーマレジストリのエントリ数。

リソースごとの状態

メトリクス説明
emqx_rule_enableルールの有効フラグ(0 / 1)。
emqx_action_enableアクションの有効フラグ(0 / 1)。
emqx_action_statusアクションリソースの状態。
emqx_connector_enableコネクターの有効フラグ(0 / 1)。
emqx_connector_statusコネクターリソースの状態。

ルールエンジン:ルールごとのカウンター

メトリクス説明
emqx_rule_matchedルールの WHERE 句にマッチしたメッセージ数。
emqx_rule_passedルールを通過したメッセージ数。
emqx_rule_failedルール処理の失敗数。
emqx_rule_failed_exceptionルール内で発生したErlang例外。
emqx_rule_failed_no_resultSQLが結果を返さなかった場合の数。

ルールエンジン:アクションのサブカウンター

メトリクス説明
emqx_rule_actions_totalルールからのアクション呼び出し回数。
emqx_rule_actions_successアクションが成功した回数。
emqx_rule_actions_failedアクションが失敗した回数。
emqx_rule_actions_failed_unknown原因不明の失敗回数。
emqx_rule_actions_failed_out_of_service下流リソースが不健康なための失敗回数。
emqx_rule_actions_discardedアクションが破棄された回数(例:レート制限)。

アクションのスループット

メトリクス説明
emqx_action_matchedアクションにルーティングされたメッセージ数。
emqx_action_receivedアクションキューで受信したメッセージ数。
emqx_action_successアクション呼び出しが成功した回数。
emqx_action_failedアクション呼び出しが失敗した回数。
emqx_action_late_replyタイムアウト後に応答が到着した回数。
emqx_action_retriedリトライ試行回数。
emqx_action_retried_successリトライ後に成功した回数。
emqx_action_retried_failedすべてのリトライ後に失敗した回数。

アクションキューとインフライト

メトリクス説明
emqx_action_inflight処理中のリクエスト数。
emqx_action_queuingキューに入っている(ディスパッチ待ちの)長さ。

アクションのドロップ

これらのいずれかの系列でゼロ以外のレートがある場合、下流システムが不健康かアクションの設定に問題があります。

メトリクス説明
emqx_action_droppedアクション層でドロップされた合計数。
emqx_action_dropped_queue_fullキュー容量上限に達した回数。
emqx_action_dropped_resource_stopped対象リソースが停止しているためのドロップ数。
emqx_action_dropped_resource_not_found対象リソースが見つからないためのドロップ数。
emqx_action_dropped_expiredディスパッチ前にメッセージが期限切れとなった数。
emqx_action_dropped_otherその他の理由によるドロップ数。

最小限の「ブローカー異常」パネル

Grafana ダッシュボードに表示できる系列が限られている場合、以下の指標が最も重要です。ほとんどの本番問題は、イベント発生から数秒以内にこれらのいずれかが変動します。

  • rate(emqx_messages_dropped[1m]):ゼロ以外はブローカーが処理を拒否または失っていることを示します。
  • rate(emqx_action_dropped[1m]):統合レイヤーで処理が失われていることを示します。
  • emqx_cluster_nodes_stopped:0より大きい場合はメンバーが失われています。
  • rate(emqx_overload_protection_new_conn[1m]):ブローカーが新規接続を積極的に拒否しています。
  • rate(emqx_authentication_failure[1m]):急増は通常バックエンド問題または攻撃を示します。
  • emqx_vm_run_queue:持続的にゼロ以上はCPU飽和を示します。
  • emqx_vm_process_messages_in_queues:大きな値はプロセスメールボックスのバックログを示します。
  • emqx_mria_lag:数秒以上の値は複製遅延を示します。
  • emqx_license_expiry_at - time()(Enterprise):ライセンス有効期限までのカウントダウン。