次の方法で共有


MQTT ブローカーのメトリック

MQTT ブローカーには、ソリューションの正常性を監視および分析するために使用できる一連の可観測性メトリックが用意されています。 この記事では、MQTT ブローカーで使用可能なメトリックについて説明します。

これらのメトリックのオプションを構成するには、「MQTT ブローカー診断設定の構成を参照してください。

MQTT Connect metriccategory user プロパティ

クライアントがブローカーに接続すると、接続パケットに metriccategory というユーザー プロパティを含めることができます。 その後、ブローカーは、この metriccategorycategoryとして使用して、すべてのセッションドリブン メトリック (発行やサブスクライブなど) にタグを付けます。

たとえば、セルフチェック プローブが metriccategory=broker_selftestに接続する場合、ブローカーは、これらのセッションのすべてのメトリックに category=broker_selftestタグを付けます。

この機能は、メトリックにトピックをタグ付けする場合にカーディナリティが高い問題を発生させずに、ダッシュボードでトラフィック ソースを表示するのに役立ちます。

metriccategoryのないセッションは、category=uncategorizedとしてタグ付けされます。

メッセージング メトリック

すべてのメトリックには、メトリックを生成したポッドを識別する hostname タグが含まれています。 個々のメトリックの説明に記載されているタグがこのタグに追加されます。

