Criar configurações de diagnóstico em escala usando as Políticas e Iniciativas do Azure

Para monitorar os recursos do Azure, é necessário criar configurações de diagnóstico para cada recurso. Esse processo pode ser difícil de gerenciar quando você tem muitos recursos. Para simplificar o processo de criação e aplicação de configurações de diagnóstico em escala, use a Política do Azure para gerar automaticamente configurações de diagnóstico para recursos novos e existentes.

Cada tipo de recurso do Azure tem um conjunto exclusivo de categorias listadas nas configurações de diagnóstico. Cada tipo de recurso exige, portanto, uma definição de política separada. Alguns tipos de recursos têm definições de política internas que você pode atribuir sem modificação. Para outros tipos de recursos, você pode criar uma definição personalizada.

Grupos de categorias de log

Grupos de categorias de log, agrupe tipos semelhantes de logs. Os grupos de categorias facilitam a referência a vários logs em um único comando. Existe um grupo de categorias allLogs contendo todos os logs. Há também um grupo de categorias de auditoria que inclui todos os logs de auditoria . Usando para um grupo de categorias, você pode definir uma política que atualiza dinamicamente à medida que novas categorias de log são adicionadas ao grupo.

Definições de política internas para o Azure Monitor

Geralmente, há três definições de política internas para cada tipo de recurso, correspondentes aos três destinos para os quais enviar diagnósticos:

  • Áreas de trabalho do Log Analytics
  • Contas de Armazenamento do Azure
  • Hubs de eventos

Atribua as políticas para o tipo de recurso de acordo com os destinos necessários.

Um conjunto de políticas, políticas internas e iniciativas baseadas nos grupos de categorias do log de auditoria foram desenvolvidos para ajudá-lo a aplicar as configurações de diagnóstico com apenas algumas etapas. Para obter mais informações, consulte Habilitar configurações de diagnóstico por grupo de categorias usando políticas internas.

Para obter uma lista completa de políticas internas para o Azure Monitor, consulte Definições internas da Política do Azure para o Azure Monitor

Definições de política personalizadas

Para tipos de recursos que não têm uma política interna, você precisa criar uma definição de política personalizada. Você pode criar uma nova política manualmente no portal do Azure copiando uma política interna existente e modificando-a para seu tipo de recurso. Como alternativa, crie a política programaticamente usando um script na Galeria do PowerShell.

O script Create-AzDiagPolicy cria arquivos de política para um tipo de recurso específico que você pode instalar usando o PowerShell ou a CLI do Azure. Use o procedimento a seguir para criar uma definição de política personalizada para configurações de diagnóstico:

  1. Certifique-se de ter o Azure PowerShell instalado.

  2. Instale o script usando o seguinte comando:

    Install-Script -Name Create-AzDiagPolicy
    
  3. Execute o script usando os parâmetros para especificar para onde enviar os logs. Você será solicitado a especificar uma assinatura e um tipo de recurso.

    Por exemplo, para criar uma definição de política que envia logs para um espaço de trabalho do Log Analytics e um hub de eventos, use o seguinte comando:

    Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"  
    

    Como alternativa, você pode especificar uma assinatura e um tipo de recurso no comando. Por exemplo, para criar uma definição de política que envia logs para um espaço de trabalho do Log Analytics e um hub de eventos para bancos de dados do SQL Server, use o seguinte comando:

    Create-AzDiagPolicy.ps1 -SubscriptionID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -ResourceType Microsoft.Sql/servers/databases  -ExportLA -ExportEH -ExportDir ".\PolicyFiles"  
    
  4. O script cria pastas separadas para cada definição de política. Cada pasta contém três arquivos chamados azurepolicy.json, azurepolicy.rules.json e azurepolicy.parameters.json. Se quiser criar a política manualmente no portal do Azure, você pode copiar e colar o conteúdo de azurepolicy.json porque ele inclui toda a definição de política. Use os outros dois arquivos com o PowerShell ou a CLI do Azure para criar a definição de política a partir de uma linha de comando.

    Os exemplos a seguir mostram como instalar a definição de política do PowerShell e da CLI do Azure. Cada exemplo inclui metadados para especificar uma categoria de Monitoramento para agrupar a nova definição de política com as definições de política internas.

    New-AzPolicyDefinition -name "Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace" -policy .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json -parameter .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json -mode All -Metadata '{"category":"Monitoring"}'
    
    az policy definition create --name 'deploy-diag-setting-sql-database--workspace' --display-name 'Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace'  --rules 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json' --params 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json' --subscription 'AzureMonitor_Docs' --mode All
    

Iniciativa

