Monitorar e solucionar problemas de coleta de dados com DCR no Azure Monitor

Este artigo fornece métricas e logs detalhados que você pode usar para monitorar o desempenho e solucionar problemas relacionados à coleta de dados no Azure Monitor. Atualmente, essa telemetria está disponível para cenários de coleta de dados definidos por Regras de coleta de dados (DCR), como o agente do Azure Monitor e a API de ingestão de logs.

Importante

Este artigo se refere apenas a cenários de coleta de dados que usam DCRs, incluindo os seguintes:

Confira a documentação de outros cenários para obter quaisquer informações de monitoramento e solução de problemas que possam estar disponíveis.

Os recursos de diagnóstico de DCR incluem métricas e logs de erros emitidos durante o processamento de logs. As métricas de DCR fornecem informações sobre o volume dos dados que estão sendo ingeridos, o número e a natureza de quaisquer erros de processamento e estatísticas relacionadas à transformação de dados. Logs de erros de DCR são gerados sempre que o processamento de dados não é bem-sucedido e os dados não chegam ao seu destino.

Logs de erros do DCR

Logs de erros são gerados quando os dados chegam ao pipeline de ingestão do Azure Monitor, mas não ao seu destino. Exemplos de condições de erro incluem:

  • Erros de entrega de logs
  • Erros de transformação em que a estrutura dos logs torna a transformação KQL inválida
  • Chamadas à API de Ingestão de Logs:
    • com qualquer resposta HTTP diferente de 200/202
    • com conteúdo contendo dados malformados
    • com um conteúdo que ultrapasse qualquer limites de ingestão
    • limitação devido às chamadas à API excedentes além do limite

Para evitar um registro em log excessivo de erros persistentes relacionados ao mesmo fluxo de dados, alguns erros serão registrados apenas um número limitado de vezes a cada hora, seguidos de uma mensagem de erro resumida. Em seguida, o erro fica mudo até a hora terminar. O número de vezes que um determinado erro é registrado pode variar dependendo da região em que a DCR estiver implantada.

Alguns erros de ingestão de log não serão registrados porque não podem ser associados a uma DCR. Os seguintes erros talvez não sejam registrados:

  • Falhas causadas por um URI de chamada malformado (código 404 da resposta HTTP)
  • Certos erros internos do servidor (código 500 da resposta HTTP)

Habilitar logs de erros de DCR

Os logs de erros de DCR são implementados no Azure Monitor como logs de recurso. Habilite a coleta de logs criando uma configuração de diagnóstico para a DCR. Cada DCR irá requerer sua própria configuração de diagnóstico. Confira Criar configurações de diagnóstico no Azure Monitor para obter o processo detalhado. Selecione a categoria Erros de Log e Envie para o workspace do Log Analytics. Talvez você queira selecionar o mesmo workspace usado pela DCR ou talvez consolidar todos os logs de erros em um único workspace.

Recuperar logs de erros de DCR

Os logs de erros são gravados na tabela DCRLogErrors no workspace do Log Analytics que você especificou na configuração de diagnóstico. A seguir temos amostras de consultas que você pode usar no Log Analytics para recuperar esses logs.

Recuperar todos os logs de erros para uma DCR específica

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"

Recuperar todos os logs de erro para um fluxo de entrada específico em uma determinada DCR

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
| where InputStreamId == "Custom-MyTable_CL"

Métricas de DCR

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 métricas de plataforma para outros recursos do Azure. O fluxo de entrada é incluído como uma dimensão; portanto, se você tiver uma DCR com vários fluxos de entrada, poderá analisar cada um filtrando ou dividindo. Algumas métricas incluem outras dimensões, conforme mostrado na tabela abaixo.