メトリック 説明 タグ
aio_broker_publishes_received フロントエンドでは、このメトリックは、クライアントから受信された受信発行パケットの数を表します。 バックエンドの場合、このメトリックは、フロントエンド ノードから送信される内部メッセージの数を表します。 category
aio_broker_publishes_sent フロントエンドでは、このメトリックは、クライアントに送信される送信発行パケットの数を表します。 複数のクライアントが同じトピックにサブスクライブされている場合、このメトリックは、同じペイロードを持っている場合でも送信された各メッセージをカウントします。 このカウントでは、ack パケットはカウントされません。 バックエンドの場合、このメトリックは、フロントエンド ノードに送信される内部メッセージの数を表します。 category
aio_broker_payload_bytes_received 受信したすべての発行のペイロードの合計。 この合計には、プロパティのサイズやパケット自体の発行は含まれません。 category
aio_broker_payload_bytes_sent 送信されたすべての発行のペイロードの合計。 この合計には、プロパティのサイズやパケット自体の発行は含まれません。 category
aio_broker_authentication_successes このメトリックは、成功した認証要求の数をカウントします。 category
aio_broker_authentication_failures このメトリックは、失敗した認証要求の数をカウントします。 エラーレス認証サーバーの場合、 aio_broker_authentication_successes + aio_broker_authentication_failures = aio_broker_publishes_received = publishes_sent category
aio_broker_authentication_deny このメトリックは、拒否された認証要求の数をカウントします。 category
aio_broker_authorization_allow このメトリックは、正常に承認要求をカウントします。 このメトリックは、常に aio_broker_authentication_successes以下にする必要があります。 category
aio_broker_authorization_deny このメトリックは、拒否された承認要求をカウントします。 このメトリックは、常に aio_broker_authentication_successes以下にする必要があります。 category
aio_broker_qos0_messages_dropped このメトリックは、何らかの理由でドロップされた QoS0 メッセージの数をカウントします。 カテゴリ direction は、 incoming または outgoingです。 category, direction
aio_broker_backpressure_packets_rejected このメトリックは、バックプレッシャが原因で拒否されたパケットの数をカウントします。 システムの容量が 97% の場合、パケットは拒否されます。
aio_broker_store_retained_messages このメトリックは、ブローカーに格納されている保持メッセージの数をカウントします。
aio_broker_store_retained_bytes このメトリックは、ブローカーで保持されたメッセージを介して格納されるバイト数をカウントします。
aio_broker_store_will_messages このメトリックは、ブローカーに格納されるメッセージの数をカウントします。
aio_broker_store_will_bytes このメトリックは、ブローカー上の will メッセージを介して格納されているバイト数をカウントします。
aio_broker_number_of_routes ルートの数をカウントします。
aio_broker_connect_route_replication_correctness セルフ テスト クライアントからの接続要求が特定のルートに沿って正しくレプリケートされるかどうかを示します。
aio_broker_connect_latency_route_ms 自己テスト クライアントが CONNECT パケットを送信してから CONNACK パケットを受信するまでの時間間隔を示します。 このメトリックはルートごとに生成されます。 メトリックは、CONNECT が成功した場合にのみ生成されます。
aio_broker_connect_latency_last_value_ms connect_latency_route_ms の推定 p99。
aio_broker_connect_latency_mu_ms connect_latency_route_ms の平均値。
aio_broker_connect_latency_sigma_ms connect_latency_route_ms の標準偏差。
aio_broker_subscribe_route_replication_correctness セルフ テスト クライアントからのサブスクライブ要求が特定のルートに沿って正しくレプリケートされるかどうかを示します。
aio_broker_subscribe_latency_route_ms 自己テスト クライアントが SUBSCRIBE パケットを送信してから SUBACK パケットを受信するまでの時間間隔を示します。 このメトリックはルートごとに生成されます。 メトリックは、SUBSCRIBE が成功した場合にのみ生成されます。
aio_broker_subscribe_latency_last_value_ms subscribe_latency_route_ms の推定 p99。
aio_broker_subscribe_latency_mu_ms subscribe_latency_route_ms の平均値。
aio_broker_subscribe_latency_sigma_ms subscribe_latency_route_ms の標準偏差。
aio_broker_unsubscribe_route_replication_correctness セルフ テスト クライアントからのアンサブスクライブ要求が特定のルートに沿って正しくレプリケートされるかどうかを示します。
aio_broker_unsubscribe_latency_route_ms 自己テスト クライアントが UNSCRIBE パケットを送信してから UNSUBACK パケットを受信するまでの時間間隔を示します。 このメトリックはルートごとに生成されます。 メトリックは、UNSUBSCRIBE が成功した場合にのみ生成されます。
aio_broker_unsubscribe_latency_last_value_ms unsubscribe_latency_route_ms の推定 p99。
aio_broker_unsubscribe_latency_mu_ms unsubscribe_latency_route_ms の平均値。
aio_broker_unsubscribe_latency_sigma_ms subscribe_latency_route_ms の標準偏差。
aio_broker_publish_route_replication_correctness セルフ テスト クライアントからのアンサブスクライブ要求が特定のルートに沿って正しくレプリケートされるかどうかを示します。
aio_broker_publish_latency_route_ms 自己テスト クライアントが PUBLISH パケットを送信してから PUBACK パケットを受信するまでの時間間隔を示します。 このメトリックはルートごとに生成されます。 メトリックは、PUBLISH が成功した場合にのみ生成されます。
aio_broker_publish_latency_last_value_ms publish_latency_route_ms の推定 p99。
aio_broker_publish_latency_mu_ms publish_latency_route_ms の平均値。
aio_broker_publish_latency_sigma_ms publish_latency_route_ms の標準偏差。
aio_broker_payload_check_latency_last_value_ms 最後の値の待機時間チェックの推定 p99。
aio_broker_payload_check_latency_mu_ms 待機時間チェックの平均値。
aio_broker_payload_check_latency_sigma_ms ペイロードの待機時間の標準偏差。
aio_broker_payload_check_total_messages_lost 失われたペイロード合計メッセージの数。
aio_broker_payload_check_total_messages_received 受信したメッセージの合計数。
aio_broker_payload_check_total_messages_sent 送信されたメッセージの合計数。
aio_broker_ping_correctness 自己テスト クライアントからの ping が正しく動作するかどうかを示します。
aio_broker_ping_latency_last_value_ms 最後の値の ping 操作の推定 p99。
aio_broker_ping_latency_mu_ms ping チェックの平均値。
aio_broker_ping_latency_route_ms 特定ルートの ping 待機時間 (ミリ秒単位)。
aio_broker_ping_latency_sigma_ms ping 操作の待機時間の標準偏差。
aio_broker_publishes_processed_count 発行されたメッセージの処理数を示します。
aio_broker_publishes_received_per_second 1 秒間に受信した 発行済みメッセージの数。
aio_broker_publishes_sent_per_second 1 秒間に受信する、送信済みメッセージの数をカウントします。

