建立和編輯 Azure 監視器中的診斷設定,將 Azure 平台計量與記錄傳送至如 Azure 監視器記錄、Azure 儲存體或 Azure 事件中樞的不同目的地。 您可以使用不同的方法來處理診斷設定,例如 Azure 入口網站、Azure CLI、PowerShell 和 Azure Resource Manager。
您可以從 Azure 監視器功能表或資源的功能表,在 Azure 入口網站中設定診斷設定。
在 Azure 入口網站中設定診斷設定的位置會視資源而定:
針對單一資源,在資源功能表的 [監視] 下選取 [診斷設定]。
針對一或多個資源,在 [Azure 監視器] 功能表的 [設定] 下選取 [診斷設定],然後選取資源。
針對活動記錄,在 [Azure 監視器] 功能表上選取 [活動記錄],然後選取 [匯出活動記錄]。 請務必先停用活動記錄的任何舊版設定。 如需指示,請參閱停用現有的設定。
如果已選取的資源上沒有設定,則系統會提示您建立設定。 選擇 新增診斷設定。
若資源上存在現有的設定,則您會看到已設定的設定清單。 選取 [新增診斷設定] 新增設定。 亦或選取 [編輯設定] 編輯現有的設定。 每個設定中,每種目的地類型最多只能有一個。
如果您的設定還沒有名稱,請為其命名。
要路由的記錄與計量:針對記錄,請選擇類別群組,或選取您想要傳送至稍後指定目的地的每個資料類別個別核取方塊。 類別清單會因每個 Azure 服務而異。 如果您也要將計量儲存至 Azure 監視器記錄中,請選取 [AllMetrics]。
目的地詳細資料:選取每個目的地的核取方塊。 隨即出現選項,以便您可以新增詳細資訊。
傳送至 Log Analytics 工作區: 選取 [訂用帳戶],以及您要傳送資料的 [Log Analytics 工作區]。 如果沒有工作區,您必須建立工作區再繼續。
封存至儲存帳戶: 選取您的 [訂用帳戶],以及您要在其中儲存資料的 [儲存體帳戶]。
串流至事件中樞: 指定下列準則:
-
訂用帳戶:事件中樞所屬的訂用帳戶。
-
事件中樞命名空間:如果沒有,您必須建立事件中樞命名空間。
-
事件中樞 (選用):要傳送所有資料的所在名稱。 若不指定名稱,則會為每個記錄類別建立事件中樞。 若要傳送至多個類別,您可能要指定名稱以限制事件中樞建立的數目。 如需詳細資訊,請參閱 Azure 事件中樞配額和限制。
-
事件中樞原則名稱 (選用):原則會定義串流機制所擁有的權限。 如需詳細資訊,請參閱事件中樞功能。
傳送至合作夥伴解決方案: 您必須先將 Azure 原生 ISV 服務安裝到您的訂用帳戶中。 設定選項會因合作夥伴而有所不同。 如需詳細資訊,請參閱 Azure 原生 ISV 服務概觀。
如果服務同時支援 資源特定 和 Azure 診斷 模式,那麽當您選取 [Log Analytics 工作區] 做為目的地時,會顯示 [目的地資料表] 的選項。 您通常應該選取 [資源特定],因為資料表結構允許更有彈性且更有效率的查詢。
選取 [儲存]。
一段時間之後,設定清單中會出現此資源的新設定。 隨著新事件資料產生,記錄會串流至指定的目的地。 從發出事件到事件出現在 Log Analytics 工作區中,最多可能需要 15 分鐘的時間。
使用 New-AzDiagnosticSetting Cmdlet 來建立具有 Azure PowerShell 的診斷設定。 如需了解 Cmdlet 參數的描述,請參閱此 Cmdlet 的文件。
下列範例 PowerShell Cmdlet 會使用 Log Analytics 工作區,為所有記錄或稽核記錄建立診斷設定,以及金鑰保存庫的計量。
$KV = Get-AzKeyVault -ResourceGroupName <resource group name> -VaultName <key vault name>
$Law = Get-AzOperationalInsightsWorkspace -ResourceGroupName <resource group name> -Name <workspace name> # LAW name is case sensitive
$metric = New-AzDiagnosticSettingMetricSettingsObject -Enabled $true -Category AllMetrics
# For all available logs, use:
$log = New-AzDiagnosticSettingLogSettingsObject -Enabled $true -CategoryGroup allLogs
# or, for audit logs, use:
$log = New-AzDiagnosticSettingLogSettingsObject -Enabled $true -CategoryGroup audit
New-AzDiagnosticSetting -Name 'KeyVault-Diagnostics' -ResourceId $KV.ResourceId -WorkspaceId $Law.ResourceId -Log $log -Metric $metric -Verbose
透過 Azure CLI 使用 az monitor diagnostic-settings create 命令,建立診斷設定。 請參閱此命令的文件,以瞭解其參數的描述。
下列範例命令會使用這三個目的地建立診斷設定。 語法會依據您的用戶端而稍有差異。
若要在服務支援時指定 資源特定模式,請使用 export-to-resource-specific
值新增 true
參數。
az monitor diagnostic-settings create \
--name KeyVault-Diagnostics \
--resource /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.KeyVault/vaults/mykeyvault \
--logs '[{"category": "AuditEvent","enabled": true}]' \
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--storage-account /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> \
--workspace /subscriptions/<subscription ID>/resourcegroups/<resource group name>/providers/microsoft.operationalinsights/workspaces/<log analytics workspace name> \
--event-hub-rule /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.EventHub/namespaces/<event hub namespace>/authorizationrules/RootManageSharedAccessKey \
--event-hub <event hub name> \
--export-to-resource-specific true
下列 JSON 範本會提供建立診斷設定的範例,以將所有稽核記錄傳送至記錄分析工作區。 請記住,apiVersion
可能會根據範圍中的資源而變更。
範本檔案
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"scope": {
"type": "string"
},
"workspaceId": {
"type": "string"
},
"settingName": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Insights/diagnosticSettings",
"apiVersion": "2021-05-01-preview",
"scope": "[parameters('scope')]",
"name": "[parameters('settingName')]",
"properties": {
"workspaceId": "[parameters('workspaceId')]",
"logs": [
{
"category": null,
"categoryGroup": "audit",
"enabled": true
}
]
}
}
]
}
參數檔案
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"settingName": {
"value": "audit3"
},
"workspaceId": {
"value": "/subscriptions/<subscription id>/resourcegroups/<resourcegroup name>/providers/microsoft.operationalinsights/workspaces/<workspace name>"
},
"scope": {
"value": "Microsoft.<resource type>/<resourceName>"
}
}
}
故障排除
不支援計量類別
部署診斷設定時,您會收到類似「不支援計量類別 'xxxx'」的錯誤訊息。 即使您先前的部署成功,還是可能會收到此錯誤。
使用 Resource Manager 範本、REST API、Azure CLI 或 Azure PowerShell 時會發生此問題。 因為只會顯示支援的類別名稱,透過 Azure 入口網站建立的診斷設定不會受到影響。
除了有限的 Azure 服務以外,不支援 AllMetrics
以外的計量類別。 部署診斷設定時,先前會忽略其他類別名稱,並將其重新導向至 AllMetrics
。 自 2021 年 2 月起,提供的計量類別會經過驗證。 這項變更導致某些部署失敗。
若要修正此問題,請更新您的部署,以移除 以外的 AllMetrics
任何計量類別名稱。 如果部署新增多個類別,則只使用一個 AllMetrics
類別。 若您繼續遇到問題,請透過 Azure 入口網站連絡 Azure 支援。
設定會因為 resourceID 中的非 ASCII 字元而消失
診斷設定不支援非 ASCII 字元的資源識別碼(例如 Preproduccón)。 由於您無法在 Azure 中重新命名資源,因此您必須建立沒有非 ASCII 字元的新資源。 如果字元位於資源群組中,您可以將資源移至新的群組。
資料重複或遺失的可能性
雖然系統會盡一切努力確保所有記錄資料都正確傳送至目的地,但無法保證端點之間記錄的 100% 資料傳輸。 適當的重試及其他機制將有助於解決這些問題,並嘗試確保記錄資料抵達端點。
非使用中資源
當資源處於非使用中狀態並匯出零值計量時,診斷設定匯出機制會逐步退避,以避免匯出和儲存零值的不必要成本。 退避可能導致下一個非零值的匯出延遲。
當資源處於非使用狀態超過一小時的時候,匯出機制會改為每 15 分鐘一次。 這表示要匯出的下一個非零值最多可能會延遲 15 分鐘。 在非使用狀態七天之後,達到兩個小時的最大退避時間。 一旦資源開始匯出非零值,匯出機制就會還原為 3 分鐘的原始匯出延遲。
此行為僅適用於導出的計量,且不會影響以計量為基礎的警示或自動調整。
為什麼在啟用診斷設定之後,在 Application Insights 中看到重複的遙測?
當您啟用診斷設定,將工作區型 Application Insights 數據匯出至任何 Log Analytics 工作區,包括已儲存 Application Insights 數據的相同工作區時,查詢會傳回重複的結果。 因為預設管線和診斷設定都會將相同的數據傳送至工作區,因此會發生此重複。
若要避免重複的遙測,請勿設定診斷設定將數據傳送至相同的工作區。 如果您需要將數據匯出至不同的工作區,請使用資料收集規則 (DCR) 搭配轉換和自定義資料表。 此設定會在擷取之前先篩選數據,並防止查詢中的重複記錄。
後續步驟