디버그 로깅 활성화
배포 오류 문제를 해결하려면 디버그 로깅을 사용하도록 설정하여 자세한 정보를 가져올 수 있습니다. 디버그 로깅은 Bicep 파일 또는 Azure Resource Manager 템플릿(ARM 템플릿)을 사용한 배포에 대해 작동합니다. 배포 요청 및 응답에 관한 데이터를 가져와서 문제의 원인을 알아볼 수 있습니다.
Warning
디버그 로깅은 암호 또는 listKeys
작업과 같은 비밀을 노출할 수 있습니다. 배포 오류를 해결해야 하는 경우에만 디버그 로깅을 사용합니다. 디버깅이 완료되면 디버그 배포 기록을 제거해야 합니다.
디버그 로깅 설정
Azure PowerShell을 사용하여 문제 해결을 위한 배포 정보로 request
및 response
속성을 채우는 디버그 로깅을 사용하도록 설정합니다. Azure CLI를 사용하여 디버그 로깅을 사용하도록 설정할 수 없습니다.
디버그 로깅은 기본 ARM 템플릿 또는 Bicep 파일에 대해서만 사용하도록 설정됩니다. 중첩된 ARM 템플릿 또는 Bicep 모듈을 사용하는 경우 중첩된 템플릿 디버그를 참조하세요.
리소스 그룹 배포의 경우 New-AzResourceGroupDeployment를 사용하고 DeploymentDebugLogLevel
매개 변수를 All
, ResponseContent
또는 RequestContent
로 설정합니다.
디버그 로깅이 사용하도록 설정되면 Get-AzResourceGroupDeploymentOperation
과 같은 명령을 사용하여 배포 작업에 대한 정보를 가져올 때 암호 또는 listKeys
작업과 같은 비밀이 기록되고 표시될 수 있다는 경고가 표시됩니다.
New-AzResourceGroupDeployment `
-Name exampledeployment `
-ResourceGroupName examplegroup `
-TemplateFile main.bicep `
-DeploymentDebugLogLevel All
배포 출력에는 디버그 로깅 수준이 표시됩니다.
DeploymentDebugLogLevel : RequestContent, ResponseContent
DeploymentDebugLogLevel
매개 변수는 구독, 관리 그룹 및 테넌트와 같은 다른 배포 범위에 사용할 수 있습니다.
디버그 정보 가져오기
디버그 로깅이 사용하도록 설정되면 배포 작업에 대한 추가 정보를 얻을 수 있습니다. 배포 작업을 위한 Azure PowerShell cmdlet은 request
및 response
속성을 출력하지 않습니다. 해당 속성에서 정보를 얻으려면 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 템플릿에 대한 디버그 정보를 로그하려면 debugSetting
속성과 함께 Microsoft.Resources/deployments를 사용합니다.
다음 샘플은 배포 요청 및 응답을 로그하기 위해 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 템플릿 및 중첩된 템플릿에는 고유한 배포 이름 및 배포 기록이 있습니다. request
및 response
속성에 문제 해결 정보를 포함하려면 다음 배포 시나리오에 유의하세요.
request
및response
속성에는DeploymentDebugLogLevel
이 배포 명령으로 사용하도록 설정되지 않은 경우 기본 템플릿과 중첩된 템플릿에 대한null
값이 포함됩니다.- 배포 명령이
DeploymentDebugLogLevel
을 사용하도록 설정하면request
및response
속성에는 기본 템플릿에 대한 정보만 포함됩니다. 중첩된 템플릿 속성에는null
값이 포함됩니다. - 중첩된 템플릿이
debugSetting
을 사용하고 배포 명령에DeploymentDebugLogLevel
이 포함되지 않은 경우 중첩된 템플릿 배포에만request
및response
속성 값이 있습니다. 기본 템플릿 속성에는null
값이 포함됩니다. - 기본 템플릿과 중첩된 템플릿에 대해
request
및response
를 얻으려면 배포 명령에DeploymentDebugLogLevel
을 지정하고 중첩된 템플릿에debugSetting
을 사용합니다.
Bicep 파일
Bicep 파일에 대한 권장 사항은 Microsoft.Resources/deployments
와 함께 중첩된 템플릿 대신 모듈을 사용하는 것입니다. 상태 메시지, 상태 코드 및 프로비전 상태에는 배포 문제 해결에 사용할 수 있는 기본 Bicep 파일 및 모듈에 대한 정보가 포함됩니다.
배포 명령에서 DeploymentDebugLogLevel
을 사용하도록 설정하면 request
및 response
속성에는 기본 Bicep 파일 배포에 대한 정보만 포함됩니다.
디버그 배포 기록 제거
디버깅이 완료되면 배포 기록을 제거하여 액세스 권한이 있는 모든 사용자가 기록되었을 수 있는 중요한 정보를 보지 못하도록 해야 합니다. 디버깅하는 동안 사용한 각 배포 이름에 대해 명령을 실행하여 배포 기록을 제거합니다.
리소스 그룹 배포에 대한 배포 기록을 제거하려면 Remove-AzResourceGroupDeployment를 사용합니다.
Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment
명령이 성공하면 True
를 반환합니다.
배포 기록에 대한 자세한 내용은 배포 범위에 대한 설명서(구독, 관리 그룹 및 테넌트)를 참조하세요.