Em vez de criar uma atribuição para cada definição de política, uma estratégia comum é criar uma iniciativa que inclua as definições de política para criar configurações de diagnóstico para cada serviço do Azure. Crie uma atribuição entre a iniciativa e um grupo de gerenciamento, assinatura ou grupo de recursos, dependendo de como você gerencia seu ambiente. Esta estratégia oferece os seguintes benefícios:

  • Crie uma única atribuição para a iniciativa em vez de várias atribuições para cada tipo de recurso. Use a mesma iniciativa para vários grupos de monitoramento, assinaturas ou grupos de recursos.
  • Modifique a iniciativa quando precisar adicionar um novo tipo de recurso ou destino. Por exemplo, seus requisitos iniciais podem ser enviar dados apenas para um espaço de trabalho do Log Analytics, mas depois você deseja adicionar um hub de eventos. Modifique a iniciativa em vez de criar novas atribuições.

Para obter detalhes sobre como criar uma iniciativa, consulte Criar e atribuir uma definição de iniciativa. Considere as seguintes recomendações:

  • Defina Categoria como Monitoramento para agrupá-la com definições de política internas e personalizadas relacionadas.
  • Em vez de especificar os detalhes do espaço de trabalho do Log Analytics e do hub de eventos para definições de política incluídas na iniciativa, use um parâmetro de iniciativa comum. Esse parâmetro permite especificar facilmente um valor comum para todas as definições de política e alterar esse valor, se necessário.

Screenshot that shows settings for initiative definition.

Atribuição

Atribua a iniciativa a um grupo de gerenciamento, assinatura ou grupo de recursos do Azure, dependendo do escopo de seus recursos a serem monitorados. Um grupo de gerenciamento é útil para definir o escopo, especialmente se sua organização tiver várias assinaturas.

Screenshot of the settings for the Basics tab in the Assign initiative section of the Diagnostic settings to Log Analytics workspace in the Azure portal.

Usando parâmetros de iniciativa, você pode especificar o espaço de trabalho ou quaisquer outros detalhes uma vez para todas as definições de política na iniciativa.

Screenshot that shows initiative parameters on the Parameters tab.

Remediação

A iniciativa será aplicada a cada máquina virtual à medida que for criada. Uma tarefa de correção implanta as definições de política na iniciativa em recursos existentes, para que você possa criar configurações de diagnóstico para quaisquer recursos que já foram criados.

Ao criar a atribuição usando o portal do Azure, você tem a opção de criar uma tarefa de correção ao mesmo tempo. Consulte Corrigir recursos não compatíveis com a Política do Azure para obter detalhes sobre a correção.

Screenshot that shows initiative remediation for a Log Analytics workspace.

Resolução de problemas

A categoria de métrica não é suportada

Ao implantar uma configuração de diagnóstico, você recebe uma mensagem de erro, semelhante à categoria de métrica 'xxxx' não é suportada. Você pode receber esse erro mesmo que sua implantação anterior tenha sido bem-sucedida.

O problema ocorre ao usar um modelo do Gerenciador de Recursos, API REST, CLI do Azure ou Azure PowerShell. As configurações de diagnóstico criadas por meio do portal do Azure não são afetadas, pois apenas os nomes de categoria com suporte são apresentados.

O problema é causado por uma alteração recente na API subjacente. Categorias de métricas diferentes de 'AllMetrics' não são suportadas e nunca foram, exceto para alguns serviços específicos do Azure. No passado, outros nomes de categoria eram ignorados ao implantar uma configuração de diagnóstico. O back-end do Azure Monitor redirecionou essas categorias para 'AllMetrics'. Em fevereiro de 2021, o back-end foi atualizado para confirmar especificamente que a categoria de métrica fornecida é precisa. Essa alteração fez com que algumas implantações falhassem.

Se você receber esse erro, atualize suas implantações para substituir qualquer nome de categoria métrica por 'AllMetrics' para corrigir o problema. Se a implantação estava adicionando várias categorias anteriormente, apenas uma com a referência 'AllMetrics' deve ser mantida. Se continuar a ter o problema, contacte o suporte do Azure através do portal do Azure.

A configuração desaparece devido a caracteres não-ASCII no resourceID

As configurações de diagnóstico não suportam resourceIDs com caracteres não-ASCII (por exemplo, Preproducción). Como você não pode renomear recursos no Azure, sua única opção é criar um novo recurso sem os caracteres não-ASCII. Se os caracteres estiverem em um grupo de recursos, você poderá mover os recursos sob ele para um novo. Caso contrário, você precisará recriar o recurso.

Próximos passos