Broker オペレーターの正常性メトリック

この一連のメトリックは、ブローカーの カーディナリティ状態を追跡。 必要な各メトリックは、現在の状態を示すために報告されたメトリックとペアになっています。 これらのメトリックは、ブローカーの観点から見た正常なポッドの数を示します。これは、Kubernetes のレポートとは異なる場合があります。

たとえば、バックエンド ノードが再起動してもチェーンに再接続しない場合、正常性レポートに不一致が生じる可能性があります。 Kubernetes はポッドを正常と報告する可能性があります。一方、ブローカーはポッドが正常に機能していないため、ポッドをダウンと報告します。

必要なメトリック 報告されたメトリック
aio_broker_backend_replicas aio_broker_backend_replicas_current
aio_broker_backend_vertical_chain aio_broker_backend_vertical_chain_current
aio_broker_frontend_replicas aio_broker_frontend_replicas_current

Note

backend_vertical_chain_current は、最も正常なチェーン内の正常なノードの数を報告します。 たとえば、予想されるチェーンの長さが 4 で、3 つのチェーンに 4 つの正常なノードがあり、1 つのチェーンに正常なノードが 2 つしかない場合、 backend_vertical_chain_current は 2 を報告します。

接続とサブスクリプションのメトリック

これらのメトリックは、ブローカー上の接続とサブスクリプションの可観測性を提供します。

メトリック 説明 タグ
aio_broker_total_sessions フロントエンドおよび単一ノード ブローカーでは、このメトリックはクライアント セッションの数を表します。 クライアントが別のフロントエンド ノードに再接続する可能性があるため、この数には切断された永続的セッションは含まれません。 バックエンドの場合、このメトリックはチェーン内の他のノードへの接続を表します。 オペレーターでは、このメトリックは、接続されているフロント ノードとバックエンド ノードの数を表します。 認証サーバーの場合、このメトリックは、接続されているフロントエンド ワーカーの数を表します (スレッドあたりフロントエンドあたり 1)。 mqtt_version: [v3/v5]
バックエンド ノードのみのタグ:
is_tail: [true/false]
chain_id: [n]
aio_broker_store_total_sessions このメトリックは、バックエンド チェーン内のセッションの数を表します。 同じチェーン内のバックエンド ノードは同じ数のセッションを報告する必要があり、各チェーンの合計はフロントエンドのtotal_sessionsの合計と等しい必要があります。 is_persistent: [true/false]
is_tail: [true/false]
chain_id: [n]
aio_broker_connected_sessions アクティブな接続を持つセッションのみを除き、 aio_broker_total_sessionsと同じです。
aio_broker_store_connected_sessions アクティブな接続を持つセッションのみを除き、 aio_broker_store_total_sessionsと同じです。 is_persistentが false の場合、この数はセッションの合計数と同じである必要があります。
aio_broker_total_subscriptions フロントエンドでは、このメトリックは、現在接続されているセッションのサブスクリプションの数を表します。 クライアントが別のフロントエンド ノードに再接続する可能性があるため、この数には切断された永続的セッションは含まれません。 演算子では、このメトリックはフロントエンド ノードとバックエンド ノードを表します。 認証サーバーの場合、このメトリックは、接続されているフロントエンド ワーカーの数を表します (スレッドあたりフロントエンドあたり 1)。
aio_broker_store_total_subscriptions このメトリックは、バックエンド チェーン内のサブスクリプションの数を表します。 同じチェーン内のバックエンド ノードは、同じ数のサブスクリプションを報告することになります。 このメトリックは切断された永続的なセッションも追跡するため、このカウントはフロントエンドの total_subscriptionsと必ずしも一致しません。

状態ストアのメトリック

この一連のメトリックは、 state ストアの全体的な状態を追跡します。

