部署規劃 - 診斷

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

下一步