MQTT ブローカーのメトリック
MQTT ブローカーには、ソリューションの正常性を監視および分析するために使用できる一連の可観測性メトリックが用意されています。 この記事では、MQTT ブローカーで使用可能なメトリックについて説明します。
これらのメトリックのオプションを構成するには、「MQTT ブローカー診断設定の構成を参照してください。
MQTT Connect metriccategory
user プロパティ
クライアントがブローカーに接続すると、接続パケットに metriccategory
というユーザー プロパティを含めることができます。 その後、ブローカーは、この metriccategory
を category
として使用して、すべてのセッションドリブン メトリック (発行やサブスクライブなど) にタグを付けます。
たとえば、セルフチェック プローブが 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 | このメトリックは、削除されたクライアントの数を報告します。 |