启用调试日志记录
若要排查部署错误,可以启用调试日志记录以获取详细信息。 调试日志记录适用于使用 Bicep 文件或 Azure 资源管理器模板(ARM 模板)进行部署。 可以获取有关部署请求和响应的数据,以了解问题的原因。
警告
调试日志记录可能会公开密码等机密或 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
属性包含故障排除信息,请注意以下部署方案:
- 未使用部署命令启用
DeploymentDebugLogLevel
时,request
和response
属性包含主模板和嵌套模板的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
。
有关部署历史记录的详细信息,请参阅部署范围的文档:订阅、管理组和租户。