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コレクターに依存しません。EMQX 6.3では、prometheus.collectorsvm_distvm_statisticsvm_system_info、およびvm_memoryフィールドはデフォルトでenabledになっています。mnesiavm_msaccフィールドはデフォルトでdisabledです。

既存のレガシーフォーマット設定は従来の動作を維持します。6つのフラットなprometheus.*_collectorフィールドはすべてデフォルトでdisabledであり、明示的に設定された値は変更されません。

システム

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

CPU

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

メモリ

erlang_vm_memory_プレフィックスのメトリクスは、prometheus.collectors.vm_memoryenabledである必要があります。

メトリクス説明
emqx_vm_total_memoryシステム全体のメモリ容量(バイト)。
emqx_vm_used_memory使用中のシステムメモリ(バイト)。
erlang_vm_memory_bytesErlang VMが割り当てた総メモリ(kind="system"またはkind="processes")。
erlang_vm_memory_processes_bytesErlangプロセスに割り当てられたメモリ(usage="used"またはusage="free")。
erlang_vm_memory_system_bytesアトム、バイナリ、ロード済みコード、ETSテーブルなどのシステムメモリ(オーバーヘッド含む)。
erlang_vm_memory_atom_bytesアトムに割り当てられたメモリ(usage="used"またはusage="free")。

ファイルディスクリプター

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

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

メトリクス説明
emqx_vm_run_queue現在のスケジューラー実行キューの長さ。継続的にゼロ以外の場合はCPU飽和を示します。
erlang_vm_processes現在の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停止中のクラスター ノード数。ゼロより大きい場合はアラート。
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サブスクライバーから受信したアック数。
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:ゼロより大きい場合はメンバーが失われています。
  • rate(emqx_overload_protection_new_conn[1m]):ブローカーが新規接続を積極的に拒否しています。
  • rate(emqx_authentication_failure[1m]):スパイクは通常バックエンド問題または攻撃を示します。
  • emqx_vm_run_queue:継続的にゼロ以上はCPU飽和を示します。
  • emqx_mria_lag:数秒以上は複製遅延を示します。
  • emqx_license_expiry_at - time()(エンタープライズ):ライセンス有効期限までのカウントダウン。

EMQX 6.3におけるPrometheusメトリクス互換性

EMQX 6.3では、PrometheusのVMおよびMnesiaコレクターのメトリクス名がpromtool準拠の名前に変更されました。以前の名前を使用しているPromQL式、レコーディングおよびアラートルール、カスタムGrafanaダッシュボードは更新してください。

EMQX 6.3以前EMQX 6.3
erlang_mnesia_failed_transactionserlang_mnesia_failed_transactions_total
erlang_mnesia_committed_transactionserlang_mnesia_committed_transactions_total
erlang_mnesia_logged_transactionserlang_mnesia_logged_transactions_total
erlang_mnesia_restarted_transactionserlang_mnesia_restarted_transactions_total
erlang_vm_memory_atom_bytes_totalerlang_vm_memory_atom_bytes
erlang_vm_memory_bytes_totalerlang_vm_memory_bytes
erlang_vm_memory_processes_bytes_totalerlang_vm_memory_processes_bytes
erlang_vm_memory_system_bytes_totalerlang_vm_memory_system_bytes
erlang_vm_statistics_context_switcheserlang_vm_statistics_context_switches_total
erlang_vm_statistics_garbage_collection_number_of_gcserlang_vm_statistics_garbage_collection_number_of_gcs_total
erlang_vm_statistics_garbage_collection_words_reclaimederlang_vm_statistics_garbage_collection_words_reclaimed_total
erlang_vm_statistics_garbage_collection_bytes_reclaimederlang_vm_statistics_garbage_collection_bytes_reclaimed_total
erlang_vm_statistics_runtime_millisecondserlang_vm_statistics_runtime_seconds_total
erlang_vm_statistics_wallclock_time_millisecondserlang_vm_statistics_wallclock_time_seconds_total
erlang_vm_port_counterlang_vm_ports
erlang_vm_process_counterlang_vm_processes
erlang_vm_atom_counterlang_vm_atoms

emqx_vm_process_messages_in_queuesメトリクスはEMQX 6.3で廃止されました。このメトリクスを使用するクエリは削除してください。EMQX 6.3では直接の代替は提供されていません。