Partilhar via


Ativar o registo de depuração

Para solucionar um erro de implantação, você pode habilitar o log de depuração para obter mais informações. O log de depuração funciona para implantações com arquivos Bicep ou modelos do Azure Resource Manager (modelos ARM). Você pode obter dados sobre o pedido e a resposta de uma implementação para identificar a causa de um problema.

Advertência

O log de depuração pode expor segredos como senhas ou listKeys operações. Habilite o log de depuração somente quando precisar solucionar um erro de implantação. Quando terminar a depuração, remova o histórico de implementação da depuração.

Configurar o log de depuração

Use o Azure PowerShell para habilitar o registo de depuração que preenche as propriedades request e response com informações de implantação para a resolução de problemas. O log de depuração não pode ser habilitado usando a CLI do Azure.

O log de depuração só está habilitado para o modelo ARM principal ou o arquivo Bicep. Se você estiver usando modelos ARM aninhados ou módulos Bicep, consulte Depurar modelo aninhado.

Para uma implantação de grupo de recursos, use New-AzResourceGroupDeployment e defina o DeploymentDebugLogLevel parâmetro como All, ResponseContentou RequestContent.

Quando o registo de depuração está ativado, é exibido um aviso de que segredos como senhas ou operações secretas como listKeys podem ser registrados e exibidos quando usar comandos como Get-AzResourceGroupDeploymentOperation para obter informações sobre operações de implantação.

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

A saída da implantação mostra o nível de log de depuração.

DeploymentDebugLogLevel : RequestContent, ResponseContent

O DeploymentDebugLogLevel parâmetro está disponível para outros escopos de implantação: assinatura, grupo de gerenciamento e locatário.

Obter informações de depuração

Depois que o log de depuração estiver habilitado, você poderá obter mais informações sobre as operações de implantação. Os cmdlets do Azure PowerShell para operações de implantação não produzem as propriedades request e response. Você precisa usar a CLI do Azure para obter as informações dessas propriedades.

Se você não habilitar o log de depuração a partir do comando de implantação, ainda poderá obter informações sobre operações de implantação. Use o Azure PowerShell ou a CLI do Azure para obter o código de status, a mensagem de status e o estado de provisionamento.

Para uma implantação de grupo de recursos, use Get-AzResourceGroupDeploymentOperation para obter as operações de implantação.

Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup

Você pode especificar uma propriedade, como StatusCode, StatusMessageou ProvisioningState filtrar a saída.

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

Para obter mais informações, consulte a documentação para escopos de operação de implantação: assinatura, grupo de gerenciamento e locatário.

Depurar modelo aninhado

O modelo ARM principal e os modelos aninhados têm seu próprio nome de implantação e histórico de implantação. O arquivo principal e o módulo Bicep também usam um nome de implementação separado e um histórico de implementação independente.

Modelo ARM

Para registar informações de depuração num modelo ARM aninhado, use Microsoft.Resources/deployments com a propriedade debugSetting.

O exemplo a seguir mostra um modelo aninhado com o debugSetting para registrar a solicitação e a resposta da implantação.

"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"
      }
    }
  }
],

O modelo ARM principal e os modelos aninhados têm seu próprio nome de implantação e histórico de implantação. Se desejar que as request propriedades e response contenham informações de solução de problemas, esteja ciente dos seguintes cenários de implantação:

  • As propriedades request e response contêm valores null para o modelo principal e o modelo aninhado quando DeploymentDebugLogLevel não está ativado com o comando de implementação.
  • Quando o comando de implementação ativa DeploymentDebugLogLevel, as propriedades request e response contêm informações apenas para o modelo principal. As propriedades do modelo aninhado contêm null valores.
  • Quando um modelo aninhado usa o debugSetting e o comando de implementação não inclui DeploymentDebugLogLevel, apenas a implementação do modelo aninhado tem valores para as propriedades request e response. As propriedades do modelo principal contêm valores null.
  • Para obter o request e response para o modelo principal e o modelo aninhado, especifique DeploymentDebugLogLevel no comando deployment e use debugSetting no modelo aninhado.

Arquivo Bicep

A recomendação para arquivos Bicep é usar módulos em vez de modelos aninhados com Microsoft.Resources/deployments. A mensagem de status, o código de status e o estado de provisionamento incluirão informações para o arquivo e módulo Bicep principal que você pode usar para solucionar problemas de implantação.

Se ativares DeploymentDebugLogLevel do comando de implementação, request e response propriedades conterão informações somente para a implantação do ficheiro Bicep principal.

Remover histórico de implantação de depuração

Quando terminar a depuração, remova o histórico de implantação para impedir que qualquer pessoa que tenha acesso veja informações confidenciais que possam ter sido registradas. Para cada nome de implantação usado durante a depuração, execute o comando para remover o histórico de implantação.

Para remover o histórico de implantação de uma implantação de grupo de recursos, use Remove-AzResourceGroupDeployment.

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

O comando retorna True quando é bem-sucedido.

Para obter mais informações sobre o histórico de implantação, consulte a documentação dos escopos de implantação: assinatura, grupo de gerenciamento e locatário.

Próximos passos