次の方法で共有


Azure Event Grid の MQTT ブローカー機能のデータ監視リファレンス (プレビュー)

この記事では、MQTT ブローカーのパフォーマンスと可用性を分析するために収集されるログとメトリック データのリファレンスを提供します。

メトリックス

メトリック Display name ユニット 集計 説明 Dimensions
MQTT.RequestCount MQTT: RequestCount Count Total MQTT 要求の数。 OperationType、Protocol、Result、Error
MQTT.Throughput MQTT: スループット Count 合計 名前空間によって発行または配信された合計バイト数。 このメトリックには、成功に関係なく、MQTT クライアントが MQTT ブローカーに送信するすべての MQTT パケットが含まれます。 Direction
MQTT.ThrottlingEnforcements MQTT: スロットリングの適用 Count 合計 名前空間で要求が調整された回数。 ThrottleType
MQTT.SuccessfulPublishedMessages MQTT: 正常に発行されたメッセージ Count Total 名前空間に正常に発行された MQTT メッセージの数。 Protocol、QoS
MQTT.FailedPublishedMessages MQTT: 失敗した発行済みメッセージ Count Total 名前空間への発行に失敗した MQTT メッセージの数。 Protocol、QoS、Error
MQTT.SuccessfulDeliveredMessages MQTT: 正常に配信されたメッセージ Count 合計 MQTT クライアントからの受信確認に関係なく、名前空間によって配信されたメッセージの数。 この操作に失敗はありません。 Protocol、QoS
MQTT.SuccessfulSubscriptionOperations MQTT: 成功したサブスクリプション操作 Count 合計 成功したサブスクリプション操作の数 (サブスクライブ、サブスクライブ解除)。 このメトリックは、MQTT ブローカーによって受け入れられるサブスクリプション要求内のトピック フィルターごとにインクリメントされます。 OperationType、Protocol
MQTT.FailedSubscriptionOperations MQTT: 失敗したサブスクリプション操作 Count 合計 失敗したサブスクリプション操作の数 (サブスクライブ、サブスクライブ解除)。 このメトリックは、MQTT ブローカーによって拒否されるサブスクリプション要求内のトピック フィルターごとにインクリメントされます。 OperationType、Protocol、Error
Mqtt.SuccessfulRoutedMessages MQTT: 正常にルーティングされたメッセージ Count 合計 名前空間から正常にルーティングされた MQTT メッセージの数。
Mqtt.FailedRoutedMessages MQTT: 失敗したルーティングメッセージ Count 合計 名前空間からのルーティングに失敗した MQTT メッセージの数。 エラー
MQTT.Connections MQTT: アクティブな接続 Count 合計 名前空間内のアクティブな接続の数。 このメトリックの値は、特定の時点の値です。 その時点の直後にアクティブになった接続は、メトリックに反映されない場合があります。 プロトコル
Mqtt.DroppedSessions MQTT: ドロップされたセッション Count 合計 名前空間でドロップされたセッションの数。 このメトリックの値は、特定の時点の値です。 その時点の直後にドロップされたセッションは、メトリックに反映されない場合があります。 DropReason

注意

各サブスクリプション要求によって MQTT.RequestCount メトリックがインクリメントされ、サブスクリプション要求内の各トピック フィルターによってサブスクリプション操作メトリックがインクリメントされます。 たとえば、5 つの異なるトピック フィルターを使用して送信されるサブスクリプション要求を考えてみましょう。 これらのトピック フィルターのうち 3 つは正常に処理されましたが、2 つのトピック フィルターは処理に失敗しました。 次の一覧は、メトリックに対する結果の増分を表しています。

  • MQTT.RequestCount:1
  • MQTT.SuccessfulSubscriptionOperations:3
  • MQTT.FailedSubscriptionOperations:2

メトリック ディメンション

Dimension
OperationType 操作の種類。 次の値をご利用いただけます。

- Publish: MQTT クライアントから Event Grid に送信される PUBLISH 要求。
- Deliver: Event Grid から MQTT クライアントに送信される PUBLISH 要求。
- Subscribe: MQTT クライアントによる SUBSCRIBE 要求。
- Unsubscribe: MQTT クライアントによる UNSUBSCRIBE 要求。
- Connect: MQTT クライアントによる CONNECT 要求。
Protocol 操作で使用されるプロトコル。 次の値をご利用いただけます。

