Share via


啟用偵錯記錄

若要對部署錯誤進行疑難排解,您可以啟用偵錯記錄以取得詳細資訊。 偵錯記錄適用於使用 Bicep 檔案或 Azure Resource Manager 範本 (ARM 範本) 的部署。 您可以取得部署要求和回應的資料,了解問題發生的原因。

警告

偵錯記錄可能會公開密碼或 listKeys 作業等祕密。 只有在您需要針對部署錯誤進行疑難排解時,才啟用偵錯記錄。 完成偵錯時,您應該移除偵錯部署歷程記錄

設定偵錯記錄

使用 Azure PowerShell 啟用偵錯記錄,以部署資訊填入 requestresponse 屬性來進行疑難排解。 無法使用 Azure CLI 啟用偵錯記錄。

偵錯記錄只會針對主要 ARM 範本或 Bicep 檔案啟用。 如果您使用巢狀 ARM 範本或 Bicep 模組,請參閱偵錯巢狀範本

針對資源群組部署,請使用 New-AzResourceGroupDeployment 並將 DeploymentDebugLogLevel 參數設定為 AllResponseContentRequestContent

啟用偵錯記錄時會顯示警告,指出在您使用 Get-AzResourceGroupDeploymentOperation 等命令取得部署作業的相關資訊時,可能會記錄並顯示密碼或 listKeys 作業等祕密。

New-AzResourceGroupDeployment `
  -Name exampledeployment `
  -ResourceGroupName examplegroup `
  -TemplateFile main.bicep `
  -DeploymentDebugLogLevel All

部署的輸出會顯示偵錯記錄層級。

DeploymentDebugLogLevel : RequestContent, ResponseContent

參數 DeploymentDebugLogLevel 適用於其他部署範圍:訂用帳戶、管理群組和租用戶。

取得偵錯資訊

啟用偵錯記錄之後,您可以取得部署作業的詳細資訊。 部署作業的 Azure PowerShell Cmdlet 不會輸出 requestresponse 屬性。 您必須使用 Azure CLI 從這些屬性取得資訊。

如果您未從部署命令啟用偵錯記錄,仍然可以取得部署作業資訊。 使用 Azure PowerShell 或 Azure CLI 來取得狀態碼、狀態訊息和佈建狀態。

針對資源群組部署,請使用 Get-AzResourceGroupDeploymentOperation 來取得部署作業。

Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup

您可以指定 StatusCodeStatusMessageProvisioningState 等屬性來篩選輸出。

(Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup).StatusCode

如需詳細資訊,請參閱部署作業範圍的文件:訂用帳戶、管理群組和租用戶。

巢狀範本偵錯

主要 ARM 範本和巢狀範本有自己的部署名稱和部署歷程記錄。 主要 Bicep 檔案和模組也使用不同的部署名稱和部署歷程記錄。

ARM 範本

若要記錄巢狀 ARM 範本的偵錯工具資訊,請使用 Microsoft.Resources/deployments 搭配 debugSetting 屬性。

下列範例顯示有 debugSetting 的巢狀範本,以記錄部署的要求和回應。

"resources": [
  {
    "type": "Microsoft.Resources/deployments",
    "apiVersion": "2021-04-01",
    "name": "nestedTemplateDebug",
    "properties": {
      "mode": "Incremental",
      "template": {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
          {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2022-05-01",
            "name": "[variables('storageAccountName')]",
            "location": "[parameters('location')]",
            "sku": {
              "name": "[parameters('storageAccountType')]"
            },
            "kind": "StorageV2"
          }
        ]
      },
      "debugSetting": {
        "detailLevel": "requestContent, responseContent"
      }
    }
  }
],

主要 ARM 範本和巢狀範本有自己的部署名稱和部署歷程記錄。 如果您想要 requestresponse 屬性包含疑難排解資訊,請注意下列部署案例:

  • 未使用部署命令啟用 DeploymentDebugLogLevel 時,requestresponse 屬性會包含主要範本和巢狀範本的 null 值。
  • 若部署命令啟用 DeploymentDebugLogLevelrequestresponse 屬性只會包含主要範本的資訊。 巢狀範本的屬性包含 null 值。
  • 若巢狀範本使用 debugSetting,且部署命令不包含 DeploymentDebugLogLevel 時,只有巢狀範本部署會有 requestresponse 屬性的值。 主要範本的屬性包含 null 值。
  • 若要取得主要範本與巢狀範本的 requestresponse,請在部署命令中指定 DeploymentDebugLogLevel,並在巢狀範本中使用 debugSetting

Bicep 檔案

對於 Bicep 檔案建議使用模組,而不要搭配使用巢狀範本和 Microsoft.Resources/deployments。 狀態訊息、狀態碼和佈建狀態會包含主要 Bicep 檔案和模組的資訊,您可以用來對部署進行疑難排解。

如果您從部署命令啟用 DeploymentDebugLogLevelrequestresponse 屬性只會包含部署主要 Bicep 檔案用的資訊。

移除偵錯部署歷程記錄

完成偵錯後,您應該移除部署歷程記錄,以防止任何具有存取權的人員看到可能記錄下來的敏感性資訊。 針對偵錯時所使用的每個部署名稱,執行命令以移除部署歷程記錄。

若要移除資源群組部署的部署歷程記錄,請使用 Remove-AzResourceGroupDeployment

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

命令成功時會傳回 True

如需部署歷程記錄的詳細資訊,請參閱部署範圍的文件:訂用帳戶、管理群組和租用戶。

下一步