在 Azure 監視器中建立診斷設定
建立和編輯 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 命令,建立診斷設定。 請參閱此命令的文件,以瞭解其參數的描述。
下列範例命令會使用這三個目的地建立診斷設定。 語法會依據您的用戶端而稍有差異。
若要在服務支援時指定 資源特定模式,請使用 true
值新增 export-to-resource-specific
參數。
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、CLI 或 Azure PowerShell 時會發生此問題。 透過 Azure 入口網站建立的診斷設定不會受到影響,因為只會顯示支援的類別名稱。
該問題是基礎 API 中最近的變更所造成。 不支援 AllMetrics 以外的計量類別,且除了少數特定 Azure 服務之外,一律不支援。 在過去,部署診斷設定時會忽略其他類別名稱。 Azure 監視器後端會將這些類別重新導向至 AllMetrics。 自 2021 年 2 月起,已更新後端,以具體確認所提供的計量類別正確無誤。 此變更導致某些部署失敗。
如果您收到此錯誤,請更新您的部署以將計量類別名稱取代為 AllMetrics 來修正問題。 若部署先前新增多個類別,則應該只能保留一項具有 AllMetrics 的類別。 若您繼續遇到問題,請透過 Azure 入口網站連絡 Azure 支援。
設定會因為 resourceID 中的非 ASCII 字元而消失
診斷設定不支援非 ASCII 字元的資源識別碼。 例如,請考量「Preproducción」一詞。因為您無法在 Azure 中重新命名,所以唯一選項是建立不含非 ASCII 字元的新資源。 若字元位於資源群組中,您可以將其底下的資源移至新的資源群組。 否則,您必須重新建立資源。
重複或已卸除資料的可能性
雖然系統會盡一切努力確保所有記錄資料都正確傳送至目的地,但無法保證端點之間記錄的 100% 資料傳輸。 適當的重試及其他機制將有助於解決這些問題,並嘗試確保記錄資料抵達端點。
非使用中資源
當資源處於非使用中狀態並匯出零值計量時,診斷設定匯出機制會逐步退避,以避免匯出和儲存零值的不必要成本。 退避可能導致下一個非零值的匯出延遲。
當資源處於非使用中狀態一小時,匯出機制會退避為 15 分鐘。 這表示要匯出的下一個非零值最多可能會延遲 15 分鐘。 在非使用狀態七天之後,達到兩個小時的最大退避時間。 一旦資源開始匯出非零值,匯出機制就會還原為 3 分鐘的原始匯出延遲。
此行為僅適用於匯出的計量,且不會影響以計量為基礎的警示或自動調整。
下一步