使用 Azure 原則和計劃大規模建立診斷設定
若要監視 Azure 資源,您必須為每個資源建立診斷設定。 當您有許多資源時,此流程的管理可能會變困難。 若要簡化大規模建立和套用診斷設定的流程,請使用 Azure 原則,以自動產生新資源與現有資源的診斷設定。
每個 Azure 資源類型都有一組唯一的類別,診斷設定中會列出這些類別。 每個資源類型都需要個別的原則定義。 某些資源類型具有內建原則定義,您可以在不修改的情況下指派這些定義。 針對其他資源類型,您可以建立自訂定義。
記錄類別群組
記錄類別群組,將類型類似的記錄分組在一起。 類別群組可讓您輕鬆地在單一命令中參考多個記錄。 存在一個內含所有記錄的 allLogs 類別群組。 另外還有內含所有稽核記錄的稽核類別群組。 藉由使用類別群組,您就可以定義原則;此原則會在將新的記錄類別新增至群組時動態更新。
適用於 Azure 監視器的內建原則定義
每個資源類型通常會有三個內建原則定義,與要將診斷傳送至其中的三個目的地對應:
- Log Analytics 工作區
- Azure 儲存體帳戶
- 事件中樞
根據您需要的目的地,為資源類型指派原則。
一組以稽核記錄類別群組為基礎的內建原則和計劃,可協助您只執行幾個步驟來套用診斷設定。 如需詳細資訊,請參閱使用內建原則依類別群組啟用診斷設定。
如需 Azure 監視器內建原則的完整清單,請參閱 Azure 監視器的 Azure 原則內建定義
自訂原則定義
針對沒有內建原則的資源類型,您必須建立自訂原則定義。 您可以藉由複製現有的內建原則,然後針對資源類型進行修改,在 Azure 入口網站中手動新建原則。 或者使用 PowerShell 資源庫中的指令碼,以程式設計方式建立原則。
Create-AzDiagPolicy 指令碼會針對您可以使用 PowerShell 或 Azure CLI 安裝的特定資源類型建立原則檔案。 請使用下列程序來建立診斷設定的自訂原則定義:
確保您已安裝 Azure PowerShell。
使用下列命令安裝指令碼:
Install-Script -Name Create-AzDiagPolicy
使用參數執行指令碼,以指定傳送記錄的位置。 在提示字元中指定訂用帳戶和資源類型。
例如,若要建立將記錄傳送至 Log Analytics 工作區與事件中樞的原則定義,請使用下列命令:
Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
或者,您可以在命令中指定訂閱與資源類型。 例如,若要針對 SQL Server 資料庫建立將記錄傳送至 Log Analytics 工作區與事件中樞的原則定義,請使用下列命令:
Create-AzDiagPolicy.ps1 -SubscriptionID <subscription id> -ResourceType Microsoft.Sql/servers/databases -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
指令碼會為每個原則定義建立個別的資料夾。 每個資料夾都包含三個名為 azurepolicy.json、azurepolicy.rules.json 與 azurepolicy.parameters.json 的檔案。 若您想要在 Azure 入口網站中手動建立原則,可以複製並貼上 azurepolicy.json 的內容,因為其包括整個原則定義。 搭配 PowerShell 或 Azure CLI 一起使用其他兩個檔案,從命令列建立原則定義。
下列範例顯示如何從 PowerShell 與 Azure CLI 安裝原則定義。 每個範例都包括指定 Monitoring 類別的中繼資料,以將新的原則定義與內建原則定義分組。
New-AzPolicyDefinition -name "Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace" -policy .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json -parameter .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json -mode All -Metadata '{"category":"Monitoring"}'
az policy definition create --name 'deploy-diag-setting-sql-database--workspace' --display-name 'Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace' --rules 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json' --params 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json' --subscription 'AzureMonitor_Docs' --mode All
計畫
常見的策略是建立計畫 (包括為每個 Azure 服務建立診斷設定的原則定義),而不是為每個原則定義建立指派。 依據您管理環境的方式,建立計畫與管理群組、訂閱或資源群組之間的指派。 此策略提供下列優點:
- 為計畫建立單一指派,而不是針對每個資源類型建立多個指派。 針對多個監視群組、訂閱或資源群組使用相同的計畫。
- 當您必須新增資源類型或目的地時,請修改計畫。 例如,您的初始需求可能是只將資料傳送至 Log Analytics 工作區,但稍後您想要新增事件中樞。 修改計畫,而不是建立新的指派。
如需建立計畫的詳細資料,請參閱建立及指派計畫定義。 請考量下列建議事項:
- 將 Category 設定為 Monitoring,以將其與相關的內建原則定義及自訂原則定義分組。
- 使用一般計畫參數,而不是指定 Log Analytics 工作區的詳細資料,以及計畫中包含的原則定義事件中樞。 此參數可讓您輕鬆地為所有原則定義指定通用值,並視需要變更該值。
指派
依據要監視的資源範圍,將計畫指派給 Azure 管理群組、訂閱或資源群組。 管理群組對於範圍原則很實用,尤其是當您的組織有多個訂閱時。
藉由使用計畫參數,您可以針對計畫中的所有原則定義來指定工作區或任何其他詳細資料。
補救
方案會在建立時套用至每個虛擬機。 補救工作會將計畫中的原則定義部署至現有的資源,以便為已建立的任何資源建立診斷設定。
當您使用 Azure 入口網站建立指派時,可以選擇同時建立補救工作。 如需補救的詳細資訊,請參閱使用 Azure 原則 補救不相容的資源。
疑難排解
不支援計量類別
部署診斷設定時,您會收到類似「不支援計量類別 '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 字元的新資源。 如果字元位於資源群組中,您可以將資源移至新的群組。