다음을 통해 공유


디버그 로깅 활성화

배포 오류를 해결하려면 디버그 로깅을 사용하도록 설정하여 자세한 정보를 가져올 수 있습니다. 디버그 로깅은 Bicep 파일 또는 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 배포하는 데 작동합니다. 배포의 요청 및 응답에 대한 데이터를 가져와 문제의 원인을 알아볼 수 있습니다.

경고

디버그 로깅은 암호 또는 listKeys 작업과 같은 비밀을 노출할 수 있습니다. 배포 오류 문제를 해결해야 하는 경우에만 디버그 로깅을 사용하도록 설정합니다. 디버깅을 마치면 디버그 배포 기록을 제거해야 합니다.

디버그 로깅 설정

Azure PowerShell을 사용하여 문제 해결을 위한 배포 정보를 포함한 로그를 제공하도록 requestresponse 속성을 채우는 디버그 로깅을 활성화합니다. Azure CLI를 사용하여 디버그 로깅을 사용하도록 설정할 수 없습니다.

디버그 로깅은 기본 ARM 템플릿 또는 Bicep 파일에 대해서만 사용하도록 설정됩니다. 중첩된 ARM 템플릿 또는 Bicep 모듈을 사용하는 경우 중첩된 템플릿 디버그를 참조하세요.

리소스 그룹 배포를 위해서는 New-AzResourceGroupDeployment를 사용하고 DeploymentDebugLogLevel, All, ResponseContent 또는 RequestContent로 매개 변수를 설정하세요.

디버그 로깅을 사용하도록 설정하면 배포 작업에 대한 정보를 가져오는 것과 같은 명령을 사용할 때 암호 또는 listKeys 작업과 같은 Get-AzResourceGroupDeploymentOperation 비밀을 기록하고 표시할 수 있다는 경고가 표시됩니다.

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

속성, 예를 들어 StatusCode, StatusMessage, 또는 ProvisioningState을 지정하여 출력을 필터링할 수 있습니다.

(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 속성을 원하신다면, 다음 배포 시나리오에 주의하세요.

  • requestresponse 속성에는 null 값이 포함되어 있으며, DeploymentDebugLogLevel이 배포 명령으로 사용하도록 설정되지 않을 때 기본 템플릿과 중첩된 템플릿에 대해 사용됩니다.
  • 배포 명령이 활성화되면 DeploymentDebugLogLevelrequest 속성에는 기본 템플릿에 대한 정보만 포함됩니다. 중첩된 템플릿의 속성에는 값이 포함됩니다 null .
  • 중첩된 템플릿에서 debugSetting을 사용할 때 배포 명령이 DeploymentDebugLogLevel을 포함하지 않으면, 중첩된 템플릿 배포에는 requestresponse 속성에 대한 값만 있습니다. 기본 템플릿의 속성에는 값이 포함됩니다 null .
  • 기본 템플릿과 중첩된 템플릿에 대한 requestresponse를 가져오려면, 배포 명령에 DeploymentDebugLogLevel를 지정하고 중첩된 템플릿에서 debugSetting를 사용합니다.

Bicep 파일

Bicep 파일에 대한 권장 사항은 중첩된 템플릿 대신 모듈을Microsoft.Resources/deployments사용하는 것입니다. 상태 메시지, 상태 코드 및 프로비저닝 상태에는 배포 문제를 해결하는 데 사용할 수 있는 기본 Bicep 파일 및 모듈에 대한 정보가 포함됩니다.

배포 명령에 DeploymentDebugLogLevel을 사용하도록 설정하면, requestresponse 속성에는 기본 Bicep 파일의 배포에 대한 정보만 포함됩니다.

디버그 배포 기록 제거

디버깅이 완료되면 액세스 권한이 있는 모든 사용자가 기록되었을 수 있는 중요한 정보를 볼 수 없도록 배포 기록을 제거해야 합니다. 디버깅하는 동안 사용한 각 배포 이름에 대해 명령을 실행하여 배포 기록을 제거합니다.

리소스 그룹 배포에 대한 배포 기록을 제거하려면 Remove-AzResourceGroupDeployment를 사용합니다.

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

명령이 성공하면 반환 True 됩니다.

배포 기록에 대한 자세한 내용은 배포 범위에 대한 설명서(구독, 관리 그룹 및 테넌트)를 참조하세요.

다음 단계