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。ノード間で異なる場合は同期問題を示します。

ライセンス(エンタープライズ)

メトリクス説明
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サブスクライバーから受信したアック(ACK)数。
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_subscribeSubscribeフックが発火。
emqx_client_unsubscribeUnsubscribeフックが発火。

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

メトリクス説明
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()(エンタープライズ):ライセンス有効期限までのカウントダウン。