共用方式為


在 Azure 監視器中監視 DCR 資料收集並進行疑難排解

本文提供詳細的計量和記錄,可讓您用來監視效能,並針對與 Azure 監視器中資料收集相關的任何問題進行疑難排解。 此遙測目前適用於資料收集規則 (DCR) 所定義的資料收集案例,例如 Azure 監視器代理程式和記錄擷取 API。

重要

本文僅參考使用 DCR 的資料收集案例,包括下列各項:

如需任何可用的監視和疑難排解資訊,請參閱其他案例的文件。

DCR 診斷功能包括記錄處理期間發出的計量和錯誤記錄。 DCR 計量會提供所擷取的資料量、任何處理錯誤的數目和本質,以及與資料轉換相關的統計資料相關資訊。 每當資料處理未成功且資料未到達其目的地時,都會產生 DCR 錯誤記錄

DCR 錯誤記錄

當資料到達 Azure 監視器擷取管線,但無法到達其目的地時,便會產生錯誤記錄。 錯誤狀況的範例包括:

  • 記錄傳遞錯誤
  • 記錄結構使轉換 KQL 無效的轉換錯誤
  • 記錄擷取 API 呼叫:
    • 具有 200/202 以外的任何 HTTP 回應
    • 具有包含格式錯誤資料的承載
    • 具有任何擷取限制的承載
    • 由於 API 呼叫限制超額而進行節流

為了避免過度記錄與相同資料流程相關的持續性錯誤,某些錯誤每小時只會記錄有限次數,後面接著摘要錯誤訊息。 然後,錯誤會設為靜音,直到小時結束為止。 記錄指定錯誤的次數可能會根據部署 DCR 的區域而有所不同。

某些記錄擷取錯誤將不會記錄,因為它們無法與 DCR 相關聯。 下列錯誤可能不會記錄:

  • 格式錯誤呼叫 URI 所造成的失敗 (HTTP 回應碼 404)
  • 某些內部伺服器錯誤 (HTTP 回應碼 500)

啟用 DCR 錯誤記錄

DCR 錯誤記錄會實作為 Azure 監視器中的資源記錄。 建立 DCR 的診斷設定,以啟用記錄收集。 每個 DCR 都需要自己的診斷設定。 如需詳細程序,請參閱在 Azure 監視器中建立診斷設定。 選取類別 [記錄錯誤] 和 [傳送至 Log Analytics] 工作區。 您可能想要選取 DCR 所使用的相同工作區,或想要合併單一工作區中的所有錯誤記錄。

擷取 DCR 錯誤記錄

錯誤記錄會寫入您在診斷設定中所指定 Log Analytics 工作區中的 DCRLogErrors 資料表。 以下是您可以在 Log Analytics 中用來擷取這些記錄的範例查詢。

擷取特定 DCR 的所有錯誤記錄

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"

擷取特定 DCR 中特定輸入資料流的所有錯誤記錄

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
| where InputStreamId == "Custom-MyTable_CL"

DCR 計量

DCR 計量會自動針對所有 DCR 收集,且您可以使用計量瀏覽器來分析它們,例如其他 Azure 資源的平台計量。 輸入資料流會包含為維度,因此如果您有具有多個輸入資料流的 DCR,您可以進行篩選或分割來分析每個資料流。 某些計量包含其他維度,如下表所示。

計量 維度 描述
每分鐘記錄擷取位元組數 輸入資料流 每分鐘接收的位元組總數。
每分鐘記錄擷取要求數 輸入資料流
HTTP 回應碼
每分鐘收到的呼叫數
每分鐘卸除的記錄資料列數 輸入資料流 每分鐘處理期間卸除的記錄資料列數。 這包括由於 KQL 轉換中的篩選準則而卸除的資料列,以及因錯誤而捨棄的資料列。
每分鐘收到的記錄資料列數 輸入資料流 每分鐘針對處理收到的記錄資料列數。
每分鐘記錄轉換持續時間 輸入資料流 每分鐘平均 KQL 轉換執行階段。 表示 KQL 轉換程式碼效率。 具有較長轉換執行階段的資料流程可能會發生資料處理延遲,以及更高的資料延遲。
每分鐘記錄轉換錯誤數 輸入資料流
錯誤類型
每分鐘發生的處理錯誤數

疑難排解常見問題

如果您在 Log Analytics 工作區中遺漏預期的資料,請遵循這些基本步驟來針對問題進行疑難排解。 這假設您已啟用 DCR 記錄,如上所述。

  • 檢查 Logs Ingestion Bytes per MinLogs Rows Received per Min 之類的計量,以確保資料已連線到 Azure 監視器。 如果沒有,請檢查您的資料來源,以確保其會如預期般傳送資料。
  • 檢查 Logs Rows Dropped per Min 是否有任何資料列正在卸除。 這可能並不表示錯誤,因為資料列可能會由轉換卸除。 如果卸除的資料列與 Logs Rows Dropped per Min 相同,則不會在工作區中擷取任何資料。 檢查 Logs Transformation Errors per Min 以查看是否有任何轉換錯誤。
  • 檢查 Logs Transformation Errors per Min 以判斷是否有任何從轉換套用至傳入資料的錯誤。 這可能是因為資料結構或轉換本身的變更所造成。
  • 檢查 DCRLogErrors 是否有任何可能已記錄的擷取錯誤。 這可以提供識別問題根本原因的其他詳細資料。

監視記錄擷取

下列訊號可能有助於使用 DCR 監視記錄收集的健康情況。 建立警示規則來識別這些情況。

訊號 可能的原因和動作
DCRErrorLogs 中的新項目或 Log Transform Errors 中的突然變更。 - 記錄擷取 API 設定的問題,例如驗證、DCR 或 DCE 的存取、呼叫承載問題。
- 資料結構中的變更導致 KQL 轉換失敗。
- 資料目的地組態的變更導致資料傳遞失敗。
Logs Ingestion Bytes per Min 中的突然變更 - 用戶端上記錄擷取設定的變更,包括 AMA 設定。
- 所傳送記錄結構的變更。
Logs Ingestion Bytes per MinLogs Rows Received per Min 之間的比率突然變更 - 所傳送記錄結構的變更。 檢查變更,以確定資料已使用 KQL 轉換正確處理。
Logs Transformation Duration per Min 中的突然變更 - 記錄結構的變更,影響 KQL 轉換中所設定記錄篩選準則的效率。 檢查變更,以確定資料已使用 KQL 轉換正確處理。
Logs Ingestion Requests per MinLogs Ingestion Bytes per Min 接近記錄擷取 API 服務限制。 - 檢查並最佳化 DCR 設定,以避免節流。

警示

建立警示規則,以在發生潛在錯誤狀況時主動通知,而不是被動地針對問題進行疑難排解。 下表提供您可以建立的警示規則範例,以監視記錄擷取。

Condition 警示詳細資料
已卸除資料列的突然變更 針對 Logs Rows Dropped per Min 使用動態閾值的計量警示規則。
接近服務限制的 API 呼叫數 針對 Logs Ingestion Requests per Min 使用靜態閾值的計量警示規則。 設定接近 12,000 的閾值,這是每個 DCR 要求數目上限/分鐘的服務限制。
錯誤記錄 使用 DCRLogErrors 的記錄查詢警示。 使用資料表資料列量值和閾值 1,每當記錄任何錯誤時,就會發出警示。

下一步