MQTT ブローカー診断システムは、メトリック、ログ、自己チェック プローブを使用してブローカーの正常性を監視する一連の組み込みツールです。 MQTT ブローカーに必要な診断構成をデプロイする前に決定します。
Important
診断はブローカー リソースに設定されます。 Azure CLI または Azure portal を使用して、初期デプロイ時に診断を構成します。 ブローカー設定を変更する場合は、新しいブローカー リソースをデプロイします。 詳細については、「既定のブローカーをカスタマイズする」を参照してください。
セルフチェック
MQTT ブローカーのセルフチェック メカニズムは、既定でオンになっています。 これは、診断プローブと OpenTelemetry (OTel) トレースを使用してブローカーを監視します。 プローブは、システムの動作とタイミングを確認するためにテスト メッセージを送信します。
検証プロセスでは、テスト結果と予想される結果を比較することで、システムが正しく動作するかどうかを確認します。 これらの結果には、次のものが含まれます。
- メッセージがシステムを通過するパス。
- システムのタイミング動作。
診断プローブは、MQTT ブローカーで MQTT 操作 (PING、CONNECT、PUBLISH、SUBSCRIBE、UNSUBSCRIBE) を定期的に実行し、対応する ACL とトレースを監視して、レプリケーション プロトコルの待機時間、メッセージ損失、正確性をチェックします。
Important
セルフチェック診断プローブは、メッセージを azedge/dmqtt/selftest トピックに発行します。
azedge/dmqtt/selftest で始まる診断プローブ トピックを発行またはサブスクライブしないでください。 これらのトピックを発行またはサブスクライブすると、プローブまたは自己テストのチェックに影響を与え、結果が無効になることがあります。 無効な結果は、診断プローブ ログ、メトリック、またはダッシュボードに一覧表示できます。 たとえば、診断プローブ ログの中に、"'発行' 操作の種類を含むプローブ イベントのパス検証が失敗した" という問題が表示される場合があります。 詳細については、「既知の問題の」を参照してください。
MQTT ブローカーの 診断 では、独自のトピックで診断メッセージが生成されますが、 # トピックをサブスクライブするときに自己テストからメッセージを取得できます。 これは制限事項であり、想定される動作です。
診断設定の構成
ほとんどのシナリオでは、既定の診断設定で十分です。 MQTT ブローカーの既定の診断設定をオーバーライドするには、ブローカー リソースの diagnostics セクションを編集します。 現時点では、--broker-config-file コマンドを使用して Azure IoT Operations をデプロイするときに、az iot ops create フラグを使用してのみ設定を変更できます。 詳細については、 高度な MQTT ブローカー構成に対する Azure CLI のサポートを参照してください。
オーバーライドするには、 BrokerDiagnostics API リファレンスに従ってブローカー構成ファイルを準備します。 例えば次が挙げられます。
{
"diagnostics": {
"metrics": {
"prometheusPort": 9600
},
"logs": {
"level": "info"
},
"traces": {
"mode": "Enabled",
"cacheSizeMegabytes": 16,
"selfTracing": {
"mode": "Enabled",
"intervalSeconds": 30
},
"spanChannelCapacity": 1000
},
"selfCheck": {
"mode": "Enabled",
"intervalSeconds": 30,
"timeoutSeconds": 60
}
}
}
次に、次の例に示すように、 az iot ops create コマンドと --broker-config-file フラグを使用して IoT Operations をデプロイします。 (簡潔にするために、その他のパラメーターは省略されています。)
az iot ops create ... --broker-config-file <FILE>.json