- MQTT3: MQTT v3.1.1
- MQTT5: MQTT v5
- MQTT3-WS: MQTT v3.1.1 over WebSocket
- MQTT5-WS: MQTT v5 over WebSocket
結果 操作の結果。 次の値をご利用いただけます。

- 成功
- ClientError
- ServiceError
エラー 操作中に発生したエラー。
MQTT: RequestCount、MQTT: 失敗した発行済みメッセージ数、MQTT: 失敗したサブスクリプション操作数の各メトリックに使用できる値は次のとおりです。

-QuotaExceeded: クライアントが 1 つ以上のスロットリング制限を超えたため、エラーが発生しました
- AuthenticationError: 認証上の理由によるエラー。
- AuthorizationError: 認可上の理由によるエラー。
- ClientError: クライアントが不正な要求を送信したか、サポートされていない機能のいずれかを使用したため、エラーが発生しました。
- ServiceError: 予期しないサーバー エラーまたはサーバーの運用上の理由によるエラー。

サポートされている MQTT 機能について詳しくは、こちらをご覧ください。

MQTT: 失敗したルーティング メッセージ数メトリックに使用できる値は次のとおりです。

-AuthenticationError: MQTT ルーティング メッセージの宛先として構成されたカスタム トピックの EventGrid データ送信者ロールが削除されました。
-TopicNotFoundError: すべての MQTT ルーティング メッセージを受信するように構成されているカスタム トピックが削除されました。
-TooManyRequests: MQTT ルーティング メッセージの 1 秒あたりの数が、MQTT ルーティング メッセージの宛先 (名前空間トピックまたはカスタム トピック) の制限を超えています。
- ServiceError: 予期しないサーバー エラーまたはサーバーの運用上の理由によるエラー。

MQTT ブローカーがこれらの各ルーティング エラーを処理する方法について詳しくは、こちらをご覧ください。
ThrottleType 名前空間で超過されたスロットル制限の種類。 次の値をご利用いただけます。
- InboundBandwidthPerNamespace
- InboundBandwidthPerConnection
- IncomingPublishPacketsPerNamespace
- IncomingPublishPacketsPerConnection
- OutboundPublishPacketsPerNamespace
- OutboundPublishPacketsPerConnection
- OutboundBandwidthPerNamespace
- OutboundBandwidthPerConnection
- SubscribeOperationsPerNamespace
- SubscribeOperationsPerConnection
- ConnectPacketsPerNamespace

制限の詳細情報
QoS サービスの品質レベル。 使用可能な値: 0、1。
Direction 操作の方向。 使用できる値は次のとおりです。

- Inbound: Event Grid への受信スループット。
- Outbound: Event Grid からの送信スループット。
DropReason セッションがドロップされた理由。 次の値をご利用いただけます。

- SessionExpiry: 永続セッションの有効期限が切れました。
- TransientSession: 非永続セッションの有効期限が切れました。
- SessionOverflow: クライアントは、キューが最大制限に達するまで、セッションの存続期間中、キューに入れられた QOS1 メッセージを受信するために接続しませんでした。
- AuthorizationError: 何らかの認証理由によるセッションのドロップ。

リソース ログ

Azure Event Grid の MQTT ブローカーでは、次のカテゴリの診断ログをキャプチャします。

このセクションでは、これらのログのスキーマと例を示します。

共通プロパティ

次のプロパティは、MQTT ブローカーのすべてのリソース ログに共通です。

