MQTT 經紀人診斷系統是一組內建工具,透過指標、日誌及自我檢查探針監控經紀商健康狀況。 部署前先決定你需要為 MQTT 代理設定什麼樣的診斷設定。
Important
診斷是在 Broker 資源上設定。 使用 Azure CLI 或 Azure 入口網站在初始部署期間設定診斷。 如果您要變更訊息代理程式設定,請部署新的訊息代理程序資源。 若要深入了解,請參閱自訂預設代理人。
自我檢查
MQTT 訊息代理程式的自我檢查機制預設為開啟。 其會使用診斷探查和 OpenTelemetry (OTel) 追蹤,來監視代理人。 探測器會傳送測試訊息來檢查系統的行為和時序。
驗證程式會藉由比較測試結果與預期結果,來檢查系統是否正常運作。 這些結果包括:
- 訊息在系統中傳遞的路徑。
- 系統計時行為。
診斷探查會定期在 MQTT 訊息代理程式上執行 MQTT 作業(PING、CONNECT、PUBLISH、SUBSCRIBE、UNSUBSCRIBE),並監視對應的 ACK 和追蹤,以檢查複寫通訊協議的延遲、訊息遺失和正確性。
Important
自我檢查診斷探查會將訊息發佈至 azedge/dmqtt/selftest 主題。 請勿發佈或訂閱以 azedge/dmqtt/selftest 開頭的診斷探查主題。 發佈或訂閱這些主題可能會影響探查或自我測試檢查,併產生無效的結果。 無效的結果可以列在診斷探查記錄、計量或儀錶板中。 例如,您可能會在 diagnostics-probe 記錄中看到「探查事件路徑驗證失敗,且作業類型為『發佈』」的問題。 如需詳細資訊,請參閱
雖然 MQTT 訊息代理程式的 診斷 會在自己的主題上產生診斷訊息,但當您訂閱 # 主題時,您仍然可以從自我測試取得訊息。 這是限制和預期的行為。
設定診斷設定
在大部分情況下,默認診斷設定就已足夠。 若要覆寫 MQTT 訊息代理程式的預設診斷設定,請編輯 diagnostics Broker 資源中的 區段。 目前,當您使用 --broker-config-file 命令部署 Azure IoT 作業時,只能使用 az iot ops create 旗標來變更設定。 欲了解更多資訊,請參閱 Azure CLI 對進階 MQTT 代理配置的支援。
若要覆寫,請遵循 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作業,如下列範例所示。 (為求簡潔,省略了其他參數。)
az iot ops create ... --broker-config-file <FILE>.json