使用 Azure 原則大規模啟用 Azure Stack HCI 的深入解析
適用于:Azure Stack HCI 版本 23H2 和 22H2
本文件說明如何使用 Azure 原則大規模啟用 Azure Stack HCI 叢集的深入解析。 若要啟用單一 Azure Stack HCI 叢集的深入解析,請參閱 使用深入解析監視 Azure Stack HCI。
如需 Azure 原則 的概觀,請參閱什麼是 Azure 原則?
關於使用 Azure 原則大規模啟用深入解析
若要使用 Insights 監視多個 Azure Stack HCI 叢集,您必須個別啟用每個叢集的深入解析。 若要簡化此程式,您可以使用 Azure 原則,在訂用帳戶或資源群組層級自動啟用 Insights。 這些原則會根據定義的規則,檢查其範圍內資源的合規性。 如果在指派原則之後找到任何非封閉式資源,您可以透過補救工作加以補救。
本節說明用來大規模啟用 Insights 的 Azure 原則。 針對每個原則,它也會在 JSON 中提供原則定義範本,讓您依身分使用來建立原則定義,或做為進一步自定義的起點。
修復 AMA 的原則
針對在 2023 年 11 月之前註冊的 Azure Stack HCI 叢集,您必須在再次設定 Insights 之前修復叢集註冊和 Azure 監視器代理程式 (AMA)。 如需詳細資訊,請參閱 針對 2023 年 11 月之前註冊的叢集進行疑難解答。
修復 AMA 的原則會執行下列功能:
- 如果存在,則會移除登錄機碼,這會決定 AMA 收集數據的資源識別碼。
套用此原則之前,請記住下列事項:
- 此原則僅適用於 Azure Stack HCI 22H2 版叢集。 在任何其他原則之前套用它,以確保 AMA 會挑選正確的資源識別碼。
- 套用此原則以設定正確的資源識別碼之前,請先卸載 AMA。 如果未先卸載 AMA,則可能不會顯示數據。 如需詳細資訊,請參閱 卸載 AMA。
以下是 JSON 中的原則定義:
{
"mode": "INDEXED",
"policyRule": {
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.GuestConfiguration/guestConfigurationAssignments",
"existenceCondition": {
"allOf": [
{
"field": "Microsoft.GuestConfiguration/guestConfigurationAssignments/complianceStatus",
"equals": "Compliant"
},
{
"field": "Microsoft.GuestConfiguration/guestConfigurationAssignments/parameterHash",
"equals": "[base64(concat('[RepairClusterAMA]RepairClusterAMAInstanceName;Path', '=', parameters('Path'), ',', '[RepairClusterAMA]RepairClusterAMAInstanceName;Content', '=', parameters('Content')))]"
}
]
},
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/088ab73d-1256-47ae-bea9-9de8e7131f31"
],
"deployment": {
"properties": {
"parameters": {
"type": {
"value": "[field('type')]"
},
"location": {
"value": "[field('location')]"
},
"vmName": {
"value": "[field('name')]"
},
"assignmentName": {
"value": "[concat('RepairClusterAMA$pid', uniqueString(policy().assignmentId, policy().definitionReferenceId))]"
},
"Content": {
"value": "[parameters('Content')]"
},
"Path": {
"value": "[parameters('Path')]"
}
},
"mode": "incremental",
"template": {
"parameters": {
"type": {
"type": "string"
},
"location": {
"type": "string"
},
"vmName": {
"type": "string"
},
"assignmentName": {
"type": "string"
},
"Content": {
"type": "string"
},
"Path": {
"type": "string"
}
},
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Compute/virtualMachines/providers/guestConfigurationAssignments",
"properties": {
"guestConfiguration": {
"version": "1.0.0",
"name": "RepairClusterAMA",
"configurationParameter": [
{
"value": "[parameters('Path')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Path"
},
{
"value": "[parameters('Content')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Content"
}
],
"contentHash": "7EA99B10AE79EA5C1456A134441270BC48F5208F3521BFBFDCAE5EF7B6A9D9BD",
"contentUri": "https://guestconfiguration4.blob.core.windows.net/guestconfiguration/RepairClusterAMA.zip",
"contentType": "Custom",
"assignmentType": "ApplyAndAutoCorrect"
}
},
"location": "[parameters('location')]",
"apiVersion": "2018-11-20",
"name": "[concat(parameters('vmName'), '/Microsoft.GuestConfiguration/', parameters('assignmentName'))]",
"condition": "[equals(toLower(parameters('type')), toLower('Microsoft.Compute/virtualMachines'))]"
},
{
"type": "Microsoft.HybridCompute/machines/providers/guestConfigurationAssignments",
"properties": {
"guestConfiguration": {
"version": "1.0.0",
"name": "RepairClusterAMA",
"configurationParameter": [
{
"value": "[parameters('Path')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Path"
},
{
"value": "[parameters('Content')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Content"
}
],
"contentHash": "7EA99B10AE79EA5C1456A134441270BC48F5208F3521BFBFDCAE5EF7B6A9D9BD",
"contentUri": "https://guestconfiguration4.blob.core.windows.net/guestconfiguration/RepairClusterAMA.zip",
"contentType": "Custom",
"assignmentType": "ApplyAndAutoCorrect"
}
},
"location": "[parameters('location')]",
"apiVersion": "2018-11-20",
"name": "[concat(parameters('vmName'), '/Microsoft.GuestConfiguration/', parameters('assignmentName'))]",
"condition": "[equals(toLower(parameters('type')), toLower('Microsoft.HybridCompute/machines'))]"
},
{
"type": "Microsoft.Compute/virtualMachineScaleSets/providers/guestConfigurationAssignments",
"properties": {
"guestConfiguration": {
"version": "1.0.0",
"name": "RepairClusterAMA",
"configurationParameter": [
{
"value": "[parameters('Path')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Path"
},
{
"value": "[parameters('Content')]",
"name": "[RepairClusterAMA]RepairClusterAMAInstanceName;Content"
}
],
"contentHash": "7EA99B10AE79EA5C1456A134441270BC48F5208F3521BFBFDCAE5EF7B6A9D9BD",
"contentUri": "https://guestconfiguration4.blob.core.windows.net/guestconfiguration/RepairClusterAMA.zip",
"contentType": "Custom",
"assignmentType": "ApplyAndAutoCorrect"
}
},
"location": "[parameters('location')]",
"apiVersion": "2018-11-20",
"name": "[concat(parameters('vmName'), '/Microsoft.GuestConfiguration/', parameters('assignmentName'))]",
"condition": "[equals(toLower(parameters('type')), toLower('Microsoft.Compute/virtualMachineScaleSets'))]"
}
],
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#"
}
}
},
"name": "[concat('RepairClusterAMA$pid', uniqueString(policy().assignmentId, policy().definitionReferenceId))]"
}
},
"if": {
"anyOf": [
{
"allOf": [
{
"anyOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachineScaleSets"
}
]
},
{
"field": "tags['aks-managed-orchestrator']",
"exists": "false"
},
{
"field": "tags['aks-managed-poolName']",
"exists": "false"
},
{
"anyOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"in": [
"esri",
"incredibuild",
"MicrosoftDynamicsAX",
"MicrosoftSharepoint",
"MicrosoftVisualStudio",
"MicrosoftWindowsDesktop",
"MicrosoftWindowsServerHPCPack"
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "MicrosoftWindowsServer"
},
{
"field": "Microsoft.Compute/imageSKU",
"notLike": "2008*"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "MicrosoftSQLServer"
},
{
"field": "Microsoft.Compute/imageOffer",
"notLike": "SQL2008*"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "microsoft-dsvm"
},
{
"field": "Microsoft.Compute/imageOffer",
"like": "dsvm-win*"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "microsoft-ads"
},
{
"field": "Microsoft.Compute/imageOffer",
"in": [
"standard-data-science-vm",
"windows-data-science-vm"
]
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "batch"
},
{
"field": "Microsoft.Compute/imageOffer",
"equals": "rendering-windows2016"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "center-for-internet-security-inc"
},
{
"field": "Microsoft.Compute/imageOffer",
"like": "cis-windows-server-201*"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "pivotal"
},
{
"field": "Microsoft.Compute/imageOffer",
"like": "bosh-windows-server*"
}
]
},
{
"allOf": [
{
"field": "Microsoft.Compute/imagePublisher",
"equals": "cloud-infrastructure-services"
},
{
"field": "Microsoft.Compute/imageOffer",
"like": "ad*"
}
]
},
{
"allOf": [
{
"anyOf": [
{
"field": "Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration",
"exists": true
},
{
"field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType",
"like": "Windows*"
},
{
"field": "Microsoft.Compute/VirtualMachineScaleSets/osProfile.windowsConfiguration",
"exists": true
},
{
"field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.storageProfile.osDisk.osType",
"like": "Windows*"
}
]
},
{
"anyOf": [
{
"field": "Microsoft.Compute/imageSKU",
"exists": false
},
{
"allOf": [
{
"field": "Microsoft.Compute/imageOffer",
"notLike": "SQL2008*"
},
{
"field": "Microsoft.Compute/imageSKU",
"notLike": "2008*"
}
]
}
]
}
]
}
]
}
]
},
{
"allOf": [
{
"equals": true,
"value": "[parameters('IncludeArcMachines')]"
},
{
"anyOf": [
{
"allOf": [
{
"field": "type",
"equals": "Microsoft.HybridCompute/machines"
},
{
"field": "Microsoft.HybridCompute/imageOffer",
"like": "windows*"
}
]
},
{
"allOf": [
{
"field": "type",
"equals": "Microsoft.ConnectedVMwarevSphere/virtualMachines"
},
{
"field": "Microsoft.ConnectedVMwarevSphere/virtualMachines/osProfile.osType",
"like": "windows*"
}
]
}
]
}
]
}
]
}
},
"parameters": {
"IncludeArcMachines": {
"allowedValues": [
"true",
"false"
],
"defaultValue": "false",
"metadata": {
"description": "By selecting this option, you agree to be charged monthly per Arc connected machine.",
"displayName": "Include Arc connected machines",
"portalReview": true
},
"type": "String"
},
"Content": {
"defaultValue": "File content XYZ",
"metadata": {
"description": "File content",
"displayName": "Content"
},
"type": "String"
},
"Path": {
"defaultValue": "C:\\DSC\\CreateFileXYZ.txt",
"metadata": {
"description": "Path including file name and extension",
"displayName": "Path"
},
"type": "String"
}
}
}
安裝 AMA 的原則
安裝 AMA 的原則會執行下列功能:
評估是否已安裝 Azure Stack HCI 叢集
AzureMonitoringAgent
。透過補救工作,在不符合原則規範的叢集上安裝 AMA。
以下是 JSON 中的原則定義:
{
"mode": "Indexed",
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.AzureStackHCI/clusters"
},
"then": {
"effect": "[parameters('effect')]",
"details": {
"type": "Microsoft.AzureStackHCI/clusters/arcSettings/extensions",
"name": "[concat(field('name'), '/default/AzureMonitorWindowsAgent')]",
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"existenceCondition": {
"field": "Microsoft.AzureStackHCI/clusters/arcSettings/extensions/extensionParameters.type",
"equals": "AzureMonitorWindowsAgent"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterName": {
"type": "string",
"metadata": {
"description": "The name of Cluster."
}
}
},
"resources": [
{
"type": "Microsoft.AzureStackHCI/clusters/arcSettings/extensions",
"apiVersion": "2023-08-01",
"name": "[concat(parameters('clusterName'), '/default/AzureMonitorWindowsAgent')]",
"properties": {
"extensionParameters": {
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorWindowsAgent",
"autoUpgradeMinorVersion": false,
"enableAutomaticUpgrade": false
}
}
}
]
},
"parameters": {
"clusterName": {
"value": "[field('Name')]"
}
}
}
}
}
}
},
"parameters": {
"effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
},
"allowedValues": [
"DeployIfNotExists",
"Disabled"
],
"defaultValue": "DeployIfNotExists"
}
}
}
設定 DCR 關聯的原則
此原則會套用至 Azure Stack HCI 叢集中的每個伺服器,並執行下列功能:
dataCollectionResourceId
接受 做為輸入,並將數據收集規則 (DCR) 與每部伺服器產生關聯。注意
此原則不會建立數據收集端點 (DCE)。 如果您使用私人連結,您必須建立 DCE,以確保 Insights 中有可用的數據。 如需詳細資訊,請參閱 使用 Private Link 啟用 Azure 監視器代理程式的網路隔離。
以下是 JSON 中的原則定義:
{
"mode": "INDEXED",
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.HybridCompute/machines"
},
"then": {
"effect": "[parameters('effect')]",
"details": {
"type": "Microsoft.Insights/dataCollectionRuleAssociations",
"name": "[concat(field('name'), '-dataCollectionRuleAssociations')]",
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"machineName": {
"type": "string",
"metadata": {
"description": "The name of the machine."
}
},
"dataCollectionResourceId": {
"type": "string",
"metadata": {
"description": "Resource Id of the DCR"
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRuleAssociations",
"apiVersion": "2022-06-01",
"name": "[concat(parameters('machineName'), '-dataCollectionRuleAssociations')]",
"scope": "[format('Microsoft.HybridCompute/machines/{0}', parameters('machineName'))]",
"properties": {
"description": "Association of data collection rule. Deleting this association will break the data collection for this machine",
"dataCollectionRuleId": "[parameters('dataCollectionResourceId')]"
}
}
]
},
"parameters": {
"machineName": {
"value": "[field('Name')]"
},
"dataCollectionResourceId": {
"value": "[parameters('dcrResourceId')]"
}
}
}
}
}
}
},
"parameters": { "effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
},
"allowedValues": [
"DeployIfNotExists",
"Disabled"
],
"defaultValue": "DeployIfNotExists"
},
"dcrResourceId": {
"type": "String",
"metadata": {
"displayName": "dcrResourceId",
"description": "Resource Id of the DCR"
}
}
}
}
使用 Azure 原則大規模啟用深入解析
本節說明如何使用 Azure 原則大規模啟用適用於 Azure Stack HCI 的深入解析。
必要條件
使用 Azure 原則大規模啟用適用於 Azure Stack HCI 的深入解析之前,請先完成下列必要條件:
- 您必須能夠存取您想要啟用 Insights 的 Azure Stack HCI 叢集。 這些叢集必須部署並註冊。
- 您必須已啟用 Azure 資源的受控識別。 如需詳細資訊,請參閱 已啟用增強的管理。
- 您必須在 Azure 訂用帳戶中具有 來賓設定資源參與者 角色。
- (僅適用於 Azure Stack HCI 版本 22H2 叢集)您必須先卸載 AMA,才能開始套用 Azure 原則。
原則應用程式的順序
若要大規模啟用 Azure Stack HCI 叢集的深入解析,請依下列順序套用 Azure 原則:
修復 AMA (僅適用於 Azure Stack HCI,僅限 22H2 版叢集):
- 如果您使用 Azure Stack HCI 22H2 版叢集,請從套用原則來修復 AMA 開始。 Azure Stack HCI 版本 23H2 叢集不需要此步驟。
- 如需原則定義範本,請參閱 修復 AMA 的原則。
安裝 AMA:
- 套用原則以安裝 AMA。
- 如需原則定義範本,請參閱 安裝 AMA 的原則。
設定 DCR 關聯。
- 套用原則以設定 DCR 關聯。
- 如需原則定義範本,請參閱 設定 DCR 關聯的原則。
套用原則以大規模啟用深入解析的工作流程
請針對每個原則遵循下列步驟,大規模啟用 Insights:
- 建立原則定義。 使用原則定義範本來定義合規性的規則和條件。 請參閱 建立原則定義。
- 建立原則指派。 定義原則的範圍、排除範圍,以及強制執行的參數。 使用上一個步驟中定義的原則定義。 請參閱 建立原則指派。
- 檢視合規性狀態。 監視原則指派的合規性狀態。 檢查是否有任何不符合規範的資源。 請參閱 檢視合規性狀態。
- 補救不符合規範的資源。 建立補救工作以補救不符合規範的資源。 請參閱 補救不符合規範的資源。
建立原則定義
若要建立原則定義,請遵循下列步驟:
在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。
在 [編寫] 區段底下,選取 [定義]。
選取 [+ 原則定義 ] 以建立新的原則定義。
在 [ 原則定義 ] 頁面上,指定下列值:
欄位 動作 定義位置 選取省略號 ( ...
) 以指定原則資源所在的位置。 在 [ 定義位置 ] 窗格中,選取 Azure 訂用帳戶,然後選取 [ 選取]。名稱 指定原則定義的易記名稱。 您可以選擇性指定說明和類別。 原則規則 JSON 編輯方塊會預先填入原則定義範本。 將此範本取代為您想要套用的原則定義範本。 如需 JSON 格式的 Insights 原則定義範本,請參閱 關於使用 Azure 原則大規模啟用 Insights 一節。 角色定義 複製原則定義並貼到 [原則規則 ] 字段中之後,就會顯示此欄位。 從清單中選取 [來賓設定資源參與者] 角色。 選取 [儲存]。
您會收到原則定義建立成功的通知,並顯示原則定義頁面。 您現在可以繼續建立原則指派。
建立原則指派
接下來,您會建立原則指派,並在訂用帳戶或資源群組層級指派原則定義。 如需原則指派的詳細資訊,請參閱 Azure 原則指派結構。
若要建立原則指派,請遵循下列步驟:
在原則 上 | 您在上一個步驟中建立的原則定義頁面,選取 [ 指派原則]。
在 [ 指派原則] 頁面上 >的 [基本 ] 索引標籤上,指定下列值:
欄位 動作 Scope 此欄位會預先填入您在建立原則定義期間定義的範圍。 如果您想要變更原則指派的範圍,您可以使用省略號 ( ...
),然後選取訂用帳戶,並選擇性地選取資源群組。 然後選取 [ 選取 ] 以套用範圍。排除 選擇性。 使用省略號 ( ...
) 來選取要從原則指派中排除的資源。原則定義 此欄位會預先填入在建立原則定義步驟中 建立的原則定義 名稱。 指派名稱 此欄位會預先填入所選原則定義的名稱。 您可以視需要加以變更。 原則強制執行 預設為啟用。 如需詳細資訊,請參閱強制模式。 選取 [下一步] 以檢視 [參數] 索引卷標。如果您在 [基本] 索引標籤上選取的原則定義包含參數,它們會顯示在 [參數] 索引標籤上。
例如,修復 AMA 的原則會顯示 Include Arc connected machines 參數。 選取 [True ] 以在原則指派中包含Arc連接的機器。
選取 [下一步 ] 以檢視 [補救] 索引卷標。此索引卷標上不需要採取任何動作。原則定義範本支援 deployIfNotExists 效果,因此會自動補救不符合原則規則的資源。 此外,請注意, 預設會選取 [建立受控識別 ] 參數,因為原則定義範本會使用 deployIfNotExists 效果。
選取 [ 檢閱 + 建立 ] 以檢閱指派。
選取 [建立] 以建立指派。
您會收到角色指派和原則指派建立成功的通知。 建立指派之後,Azure 原則 引擎會識別位於範圍內的所有 Azure Stack HCI 叢集,並將原則設定套用至每個叢集。 一般而言,原則指派生效需要 5 到 15 分鐘的時間。
檢視合規性狀態
建立原則指派之後,您可以在 Azure 原則 首頁的 [補救] 底下,監視 [合規性] 和 [補救狀態] 下的資源合規性。 新原則指派的合規性狀態需要幾分鐘的時間才會生效,而且其會提供原則狀態的相關結果。
若要檢視原則的合規性狀態,請遵循下列步驟:
在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。
選取 [合規性]。
篩選您在建立原則指派步驟中 建立的原則指派 名稱結果。 [合規性狀態] 數據行會將合規性狀態顯示為 [符合規範] 或 [不符合規範]。
選取原則指派名稱以檢視 資源合規性 狀態。 例如,修復 AMA 原則的合規性報告會顯示需要修復的叢集節點:
一旦您知道哪些資源不符合規範,您可以建立補救工作,使其符合規範。
補救不符合規範的資源
若要補救不符合規範的資源並追蹤補救工作進度,請遵循下列步驟:
在 Azure 入口網站中,瀏覽至 [Azure 原則] 服務。
選取 [補救]。
[ 補救] 頁面會顯示已指派的原則清單,這些原則具有不符合規範的資源。 篩選您在建立原則指派步驟中 建立的原則指派 名稱結果。
選取 [原則 定義 ] 連結。
[ 新增補救工作 ] 頁面會顯示需要補救的資源。 選取 [ 補救之前 重新評估資源合規性] 複選框,然後選取 [ 補救]。
您會收到一則通知,指出已建立補救工作,而且系統會將您導向至 [ 補救工作 ] 索引標籤。此索引標籤會顯示不同補救工作的狀態。 您建立的可能處於 評估 或 進行 中狀態。
補救完成後,狀態會變更為 [完成]。
如需補救的詳細資訊,請參閱使用 Azure 原則 補救不相容的資源。