プロパティ名 種類​​ 説明
time DateTime ログが生成されたときのタイムスタンプ (UTC)。
resourceId String Event Grid 名前空間のリソース ID。 (例: /SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNAMESPACE)。
location String 名前空間の場所
operationName String 操作の名前。 例: Microsoft.EventGrid/topicspaces/connectMicrosoft.EventGrid/topicspaces/disconnectMicrosoft.EventGrid/topicspaces/publishMicrosoft.EventGrid/topicspaces/subscribeMicrosoft.EventGrid/topicspaces/unsubscribe
category String 操作のカテゴリまたは種類。 例: FailedMQTTConnectionsSuccessfulMQTTConnectionsMQTTDisconnectionsFailedMQTTPublishedMessagesFailedMQTTSubscriptionOperations
resultType String 操作の結果。 例: Failed, Succeeded
resultSignature String 失敗した操作の結果。 たとえば、QuotaExceededClientAuthenticationErrorAuthorizationError などです。 このプロパティは、SuccessfulMQTTConnections などの成功したイベントには含まれません。
resultDescription String 失敗した操作の結果に関する詳細な説明。 このプロパティは、SuccessfulMQTTConnections などの成功したイベントには含まれません。
AuthenticationAuthority String MQTT クライアントの認証に使用される権限の種類。 これは、Local (Event Grid のローカル レジストリに登録されているクライアントの場合)、または AAD (認証に Microsoft Entra を使用するクライアントの場合) のいずれかの値に設定されます。
authenticationType String クライアントによって使用される認証の種類。 CertificateThumbprintMatchAccessToken、または CACertificate のいずれかの値に設定します。
clientIdentitySource String クライアントの ID のソース。 Microsoft Entra ID 認証を使う場合は JWT です。
authenticationAuthority String クライアントの ID の権限。 local (Event Grid 名前空間のローカル レジストリ内のクライアントの場合)、AAD (AAD クライアントの場合) のいずれかの値に設定されます。
clientIdentity String クライアントの ID の値。 これは、Microsoft Entra ID クライアントのローカル レジストリまたはオブジェクト ID の名前です。

失敗した MQTT 接続

このログには、クライアントで失敗したすべての MQTT CONNECT 操作のエントリが含まれます。 このログを使用して、接続の問題を診断できます。

失敗した MQTT 接続ログ エントリの例を次に示します。

[
  {
    "time": "2023-11-06T22:45:02.6829930Z",
    "resourceId": "/SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNS",
    "location": "eastus",
    "operationName": "Microsoft.EventGrid/topicspaces/connect",
    "category": "FailedMqttConnections",
    "resultType": "Failed",
    "resultSignature": "AuthenticationError",
    "resultDescription": "Client could not be found",
    "identity": {
      "authenticationType": "CertificateThumbprintMatch",
      "clientIdentitySource": "UserName",
      "authenticationAuthority": "Local",
      "clientIdentity": "testclient-1"
    },
    "properties": {
      "sessionName": "testclient1",
      "protocol": "MQTT5",
      "traceId": "pwu5p3uuvzbyzpe4vyygij3it4"
    }
  }
]

プロパティとその説明を次に示します。

プロパティ タイプ 説明
sessionName String クライアントによって MQTT CONNECT パケットの clientId フィールドに指定されるセッションの名前。
protocol String クライアントで接続に使用するプロトコル。 使用可能な値は、MQTT3、MQTT3-WS、MQTT5、MQTT5-WS です。
traceId Int 生成されたトレース ID。

成功した MQTT 接続

このログには、クライアントで成功したすべての MQTT CONNECT 操作のエントリが含まれます。 このログは監査目的で使用できます。

[
  {
    "time": "2023-11-07T01:22:05.2804980Z",
    "resourceId": "/SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNS",
    "location": "eastus",
    "operationName": "Microsoft.EventGrid/topicspaces/connect",
    "category": "SuccessfulMqttConnections",
    "resultType": "Succeeded",
    "identity": {
      "authenticationType": "CertificateThumbprintMatch",
      "clientIdentitySource": "UserName",
      "authenticationAuthority": "Local",
      "clientIdentity": "client1"
    },
    "properties": { 
      "sessionName": "client1", 
      "protocol": "MQTT5" 
    }
  }
]

プロパティとその説明を次に示します。

プロパティ タイプ 説明
sessionName String クライアントによって MQTT CONNECT パケットの clientId フィールドに指定されるセッションの名前。
protocol String クライアントで接続に使用するプロトコル。 使用可能な値は、MQTT3、MQTT3-WS、MQTT5、MQTT5-WS です。

MQTT の切断

このログには、Event Grid 名前空間からのすべての MQTT クライアント切断のエントリが含まれます。 このログを使用して、接続の問題を診断できます。

