設定診斷設定,以設定 MQTT 訊息代理程式的計量、記錄和自我檢查。
重要事項
診斷是在 Broker 資源上設定。 使用 Azure CLI 或 Azure 入口網站在初始部署期間設定診斷。 如果您要變更訊息代理程式設定,請部署新的訊息代理程序資源。 若要深入了解,請參閱自訂預設代理人。
計量
計量會顯示 MQTT 訊息代理程式目前和過去的健全狀況和狀態。 這些計量會使用 OpenTelemetry 通訊協定 (OTLP) 格式。 使用 OpenTelemetry Collector 將它們轉換成 Prometheus 格式,然後透過適用於 Prometheus 的 Azure Monitor 受控服務,將它們路由至 Azure 受控的 Grafana 儀錶板。 若要深入了解,請參閱設定可檢視性和監視。
如需可用計量的完整清單,請參閱 MQTT 訊息代理程式計量。
記錄
記錄會顯示 MQTT 訊息代理程式所執行之動作的相關信息。 這些記錄會以容器記錄的形式出現在 Kubernetes 叢集中。 將它們設定為傳送到具備容器深入解析的 Azure 監視器記錄。
若要深入了解,請參閱設定可檢視性和監視。
自我檢查
MQTT 訊息代理程式的自我檢查機制預設為開啟。 其會使用診斷探查和 OpenTelemetry (OTel) 追蹤,來監視代理人。 探測器會傳送測試訊息來檢查系統的行為和時序。
驗證程式會藉由比較測試結果與預期結果,來檢查系統是否正常運作。 這些結果包括:
- 訊息在系統中傳遞的路徑。
- 系統計時行為。
診斷探查會定期在 MQTT 訊息代理程式上執行 MQTT 作業(PING、CONNECT、PUBLISH、SUBSCRIBE、UNSUBSCRIBE),並監視對應的 ACK 和追蹤,以檢查複寫通訊協議的延遲、訊息遺失和正確性。
重要事項
自我檢查診斷探查會將訊息發佈至 azedge/dmqtt/selftest 主題。 請勿發佈或訂閱以 azedge/dmqtt/selftest 開頭的診斷探查主題。 發佈或訂閱這些主題可能會影響探查或自我測試檢查,併產生無效的結果。 無效的結果可以列在診斷探查記錄、計量或儀錶板中。 例如,您可能會在 diagnostics-probe 記錄中看到「探查事件路徑驗證失敗,且作業類型為『發佈』」的問題。 如需詳細資訊,請參閱已知問題。
雖然 MQTT 訊息代理程式的 診斷 會在自己的主題上產生診斷訊息,但當您訂閱 # 主題時,您仍然可以從自我測試取得訊息。 這是限制和預期的行為。
變更診斷設定
在大部分情況下,默認診斷設定就已足夠。 若要覆寫 MQTT 訊息代理程式的預設診斷設定,請編輯 diagnostics Broker 資源中的 區段。 目前,當您使用 --broker-config-file 命令部署 Azure IoT 作業時,只能使用 az iot ops create 旗標來變更設定。
若要覆寫,請遵循 BrokerDiagnostics API 參考來準備代理程式組態檔。 例如:
{
"diagnostics": {
"metrics": {
"prometheusPort": 9600
},
"logs": {
"level": "debug"
},
"traces": {
"mode": "Enabled",
"cacheSizeMegabytes": 16,
"selfTracing": {
"mode": "Enabled",
"intervalSeconds": 30
},
"spanChannelCapacity": 1000
},
"selfCheck": {
"mode": "Enabled",
"intervalSeconds": 30,
"timeoutSeconds": 15
}
}
}
然後,使用 az iot ops create 命令和 --broker-config-file 旗標部署IoT作業,如下列範例所示。 (為求簡潔,省略了其他參數。)
az iot ops create ... --broker-config-file <FILE>.json
深入了解 進階 MQTT 訊息代理程式組態 和 Broker 範例的 Azure CLI 支援。