メトリック 説明 タグ
aio_broker_state_store_deletions このメトリックは、正常な削除とエラーの両方を含め、受信した削除キー要求の数をカウントします。
aio_broker_state_store_insertions このメトリックは、成功した挿入とエラーの両方を含め、受信した新しいキー挿入要求の数をカウントします。
aio_broker_state_store_keynotify_requests このメトリックは、成功した変更とエラーの両方を含め、受信したキー変更 (KEYNOTIFY) を監視する要求の数をカウントします。
aio_broker_state_store_modifications このメトリックは、成功した変更とエラーの両方を含め、受信した変更キー要求の数をカウントします。
aio_broker_state_store_notifications_sent このメトリックは、キー値が変更され、クライアントが KEYNOTIFY 経由で登録されたときに状態ストアが送信する通知メッセージの数をカウントします。
aio_broker_state_store_retrievals このメトリックは、成功した取得とエラーの両方を含め、受信したキー値取得要求の数をカウントします。

ディスクベースのメッセージ バッファー メトリック

これらのメトリックは、 disk でバックアップされたメッセージ バッファーの可観測性を提供します。

メトリック 説明 タグ
aio_broker_buffer_pool_used_percent 1 つのフロントエンドまたはバックエンド バッファー プールで使用されたバッファーの割合を報告します。 name
aio_broker_disk_transfers_completed 特定のバックエンド ポッドで完了したディスク転送の数を報告します。 バッファー プールからディスクに転送された発行の合計数を追跡します。
aio_broker_disk_transfers_failed 特定のバックエンド ポッドで失敗したディスク転送の数を報告します。

Note

特定のバックエンド バッファー プール (具体的には "reader" という名前の動的なバックエンド バッファー プール) のみが、ディスクベースのメッセージ バッファー機能を使用します。 これらのプールは、サブスクライバー メッセージ キューを格納し、使用量が 75% を超えると、要素をディスクに転送します。

障害復旧メトリック

メトリック 説明
aio_broker_store_transfer_batch_receiver_message_count このメトリックは、ストア転送レシーバーが受信したメッセージの数を報告します。 この数は、ストア転送送信者によって送信されたメッセージの数と同じである必要があります。
aio_broker_store_transfer_batch_sender_transfer_bytes このメトリックは、ストア転送送信者によって送信されたバイト数を報告します。
aio_broker_store_transfer_batch_sender_message_count このメトリックは、ストア転送送信者によって送信されたメッセージの数を報告します。
aio_broker_store_transfer_ack_event_receiver_message_count このメトリックは、ストア転送レシーバーが受信した ack イベント メッセージの数を報告します。 この数は、ストア転送送信者によって送信された ack イベント メッセージの数と同じである必要があります。
aio_broker_store_transfer_ack_event_sender_message_count このメトリックは、ストア転送送信者によって送信された ack イベント メッセージの数を報告します。
aio_broker_store_transfer_ack_event_sender_transfer_bytes このメトリックは、ack イベントのストア転送送信者によって送信されたバイト数を報告します。
aio_broker_store_transfer_patch_tracker_receiver_message_count このメトリックは、ストア転送レシーバーが受信したパッチ トラッカー メッセージの数を報告します。 この数は、ストア転送送信者によって送信されたパッチ トラッカー メッセージの数と同じである必要があります。
aio_broker_store_transfer_patch_tracker_sender_message_count このメトリックは、ストア転送送信者によって送信されたパッチ トラッカー メッセージの数を報告します。

開発者メトリック

これらのメトリックは、開発者のデバッグに役立ちます。

メトリック 説明
aio_broker_patch_tracker_held_patches このメトリックは、チェーン内のノード内で現在保持されているパッチの数を報告します。
aio_broker_ack_handler_pending_transactions このメトリックは、ack ハンドラーで現在保留中のトランザクションの数を報告します。
aio_broker_client_connected このメトリックは、接続されているクライアントの数を報告します。
aio_broker_client_disconnected このメトリックは、切断されたクライアントの数を報告します。
aio_broker_client_removed このメトリックは、削除されたクライアントの数を報告します。