在 Azure 監視器中監視 DCR 資料收集並進行疑難排解
本文提供詳細的計量和記錄,可讓您用來監視效能,並針對與 Azure 監視器中資料收集相關的任何問題進行疑難排解。 此遙測目前適用於資料收集規則 (DCR) 所定義的資料收集案例,例如 Azure 監視器代理程式和記錄擷取 API。
重要
本文僅參考使用 DCR 的資料收集案例,包括下列各項:
- 使用 Azure 監控器代理程式 (AMA) 收集的記錄
- 使用 記錄擷取 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 Min
和Logs 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 Min 和 Logs Rows Received per Min 之間的比率突然變更 |
- 所傳送記錄結構的變更。 檢查變更,以確定資料已使用 KQL 轉換正確處理。 |
Logs Transformation Duration per Min 中的突然變更 |
- 記錄結構的變更,影響 KQL 轉換中所設定記錄篩選準則的效率。 檢查變更,以確定資料已使用 KQL 轉換正確處理。 |
Logs Ingestion Requests per Min 或 Logs Ingestion Bytes per Min 接近記錄擷取 API 服務限制。 |
- 檢查並最佳化 DCR 設定,以避免節流。 |
警示
建立警示規則,以在發生潛在錯誤狀況時主動通知,而不是被動地針對問題進行疑難排解。 下表提供您可以建立的警示規則範例,以監視記錄擷取。
Condition | 警示詳細資料 |
---|---|
已卸除資料列的突然變更 | 針對 Logs Rows Dropped per Min 使用動態閾值的計量警示規則。 |
接近服務限制的 API 呼叫數 | 針對 Logs Ingestion Requests per Min 使用靜態閾值的計量警示規則。 設定接近 12,000 的閾值,這是每個 DCR 要求數目上限/分鐘的服務限制。 |
錯誤記錄 | 使用 DCRLogErrors 的記錄查詢警示。 使用資料表資料列量值和閾值 1,每當記錄任何錯誤時,就會發出警示。 |