No complexo cenário de aplicativos atual, os logs (registros) servem como uma valiosa fonte de informações para o monitoramento e a solução de problemas. Eles fornecem insights sobre o comportamento do seu sistema e permitem que você entenda o desempenho dos seus aplicativos. No entanto, o gerenciamento de logs pode se tornar rapidamente uma tarefa árdua sem as ferramentas e os processos certos. É aí que entra uma plataforma de gerenciamento de registros como a New Relic. 

A New Relic oferece recursos robustos de gerenciamento de registros que conectam seus dados de registros com o restante dos dados de aplicativos e infraestrutura. Esses recursos oferecem uma visão holística do seu sistema e reduzem o tempo médio de resolução (MTTR). No entanto, dada a natureza complexa dos sistemas que envolvem várias fontes de registro, configurações e ferramentas, garantir o encaminhamento preciso de registros para a New Relic pode ser um desafio.

Este blog fornecerá as cinco principais dicas para garantir que seus registros sejam encaminhados corretamente para a New Relic. Ao seguir essas dicas, você poderá:

  • Confirme o seu acesso de rede aos domínios da New Relic
  • Verifique se você selecionou um encaminhador de registros compatível
  • Enviar registros de resolução de problemas do encaminhador de registros para depuração adicional
  • Acesse os arquivos e serviços de registro designados para confirmar os níveis de permissão corretos
  • Verifique se está analisando corretamente os registros para evitar erros e truncamento

Dica nº 1: garanta o acesso da rede aos domínios da New Relic

Para garantir a funcionalidade adequada da New Relic, é essencial estabelecer a conectividade de rede entre o seu ambiente e os domínios da New Relic. Como a New Relic é uma oferta baseada em software como serviço (SaaS), seu ambiente deve ser capaz de se comunicar com vários domínios pela Internet. Adicione os domínios listados neste documento à sua lista de permissões para garantir essa conectividade. Esses domínios são essenciais para que o New Relic tenha um desempenho ideal, e bloqueá-los pode causar problemas com os recursos do produto ou impedir que as páginas sejam totalmente carregadas.

Você pode realizar o seguinte teste de ping para verificar a sua conexão com os domínios da New Relic. 

ping collector.newrelic.com

A execução do comando acima ajudará a confirmar a conectividade entre seu sistema e o domínio do coletor New Relic.

Observe que, se estiver usando um proxy, é necessário incluir suas variáveis de proxy como parte das definições de configuração do agente de infraestrutura. Isso garantirá que seus registros sejam encaminhados corretamente para a New Relic.

Dica nº 2: use encaminhadores de registro compatíveis

Embora o uso do agente de infraestrutura da New Relic seja uma maneira de gerenciar os registros, há outras opções.Se você não precisar das métricas de host que o encaminhamento de logs de infraestrutura fornece ou se já tiver um encaminhador de logs instalado, poderá escolher entre outros métodos compatíveis para encaminhar seus logs para o New Relic. A New Relic fornece uma lista abrangente de encaminhadores de logs, incluindo aqueles para plataformas de nuvem populares, como AWS, Azure e GCP.

Antes de explorar as opções de encaminhamento de log, vamos primeiro entender como funciona o encaminhamento de registros.

Como funciona o encaminhamento de registros

O diagrama a seguir ilustra o processo de encaminhamento de registros:

Agora que você tem uma compreensão visual do encaminhamento de registro, vamos considerar alguns métodos específicos que podem ser usados para encaminhar seus logs para a New Relic.

Plug-in do Logstash para encaminhamento de registros

Se seus dados de registro já forem monitorados pelo Logstash, você poderá usar o nosso plug-in do Logstash para encaminhar e enriquecer os seus dados de registro na New Relic. Ao encaminhar seus logs do Logstash para o New Relic, você pode aproveitar os recursos aprimorados de gerenciamento de logs. Isso inclui a coleta, o processamento, a exploração, a consulta e a definição de alertas em seus dados de registro de forma mais eficiente. Instale e configure o plug-in do Logstash para enviar logs para o New Relic.

API de registros

Se as soluções existentes de encaminhamento de registros da New Relic não atenderem às suas necessidades, você pode usar a API de registros para enviar dados de registros diretamente para a New Relic por meio de um endpoint HTTP. A plataforma foi criada com base nos quatro tipos fundamentais de dados de telemetria: métricas, eventos, registros e rastreamentos, que são necessários para o monitoramento eficaz do sistema. Esses tipos de dados são expostos por meio de uma API, geralmente chamada de "MELT" no setor de observabilidade.

Aqui está um exemplo simples em Python para enviar registros para a API de registros da New Relic.

import json
import requests

# Endpoint para a API de registro da New Relic
url = "https://log-api.newrelic.com/log/v1"

# Cabeçalhos para incluir o tipo de conteúdo e a Api-Key
headers = {
 'Content-type': 'application/json', 
 'Api-Key': 'INGEST_KEY'
 }

# Como carregar o arquivo JSON
with open('./sampleLogs.json') as file:
 sampleLogs = json.load(file)

