Criar DCRs (regras de coleta de dados) no Azure Monitor
Há vários métodos para criar uma DCR (regra de coleta de dados) no Azure Monitor. Em alguns casos, o Azure Monitor irá criar e gerenciar a DCR de acordo com as configurações definidas no portal do Azure. Talvez você nem perceba que está trabalhando com uma DCR em alguns desses casos. Para outros cenários, porém, talvez seja necessário criar suas próprias DCRs ou editar as existentes trabalhando diretamente com sua definição no JSON. Este artigo descreve os diferentes métodos para criar uma DCR e recomendações sobre como editá-las e solucioná-las.
Observação
Este artigo descreve como criar e editar a DCR. Para criar e editar associações de regras de coleta de dados, consulte Criar e gerenciar associações de regra de coleta de dados.
Permissões
Você precisa das seguintes permissões para criar DCRs e associações de DCR:
Função interna | Escopos | Motivo |
---|---|---|
Colaborador de monitoramento |
|
Crie ou edite DCRs, atribua regras ao computador, implante associações. |
Colaborador de Máquina Virtual Administrador de recursos de Azure Connected Machine |
|
Implante extensões de agente na VM (máquina virtual). |
Qualquer função que inclua a ação Microsoft.Resources/deployments/* |
|
Implantar modelos do Azure Resource Manager. |
Importante
Crie sua DCR na mesma região que o workspace do Log Analytics de destino ou o workspace do Azure Monitor. Você pode associar a DCR a computadores ou contêineres de qualquer assinatura ou grupo de recursos no locatário. Para enviar dados entre locatários, primeiro você deve habilitar o Azure Lighthouse.
Criar ou editar uma DCR usando o portal do Azure
O portal do Azure fornece uma experiência simplificada para criar uma DCR para cenários específicos. Usando esse método, você não precisa entender a estrutura de uma DCR, embora possa estar limitado na configuração que pode executar e talvez precise editar posteriormente a definição de DCR para implementar um recurso avançado, como uma transformação. A experiência variará para cada cenário, portanto, consulte a documentação do cenário específico com o qual está trabalhando, conforme descrito na tabela a seguir.
Cenário | Descrição |
---|---|
Habilitar insights da VM | Ao habilitar o VM Insights em uma VM, o agente do Azure Monitor será instalado e uma DCR será criada e associada à máquina virtual. Esse DCR coletará um conjunto predefinido de contadores de desempenho e não deverá ser modificado. Consulte Habilitar o VM Insights. |
Coletar dados do cliente da VM | Crie uma DCR no portal do Azure usando uma interface guiada para selecionar diferentes fontes de dados do sistema operacional cliente de uma VM. Exemplos incluem eventos do Windows, eventos do Syslog e logs de texto. O agente do Azure Monitor é instalado automaticamente, se necessário, e uma associação é criada entre a DCR e cada VM selecionada. Confira Coletar dados com o agente do Azure Monitor. |
Exportação de métricas | Crie uma DCR no portal do Azure usando uma interface guiada para selecionar métricas de diferentes tipos de recursos a serem coletados. Uma associação é criada entre a DCR e cada recurso selecionado. Consulte Criar uma DCR (regra de coleta de dados) para exportação de métricas. |
Criação de tabelas | Ao criar uma nova tabela em um workspace do Log Analytics usando o portal do Azure, você carrega dados de amostra que o Azure Monitor usa para criar uma DCR, incluindo uma transformação, que pode ser usada com a API de Ingestão de Logs. Você não poderá modificar essa DCR no portal do Azure, mas pode modificá-la usando qualquer um dos métodos descritos neste artigo. Consulte Criar uma tabela personalizada. |
Monitoramento do Kubernetes | Para monitorar um cluster do Kubernetes, habilite os Insights de Contêiner para logs e o Prometheus para métricas. Uma DCR para cada um deles é criada e associada à versão em contêiner do agente do Azure Monitor no cluster. Talvez seja necessário modificar a DCR de Insights de Contêiner para adicionar uma transformação. Consulte Habilitar o monitoramento para clusters do Kubernetes e Transformações de dados nos Insights de Contêiner. |
DCR de transformação do workspace | As DCRs de transformação do workspace fornecem transformações para cenários de coleta de dados que ainda não usam DCRs. Você pode criar essa DCR usando o portal do Azure para criar uma transformação para uma tabela específica. Consulte Criar DCR de transformação do workspace. |
Definição de DCR
Independentemente de como é criada, cada DCR tem uma definição que segue um esquema JSON padrão. Para criar ou editar uma DCR usando um método diferente do portal do Azure, você precisa trabalhar diretamente com sua definição JSON. Para alguns cenários, você deve trabalhar com a definição JSON porque o portal do Azure não fornece uma maneira de configurar a DCR conforme necessário.
Você pode exibir o JSON de uma DCR no portal do Azure clicando modo de exibição JSON no menu Visão Geral.
Verifique se a versão mais recente da API está selecionada no menu suspenso Versão da API. Caso contrário, alguns dos JSON podem não ser exibidos.
Você também pode recuperar o JSON para a DCR chamando a API REST da DCR. Por exemplo, o script do PowerShell a seguir recupera o JSON para uma DCR e a salva em um arquivo.
$ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
$FilePath = "<FilePath>" # File to store DCR content
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File -FilePath $FilePath
Observação
Você pode obter os detalhes de uma DCR usando o cmdlet Get-AzDataCollectionRule
no PowerShell ou o comando az monitor data-collection rule show
na CLI do Azure, mas eles não fornecem o JSON no formato necessário para edição. Em vez disso, use o PowerShell ou a CLI para chamar a API REST, conforme mostrado no exemplo.
Criar ou editar uma DCR usando JSON
Além de editar uma DCR existente, você pode criar uma nova usando uma das DCRs de amostra que fornecem o JSON para vários cenários comuns. Use as informações em Estrutura de uma regra de coleta de dados no Azure Monitor para modificar o arquivo JSON para seu ambiente e requisitos específicos.
Depois de ter a definição da DCR, você poderá implantá-la no Azure Monitor usando o portal do Azure, a CLI, o PowerShell, a API ou os modelos do ARM.
Criar ou editar DCR com a CLI
Use o comando az monitor data-collection rule create para criar um DCR do arquivo JSON. Você pode usar esse mesmo comando para atualizar uma DCR existente.
az monitor data-collection rule create --location 'eastus' --resource-group 'my-resource-group' --name 'my-dcr' --rule-file 'C:\MyNewDCR.json' --description 'This is my new DCR'
Observação
Embora você possa optar por usar os comandos do PowerShell ou da CLI para criar e editar uma DCR, os métodos API e ARM fornecerão mensagens de erro mais detalhadas se houver erros de compilação.
No exemplo a seguir, a DCR especifica um nome de tabela que não existe no workspace do Log Analytics de destino. O comando do PowerShell retorna uma mensagem de erro genérica, mas a chamada à API retornará uma mensagem de erro detalhada que especifica o erro exato.
Estratégias para editar e testar uma DCR
Ao criar ou editar uma DCR usando sua definição JSON, você precisará fazer várias atualizações para obter a funcionalidade desejada. Você precisa de um método eficiente para atualizar a DCR, solucionar problemas se não obtiver os resultados esperados e, em seguida, fazer atualizações adicionais. Isso é especialmente verdadeiro se você estiver adicionando uma transformação à DCR, pois precisará validar se a consulta está funcionando conforme o esperado. Como você não pode editar o JSON diretamente no portal do Azure, a seguir estão algumas estratégias que você pode usar.
Usar o arquivo local como origem da DCR
Se você usar um arquivo JSON local como a origem das DCRs criadas e editadas, terá certeza de que sempre terá acesso à versão mais recente da definição da DCR. Isso é ideal se você quiser usar ferramentas de controle de versão, como o GitHub ou o Azure DevOps, para gerenciar suas alterações. Você também pode usar um editor, como o VS Code, para fazer alterações na DCR e, em seguida, usar ferramentas de linha de comando para atualizar a DCR no Azure Monitor, conforme descrito acima.
Veja a seguir uma amostra de script do PowerShell que você pode usar para enviar alterações por push a uma DCR de um arquivo de origem. Isso valida que o arquivo de origem é JSON válido antes de enviá-lo para o Azure Monitor.
param (
[Parameter(Mandatory = $true)][string]$ResourceId, # Resource ID of the DCR
[Parameter(Mandatory = $true)][string]$FilePath # Path to the DCR JSON file to upload
)
# Read the DCR content from the file
Write-Host "Reading new DCR content from: $FilePath" -ForegroundColor Green
$DCRContent = Get-Content $FilePath -Raw
# Ensure the DCR content is valid JSON
try {
$ParsedDCRContent = $DCRContent | ConvertFrom-Json
} catch {
Write-Host "Invalid JSON content in file: $FilePath" -ForegroundColor Red
exit 1
}
# Create or update the DCR in the specified resource group
Write-Host "Deploying DCR $ResourceId ..." -ForegroundColor Green
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
Salvar o conteúdo da DCR em um arquivo temporário
Se você não tiver a definição de DCR em um arquivo local, poderá recuperar a definição do Azure Monitor e salvá-la em um arquivo temporário. Em seguida, você pode editar o arquivo usando um editor, como o VS Code, antes de enviar as atualizações por push para o Azure Monitor.
Veja a seguir uma amostra de script do PowerShell que você pode usar para editar uma DCR existente no Azure Monitor. O script recuperará a definição de DCR e a salvará em um arquivo temporário antes de iniciar o VS Code. Depois de indicar ao script que você salvou suas alterações, a DCR será atualizada com o novo conteúdo e o arquivo temporário será excluído.
param ([Parameter(Mandatory=$true)] $ResourceId)
# Get DCR content and save it to a local file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath
# Open DCR in code editor
code $FilePath | Wait-Process
{
#write DCR content back from the file
$DCRContent = Get-Content $FilePath -Raw
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
}
#Delete temporary file
Remove-Item $FilePath
Usar o modelo do ARM para editar uma DCR no local
Se você quiser executar suas edições completamente no portal do Azure, poderá usar o recurso Exportar modelo para recuperar o modelo do ARM para uma DCR. Em seguida, você pode modificar a definição no JSON e reimplantá-la no portal do Azure.
Selecione a DCR que você deseja modificar no portal do Azure e selecione Exportar modelo. Clique em Implantar para reimplantar o mesmo modelo.
Clique em Editar modelo para abrir uma versão editável do JSON para a DCR. Não altere os valores de parâmetro.
Faça as alterações necessárias na DCR e clique em Salvar.
Se você quiser criar uma nova DCR, altere o parâmetro de nome. Caso contrário, deixe os parâmetros inalterados. Clique em Examinar + criar para implantar o modelo modificado e Criar para criar a nova DCR.
Se a DCR for válido sem erros, a implantação terá sucesso e a DCR será atualizada com a nova configuração. Clique em Ir para recurso para abrir a DCR modificada.
Se a DCR tiver erros de compilação, você receberá uma mensagem informando que a implantação falhou. Clique em Detalhes do erro e Detalhes da operação para exibir detalhes do erro. Clique em Reimplantar e, em seguida, Editar modelo novamente para fazer as alterações necessárias na DCR e, em seguida, salvá-la e implantá-la novamente.
Verificar e solucionar problemas de coleta de dados
Depois de instalar a DCR, pode levar vários minutos para que as alterações entrem em vigor e os dados sejam coletados com a DCR atualizada. Se você não vir nenhum dado sendo coletado, pode ser difícil determinar a causa raiz do problema. Use os recursos de monitoramento de DCR, que incluem métricas e logs para ajudar a solucionar problemas.
As métricas de DCR são coletadas automaticamente para todas as DCRs e você pode analisá-las usando o gerenciador de métricas, como as métricas de plataforma para outros recursos do Azure. Habilite logs de erro de DCR para obter informações detalhadas de erro quando o processamento de dados não for bem-sucedido.
Se você não vir dados sendo coletados, siga estas etapas básicas para solucionar o problema.
- Verifique as métricas como
Logs Ingestion Bytes per Min
eLogs Rows Received per Min
para se certificar de que os dados estão chegando ao Azure Monitor. Caso contrário, verifique a origem dos dados para se certificar de que esteja enviando dados conforme o esperado. - Verifique
Logs Rows Dropped per Min
para ver se alguma linha está sendo descartada. Isso talvez não indique um erro, já que uma transformação pode descartar linhas. No entanto, se as linhas descartadas forem as mesmasLogs Rows Dropped per Min
, nenhum dado será ingerido no workspace. Examine osLogs Transformation Errors per Min
para ver se há erros de transformação. - Verifique
Logs Transformation Errors per Min
para ver se há erros de transformações sendo aplicadas aos dados de entrada. Isso pode se dever a alterações na estrutura de dados ou na própria transformação. - Verifique a tabela
DCRLogErrors
para erros de ingestão que possam ter sido registrados. Isso poderá lhe fornecer detalhes adicionais para a identificação da causa raiz do problema.