Métrica Dimensões Descrição
Bytes de Ingestão de Logs por min Fluxo de Entrada Número total de bytes recebidos por minuto.
Solicitações de Ingestão de Logs por min Fluxo de entrada
Código de resposta HTTP
Número de chamadas recebidas por minuto
Linhas de Logs Descartadas por min Fluxo de entrada Número de linhas de logs descartadas durante o processamento por minuto. Inclui linhas descartadas tanto devido a critérios de filtragem na transformação KQL quanto a linhas descartadas devido a erros.
Linhas de Logs Recebidas por min Fluxo de entrada Número de linhas de logs recebidas para processamento por minuto.
Duração da Transformação de Logs por min Fluxo de entrada Runtime médio da transformação KQL por minuto. Representa a eficiência do código da transformação KQL. Fluxos de dados com runtimes de transformação mais longos podem enfrentar atrasos no processamento de dados e maior latência de dados.
Erros de Transformação de Logs por min Fluxo de entrada
Tipo de erro
Número de erros de processamento encontrados por minuto

Solução de problemas comuns

Se você não obtiver os dados esperados no seu workspace do Log Analytics, siga essas etapas básicas para solucionar o problema, pressupondo que você tenha habilitado o registro em log das DCRs, conforme descrito acima.

  • Verifique as métricas como Logs Ingestion Bytes per Min e Logs 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 mesmas Logs Rows Dropped per Min, nenhum dado será ingerido no workspace. Examine os Logs 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 DCRLogErrors para ver se há erros de ingestão que possam ter sido registrados. Isso poderá lhe fornecer detalhes adicionais para a identificação da causa raiz do problema.

Como monitorar sua ingestão de logs

Os sinais a seguir podem ser úteis para monitorar a integridade da sua coleta de logs com DCRs. Crie regras de alerta para identificar essas condições.

Sinal Possíveis causas e ações
Novas inserções nos DCRErrorLogs ou alterações repentinas em Log Transform Errors. — Problemas com a configuração da API de Ingestão de Logs, como a autenticação, o acesso a DCR ou DCE, problemas de conteúdo de chamadas.
— Alterações na estrutura de dados que causam falhas na transformação KQL.
— Alterações na configuração de destino de dados que causam falhas na entrega de dados.
Alteração repentina nos Logs Ingestion Bytes per Min — Alterações na configuração da ingestão de logs no cliente, incluindo configurações do AMA.
— Alterações na estrutura dos logs enviados.
Alteração repentina na proporção entre Logs Ingestion Bytes per Min e Logs Rows Received per Min — Alterações na estrutura dos logs enviados. Examine as alterações para se certificar de que os dados sejam processados corretamente com a transformação KQL.
Alteração repentina nos Logs Transformation Duration per Min — Alterações na estrutura de logs que afetam a eficiência dos critérios de filtragem de logs definidos na transformação KQL. Examine as alterações para se certificar de que os dados sejam processados corretamente com a transformação KQL.
Logs Ingestion Requests per Min ou Logs Ingestion Bytes per Min se aproximando dos limites de serviço da API de Ingestão de Logs. — Examine e otimize sua configuração de DCR para evitar limitação.

Alertas

Em vez de solucionar problemas de forma reativa, crie regras de alerta para receber uma notificação proativa quando ocorrer uma possível condição de erro. A tabela a seguir fornece exemplos de regras de alerta que você pode criar para monitorar sua ingestão de logs.

Condição Detalhes do Alerta
Alterações repentinas com relação a linhas descartadas Regra de alerta de métrica usando um limite dinâmico para Logs Rows Dropped per Min.
Número de chamadas à API se aproximando dos limites do serviço Regra de alerta de métrica usando um limite estático para Logs Ingestion Requests per Min. Defina um limite próximo de 12.000, que é o limite do serviço para o máximo de solicitações/minuto por DCR.
Logs de Erros Registrar alertas de consulta em logs usando DCRLogErrors. Use uma medida de Linhas de tabela e um Valor de limite de 1 para receber alertas sempre que algum erro for registrado.

Próximas etapas