共用方式為


使用 JSON 建立資料收集規則(DCR)

在 Azure 監視器中建立資料收集規則 (DCR)的方法有很多種。 在許多情況下,你可以 使用 Azure 入口網站 建立 DCR,而不必理解 DCR 定義的結構。 不過,在其他案例中,您可能需要建立自己的 DCR,或直接在 JSON 中使用其定義來編輯現有的 DCR。 這可能是用於使用進階功能如 轉換 ,或是使用命令列工具來建立和管理 DCR。

警告

如果你 使用 Azure 入口網站編輯現有的資料收集規則(DCR),而這些功能不受入口網站支援,則它會覆寫直接編輯 DCR 的 JSON 所做的任何變更。 例如,如果你為某個資料來源的 DCR 新增一個轉換,而該資料來源無法在入口網站中創建這類轉換,那麼當你在入口網站編輯 DCR 時,該轉換將會被移除。 在這種情況下,你必須直接編輯 JSON 檔案來持續修改 DCR。

權限

建立 DCR 需要以下權限:

內建角色 範圍 原因
監視參與者
  • 訂用帳戶和/或
  • 資源群組和/或
  • 現有的 DCR
建立或編輯 DCR,將規則指派給機器,部署關聯。
包含動作 Microsoft.Resources/deployments/* 的任何角色
  • 訂用帳戶和/或
  • 資源群組和/或
  • 現有的 DCR
部署 Azure Resource Manager 範本。

這很重要

在與目標「記錄分析」工作區或「Azure 監視器」工作區相同的區域中建立 DCR。 您可以將 DCR 與租使用者中任何訂用帳戶或資源群組中的機器或容器產生關聯。 若要跨租用戶傳送資料,您必須先啟用 Azure Lighthouse

DCR 定義

與其從零建立 DCR 定義,不如從你在 Azure 入口網站建立的 DCR 開始,然後下載它的 JSON 定義來修改。 或者,您也可以使用其中一個範例 DCR,它們提供數個常見情境的 JSON。 使用 Azure 監視器中資料收集規則結構中的資訊,修改特定環境和需求的 JSON 檔案。

若要檢視 DCR 的 JSON 定義,請參閱 檢視 DCR 定義

建立或編輯 DCR

一旦你有了 DCR 定義,就可以用以下任一方法部署到 Azure Monitor。 這和建立新 DCR 或編輯現有 DCR 的方法一樣。

使用 CLI 建立或編輯 DCR

使用 az monitor data-collection rule create 命令從您的 JSON 檔案建立 DCR。

az monitor data-collection rule create --location 'eastus' --resource-group 'my-resource-group' --name 'my-dcr' --rule-file 'C:\MyNewDCR.json' --description 'This is my new DCR'

備註

雖然您可以選擇使用 PowerShell 或 CLI 命令來建立和編輯 DCR,但如果發生編譯錯誤,API 和 ARM 方法會提供更詳細的錯誤訊息。

在下列範例中,DCR 會指定目的地 Log Analytics 工作區中不存在的數據表名稱。 PowerShell 命令會傳回一般錯誤訊息,但 API 呼叫會傳回指定確切錯誤的詳細錯誤訊息。

螢幕快照,顯示使用 PowerShell 命令時 DCR 的錯誤訊息。

螢幕快照,顯示使用 API 時 DCR 的錯誤訊息。

編輯和測試 DCR 的策略

當您使用其 JSON 定義建立或編輯 DCR 時,通常需要進行多個更新,以達到您想要的功能。 您需要一種高效的方法來更新 DCR,如果未達到預期效果,請進行疑難排解,以便於進行更多更新。 特別是在您要將轉換新增至 DCR 的情況下,因為您需要驗證查詢是否如預期般運作。 由於您無法直接在 Azure 入口網站 中編輯 JSON,以下是您可以使用的一些策略。

使用本機檔案作為 DCR 的來源

如果您使用本機 JSON 檔案作為您建立和編輯之 DCR 的來源,您一律可以存取最新版的 DCR 定義。 如果您想要使用 GitHub 或 Azure DevOps 等版本控制工具來管理變更,則這是理想的選擇。 您也可以使用 VS Code 之類的編輯器來變更 DCR,然後使用命令行工具來更新 Azure 監視器中的 DCR,如上所述。

以下是範例 PowerShell 腳本,可用來從來源檔案將變更推送至 DCR。 這會先驗證來源檔案是否為有效的 JSON,再將它傳送至 Azure 監視器。

param (
    [Parameter(Mandatory = $true)][string]$ResourceId,  # Resource ID of the DCR
    [Parameter(Mandatory = $true)][string]$FilePath  # Path to the DCR JSON file to upload
)

# Read the DCR content from the file
Write-Host "Reading new DCR content from: $FilePath" -ForegroundColor Green
$DCRContent = Get-Content $FilePath -Raw

# Ensure the DCR content is valid JSON
try {
    $ParsedDCRContent = $DCRContent | ConvertFrom-Json
} catch {
    Write-Host "Invalid JSON content in file: $FilePath" -ForegroundColor Red
    exit 1
}

# Create or update the DCR in the specified resource group
Write-Host "Deploying DCR $ResourceId ..." -ForegroundColor Green
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent

將 DCR 內容儲存至暫存盤

如果您沒有本機檔案中的 DCR 定義,您可以從 Azure 監視器擷取定義,並將它儲存至暫存盤。 接著,您可以使用 VS Code 之類的編輯器來編輯檔案,再將更新推送至 Azure 監視器。

以下是可用來編輯 Azure 監視器中現有 DCR 的 PowerShell 腳本範例。 腳本會擷取 DCR 定義,並將它儲存至暫存盤,再啟動 VS Code。 當您向文稿指出已儲存變更之後,DCR 會更新為新的內容,並刪除暫存盤。

param ([Parameter(Mandatory=$true)] $ResourceId)

# Get DCR content and save it to a local file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath

# Open DCR in code editor
code $FilePath | Wait-Process

{ 
	#write DCR content back from the file
	$DCRContent = Get-Content $FilePath -Raw
	Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent		
}

#Delete temporary file
Remove-Item $FilePath

使用 ARM 範本就地編輯 DCR

如果您想要在 Azure 入口網站 中完全執行編輯,您可以使用匯出範本功能來擷取 DCR 的 ARM 範本。 然後,您可以在 JSON 中修改定義,並在 Azure 入口網站 中重新部署它。

  1. 選取您想要在 Azure 入口網站 中修改的 DCR,然後選取 [匯出範本]。 然後按一下 部署 以重新部署相同的範本。

    此螢幕快照顯示 Azure 入口網站 中數據收集規則的 [匯出範本] 選項。

  2. 按兩下 [編輯範本 ] 以開啟 DCR 的可編輯 JSON 版本。 請勿變更參數值。

    此螢幕快照顯示 Azure 入口網站 中資料收集規則的 [編輯範本] 選項。

  3. 對 DCR 進行任何必要的變更,然後按下 [ 儲存]。

    此螢幕快照顯示 Azure 入口網站 中數據收集規則的可編輯 JSON。

  4. 如果您想要建立新的 DCR,請變更 name 參數。 否則,請將參數保留不變。 按兩下 [ 檢閱 + 建立 ] 以部署修改過的範本和 [建立 ] 以建立新的 DCR。

    此螢幕快照顯示 Azure 入口網站 中數據收集規則的 [檢閱 + 建立] 選項。

  5. 如果 DCR 有效且沒有任何錯誤,部署將會成功,且 DCR 會以新的組態更新。 按兩下 [移至資源 ] 以開啟修改過的 DCR。

    顯示 Azure 入口網站 中數據收集規則成功部署的螢幕快照。

  6. 如果 DCR 發生編譯錯誤,您會收到部署失敗的訊息。 按兩下 [ 錯誤詳細資料 ] 和 [作業詳細資料 ] 以檢視錯誤的詳細資料。 按兩下 [ 重新部署 ],然後 再次編輯範本 ,對 DCR 進行必要的變更,然後再次儲存並部署它。

    顯示 Azure 入口網站 中數據收集規則失敗部署的螢幕快照。

驗證數據收集並進行疑難解答

安裝 DCR 之後,變更可能需要幾分鐘的時間才會生效,以及使用更新的 DCR 收集數據。 如果沒有發現任何資料被收集,可以使用 DCR 監控 功能,其中包含指標和日誌,幫助排除故障。

會自動為所有 DCR 收集 DCR 計量,且您可以使用計量瀏覽器 (例如其他 Azure 資源的平台計量) 來分析它們。 啟用 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 資料表中是否有任何可能已記錄的擷取錯誤。 這可以提供識別問題根本原因的其他詳細資料。

後續步驟