[
  {
    "time": "2023-11-07T01:29:22.4591610Z",
    "resourceId": "/SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNS",
    "location": "eastus",
    "operationName": "Microsoft.EventGrid/topicspaces/disconnect",
    "category": "MqttDisconnections",
    "resultType": "Failed",
    "resultSignature": "ClientError",
    "resultDescription": "Timed out per negotiated Keep Alive",
    "identity": { 
      "clientIdentity": "client1" 
    },
    "properties": { 
      "sessionName": "client1", 
      "protocol": "MQTT5" 
    }
  }
]

プロパティとその説明を次に示します。

プロパティ タイプ 説明
sessionName String クライアントによって MQTT CONNECT パケットの clientId フィールドに指定されるセッションの名前。
protocol String クライアントで接続に使用するプロトコル。 使用可能な値は、MQTT3、MQTT3-WS、MQTT5、MQTT5-WS です。

失敗した MQTT の発行済みメッセージ

このログには、Event Grid 名前空間に発行またはこれによって配信できなかったすべての MQTT メッセージのエントリが含まれます。 このログを使用して、発行の問題とメッセージ損失を診断できます。

[
  {
    "time": "2023-11-07T01:22:48.2811790Z",
    "resourceId": "/SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNS",
    "location": "eastus",
    "operationName": "Microsoft.EventGrid/topicspaces/publish",
    "category": "FailedMqttPublishedMessages",
    "resultType": "Failed",
    "resultSignature": "AuthorizationError",
    "resultDescription": "Topic name 'testtopic/small4.0' does not match any topicspaces",
    "identity": { "clientIdentity": "client1" },
    "properties": {
      "sessionName": "client1",
      "protocol": "MQTT5",
      "traceId": "ako65yewjjhzbdp3lxny7557fu",
      "qos": 1,
      "topicName": "testtopic/small4.0",
      "operationCount": 1
    }
  }
]

EventGridNamespaceFailedMqttPublishedMessages Log Analytics テーブルの列とその説明を次に示します。

列名 種類 説明
sessionName String クライアントによって MQTT CONNECT パケットの clientId フィールドに指定されるセッションの名前。
protocol String クライアントで発行に使用するプロトコル。 使用可能な値は、MQTT3、MQTT3-WS、MQTT5、MQTT5-WS です。
traceId Int 生成されたトレース ID。
qos Int クライアントで発行に使用するサービスの品質。 指定できる値は 0 または 1 です。
topicName String クライアントで発行に使用する MQTT トピック名。
operationCount Int 同じ resultDescription を持つ、Event Grid 名前空間に発行またはこれによって配信できなかった MQTT メッセージ数。

失敗した MQTT のサブスクリプション操作

このログには、MQTT クライアントによるすべての MQTT サブスクライブ操作のエントリが含まれます。 同じエラーを持つ同じサブスクライブ/サブスクライブ解除パケット内のトピック フィルターごとにログ エントリが追加されます。 このログを使用して、サブスクリプションの問題とメッセージ損失を診断できます。

[
  {
    "time": "2023-11-07T01:22:39.0339970Z",
    "resourceId": "/SUBSCRIPTIONS/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/RESOURCEGROUPS/MYRG/PROVIDERS/MICROSOFT.EVENTGRID/NAMESPACE/MYNS",
    "location": "eastus",
    "operationName": "Microsoft.EventGrid/topicspaces/subscribe",
    "category": "FailedMqttSubscriptionOperations",
    "resultType": "Failed",
    "resultSignature": "AuthorizationError",
    "resultDescription": "Topic filter 'testtopic/#' does not match any topicspaces",
    "identity": { "clientIdentity": "client1" },
    "properties": {
      "sessionName": "client1",
      "protocol": "MQTT5",
      "traceId": "gnz3cgqpozg4tbm5anvsvopafi",
      "topicFilters": ["testtopic/#"]
    }
  }
]

EventGridNamespaceFailedMqttSubscriptions Log Analytics テーブルの列とその説明を次に示します。

列名 種類 説明
sessionName String クライアントによって MQTT CONNECT パケットの clientId フィールドに指定されるセッションの名前。
protocol String クライアントで発行に使用するプロトコル。 使用可能な値は、MQTT3、MQTT3-WS、MQTT5、MQTT5-WS です。
traceId Int 生成されたトレース ID。
topicFilters 文字列の配列 同じエラーを持つ同じパケット内のトピック名の一覧。

次のステップ

次の記事をご覧ください。