# Postar solicitação para a url com os dados e cabeçalhos do sampleLogs
response = requests.post(url, json=sampleLogs, headers=headers)

Você também pode usar o curl para enviar registros para a API de registros da New Relic. Abaixo está um exemplo simples de encaminhamento de registros para a API de registros da New Relic usando curl.

curl -X POST https://log-api.newrelic.com/log/v1 \
-H "Content-Type: application/json" \
-H "Api-Key: <YOUR_LICENSE_KEY>" \
-H "Accept: */*" \
-d '{
 " message": "Exemplo de registros",
 " logtype": "accesslogs",
 " service": "production-service",
 " hostname": "production.example.com"
 }'

Siga nossa documentação para saber mais sobre como usar a API de registros da New Relic para encaminhar seus logs. 

Dica nº 3: envie registros de solução de problemas

Para ajudar a solucionar problemas com o encaminhamento de registros para a New Relic, você pode configurar o agente para enviar seus registros para a New Relic. Isso fornece informações valiosas sobre o processo de encaminhamento de registros e ajuda a identificar possíveis problemas. Para ativar esse recurso, você precisa editar o arquivo de configuração newrelic-infra.yml e adicionar um snippet de configuração para ativar o encaminhamento de registros para a New Relic.

Para enviar registros de solução de problemas para a New Relic por meio do agente de infraestrutura, siga estas etapas:

  • Edite o arquivo newrelic-infra.yml arquivo de configuração.
  • Adicione o snippet de configuração abaixo para habilitar o encaminhamento de registros para a New Relic, como visto aqui.
log:
 level: trace # Recomendado: ajuda na solução de problemas
 forward: true # Habilita o envio de registros para a New Relic
 format: json # Recomendado: habilita o registro do agente no formato JSON
 stdout: false # No Windows e em sistemas que não usam o `systemd` ou onde o `journald` é inacessível
  • Reinicie o agente seguindo as instruções para aplicar as novas configurações.

Seguindo essas etapas, você configura o agente de infraestrutura para enviar seus registros para a New Relic. O snippet de configuração acima habilita o encaminhamento de logs para a New Relic, define o nível de log como rastreamento para fins de solução de problemas, especifica o formato do log como `JSON` e desabilita a saída stdout em ambientes de sistema específicos. 

Se você puder enviar registros de solução de problemas com êxito, isso indica que o agente de infraestrutura está se comunicando com a New Relic sem problemas. No entanto, lembre-se de que o registro de rastreamento gera uma enorme quantidade de dados rapidamente. Para evitar o alto uso do disco e a ingestão de dados, defina o nível de registro como `info` ou inferior depois de gerar os registros. 

Se você não conseguir ver os registros de solução de problemas na New Relic, precisará examinar as causas subjacentes do problema. Isso pode incluir problemas de rede, firewalls ou problemas de permissão.

Verificar a conectividade do agente de infraestrutura

Linux: Você pode usar o seguinte comando para verificar se o agente da New Relic Infrastructure está sendo executado com êxito. 

# listar e verificar o processo td-agent
ps -ef | grep -i td-agent

Windows: você pode verificar se o serviço New Relic Infrastructure é executado no Windows Services para Microsoft Windows.

Resolver problemas de permissão

Se estiver tendo problemas com o agente New Relic, é possível que haja problemas de permissão impedindo que ele seja executado com êxito. Os recursos a seguir fornecem informações adicionais para ajudá-lo a resolver qualquer problema relacionado a permissões. 

Linux: Por padrão, o agente é executado e instalado como root.Você também pode selecionar modos de execução privilegiados ou não privilegiados.

Windows: o agente deve ser instalado a partir de uma conta de administrador e requer privilégios de administrador para ser executado.

macOS: o agente pode ser instalado a partir de qualquer conta de usuário.

Além disso, você pode aproveitar o evento NrIntegrationError fornecido pela New Relic para obter mais visibilidade sobre possíveis problemas relacionados à ingestão de dados, limites e configuração de recursos. Esse evento foi projetado para capturar problemas decorrentes do excesso de ingestão de dados e limites de consulta, erros de configuração e dados malformados. 

Solução de problemas com o evento NrIntegrationError

A New Relic fornece o evento NrIntegrationError, que oferece visibilidade sobre possíveis problemas de ingestão de dados, limites e configuração de recursos. Use a seguinte consulta NRQL para examinar a estrutura do evento NrIntegrationError e ver seus atributos anexados. 

 

FROM NrIntegrationError SELECT keyset()

A imagem abaixo mostra um exemplo de problemas capturados pelo evento NrIntegrationError.

Dica nº 4: Acesse o arquivo de registro e o serviço designados 

Ao trabalhar com arquivos de registros, é importante garantir que o arquivo de registros que você está tentando usar esteja acessível e tenha as permissões necessárias. Em alguns casos, o arquivo de registro pode ter sido criado quando o agente estava sendo executado como raiz, o que fez com que o usuário nri-agent perdesse as permissões de gravação. 

Para verificar as permissões necessárias e garantir que você tenha acesso ao arquivo de registro, você pode usar o comando ls -l no Linux.

ls -l /path/to/file

O comando acima fornece informações detalhadas sobre as permissões e a propriedade do arquivo. 

Depois de identificar qualquer problema com as permissões de arquivo, você pode considerar a implementação das seguintes opções: :

Opção 1: alterar o proprietário do arquivo de registro: ao alterar o proprietário do arquivo de ls -registro, você pode garantir que o usuário apropriado tenha as permissões necessárias para acessar e modificar o arquivo.

Opção 2: no arquivo de configuração /etc/newrelic-infra.yml, modifique a entrada log_file para especificar um local de arquivo de registro que permita que o usuário nri-agent escreva nele. Nossos scripts de instalação criam a pasta /var/log/newrelic-infra/ para essa finalidade, e recomendamos usar a mesma.Por exemplo:

 

log_file: /var/log/newrelic-infra/newrelic-infra.log

Ao encontrar problemas com a não execução do agente ou com a inacessibilidade dos registros no Microsoft Windows, isso geralmente é causado por produtos antivírus ou de segurança instalados no sistema. Esses produtos podem, às vezes, interferir no funcionamento adequado do agente e impedir o acesso a arquivos de registro essenciais. É importante verificar as configurações desses produtos e garantir que as exceções adequadas tenham sido adicionadas para permitir que o agente seja executado e que os registros sejam acessados. Além disso, a análise de quaisquer atualizações ou alterações recentes feitas no software de segurança pode ser útil para determinar se elas podem estar causando o problema.

Dica nº 5: implemente a análise de registro adequada 

Na New Relic, os registros são frequentemente apresentados no formato JSON, recomendado em vez de texto simples. As mensagens de registro JSON são automaticamente analisadas em pares de valores-chave, reduzindo a probabilidade de problemas inesperados. 

Abaixo está um exemplo de um registro analisado com sucesso no New Relic.

Quando o registro é feito em texto simples, a falta de estrutura pode representar desafios ao analisar os dados de log (registro). A extração de informações úteis de registros de texto simples torna-se difícil e pode até resultar em erros de análise. Por outro lado, o JSON é um formato de dados estruturado que fornece uma estrutura consistente para os dados de registro. Usando JSON como formato de saída, as mensagens de registro são automaticamente convertidas em pares de valores-chave, facilitando a extração de informações úteis dos registros. 

Quando os registros não aparecem corretamente na New Relic, geralmente há dois motivos.

Primeiro motivo: formato JSON inválido

Um formato JSON inválido é um dos possíveis motivos para que os registros não apareçam corretamente na New Relic. Os dados de registro devem estar no formato JSON válido para garantir a análise adequada e evitar o truncamento. Caso contrário, ele será armazenado como uma cadeia de caracteres e truncado se exceder o limite de caracteres. Portanto, é fundamental verificar se os dados de registro estão no formato JSON válido antes de encaminhá-los para a New Relic.

Solução alternativa

Se você encontrar problemas com a análise de registros, saber que há uma grande quantidade de informações disponíveis na comunidade técnica sobre a análise de registros é útil.Você pode encontrar muitos exemplos fornecidos pela FluentBit, New Relic ou outros recursos comumente disponíveis para ajudar. Ao aproveitar esse conhecimento, você pode garantir que seus logs sejam analisados corretamente no New Relic.

Segundo motivo: conteúdo JSON "stringificado"

Outro possível motivo para que os registros não apareçam corretamente na New Relic é a presença de conteúdo "stringified" JSON. Isso ocorre quando o conteúdo JSON válido é convertido em um formato de cadeia de caracteres usando caracteres de escape, o que faz com que ele seja avaliado como uma cadeia de caracteres em vez de JSON. Isso significa que o conteúdo será truncado para 4.096 caracteres antes de ser avaliado como JSON. Esse truncamento produzirá um JSON inválido, armazenando os dados como uma cadeia de caracteres. Além disso, se o JSON contiver matrizes, elas serão achatadas e armazenadas como strings não analisadas, o que torna difícil extrair e analisar os dados dentro das matrizes.

Solução alternativa

Para evitar problemas relacionados ao conteúdo "stringified" JSON e ao achatamento de matrizes, envie os dados em seu formato JSON original sem convertê-los em uma string. Isso permite que o conteúdo seja analisado corretamente, mesmo que exceda o limite de caracteres.

Importante!Se você encontrar algum problema relacionado à formatação e análise de dados de log, provavelmente você não tem o formato de log correto ou os logs não estão sendo analisados corretamente no New Relic. Explore a estrutura de dados dos seus registros e use os analisadores de registro apropriados.

Conclusão

Para resumir, abordamos cinco dicas para garantir que seus registros sejam encaminhados corretamente para a New Relic, permitindo que você obtenha percepções valiosas sobre o comportamento do aplicativo e identifique rapidamente possíveis problemas. As informações fornecidas nesta postagem foram criadas para ajudá-lo a entender os conceitos básicos do encaminhamento de logs e orientá-lo na solução de problemas e na verificação das configurações de encaminhamento de logs. Utilizando essas dicas, você pode facilmente garantir que seus registros estejam funcionando corretamente e sendo enviados para a New Relic.