En el complejo panorama actual de las aplicaciones, los registros son una valiosa fuente de información para la supervisión y la resolución de problemas. Proporcionan información sobre el comportamiento del sistema y permiten comprender el rendimiento de las aplicaciones. Sin embargo, la gestión de los registros puede resultar abrumadora si no se cuenta con las herramientas y los procesos adecuados. Ahí es donde entra en juego una plataforma de gestión de registros como New Relic. 

New Relic ofrece capacidades sólidas de gestión de registros que conectan sus datos de registro con el resto de los datos de su aplicación e infraestructura. Estas capacidades le brindan una visión integral de su sistema y reducen el tiempo medio hasta la resolución (MTTR). Sin embargo, dada la naturaleza compleja de los sistemas que implican múltiples fuentes de registro, configuraciones y herramientas, garantizar el reenvío preciso de registros a New Relic puede ser todo un reto.

Este blog proporcionará los cinco consejos principales para garantizar que sus registros se reenvían correctamente a New Relic. Siguiendo estos consejos, lo conseguirá:

  • Confirme su acceso de red a los dominios de New Relic
  • Compruebe que ha seleccionado un reenviador de registros compatible
  • Envío de registros de solución de problemas desde el reenviador de registros para su posterior depuración
  • Acceder a los archivos de log y servicios designados para confirmar los niveles de permiso correctos
  • Compruebe que está analizando correctamente sus registros para evitar errores y truncamientos.

Consejo nº 1: Garantice el acceso de red a los dominios de New Relic

Para garantizar el correcto funcionamiento de New Relic, es esencial establecer la conectividad de red entre su entorno y los dominios de New Relic. Dado que New Relic es una oferta basada en software como servicio (SaaS), su entorno debe poder comunicarse con varios dominios a través de Internet. Añada los dominios enumerados en este documento a su lista de "permitidos" para garantizar esta conectividad. Estos dominios son esenciales para que New Relic funcione de forma óptima, y bloquearlos puede provocar problemas con las funciones del producto o impedir que las páginas se carguen por completo.

Puede realizar la siguiente prueba de ping para verificar su conexión con los dominios de New Relic. 

ping collector.newrelic.com

La ejecución del comando anterior ayudará a confirmar la conectividad entre su sistema y el dominio del recopilador de New Relic.

Tenga en cuenta que si utiliza un proxy, es necesario incluir sus variables de proxy como parte de los ajustes de configuración de su agente de infraestructura. Esto garantizará que sus registros se reenvíen correctamente a New Relic.

Consejo nº 2: Utilice reenviadores de registro compatibles

Aunque utilizar el agente de infraestructura de New Relic es una forma de gestionar los registros, existen otras opciones. Si no necesita las métricas de host que proporciona el reenvío de registros de infraestructura o ya dispone de un reenviador de registros, puede elegir entre otros métodos compatibles para reenviar sus registros a New Relic. New Relic proporciona una lista completa de reenviadores de registros, que incluye aquellos para plataformas en la nube populares como AWS, Azure y GCP.

Antes de explorar opciones alternativas de reenvío de registros, primero comprendamos cómo funciona el reenvío de registros.

Cómo funciona el reenvío de registros

El siguiente diagrama ilustra el proceso de reenvío de registros:

Ahora que tiene una comprensión visual del reenvío de registros, consideremos algunos métodos específicos que puede utilizar para reenviar sus registros a New Relic.

Plugin de Logstash para reenvío de registros

Si sus datos de registro ya están supervisados por Logstash, puede utilizar nuestro plugin de Logstash para reenviar y enriquecer sus datos de registro en New Relic. Al reenviar sus registros de Logstash a New Relic, puede aprovechar las capacidades mejoradas de gestión de registros. Esto incluye recopilar, procesar, explorar, consultar y establecer alertas sobre sus datos de registro de forma más eficiente. Instale y configure el complemento Logstash para enviar registros a New Relic.

API de registros

Si las soluciones existentes de reenvío de registros de New Relic no satisfacen sus necesidades, puede utilizar la API de registros para enviar directamente datos de registro a New Relic a través de un punto final HTTP. La plataforma está construida en torno a los cuatro tipos fundamentales de datos de telemetría: métricas, eventos, registros y trazas, necesarios para una supervisión eficaz del sistema. Estos tipos de datos se exponen a través de una API, a menudo denominada "MELT" en el sector de la observabilidad.

He aquí un sencillo ejemplo en Python para enviar registros a la API de registros de New Relic.

import json
import requests

# Punto final para la API de registro de New Relic
url = "https://log-api.newrelic.com/log/v1"

# Cabeceras para incluir el tipo de contenido y Api-Key
headers = {
 'Content-type': 'application/json', 
 'Api-Key': 'INGEST_KEY'
 }

# Cargar el archivo JSON
con open('./sampleLogs.json') as file:
 sampleLogs = json.load(file)

# Publicar solicitud para url con los datos y cabeceras de sampleLogs
response = requests.post(url, json=sampleLogs, headers=headers)

También puede utilizar curl para enviar registros a la API de registros de New Relic. A continuación se muestra un ejemplo sencillo de reenvío de registros a la API de registros de New Relic mediante 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": "Logs Example",
  "logtype": "accesslogs",
  "service": "production-service",
  "hostname": "production.example.com"
}'

Siga nuestra documentación para obtener más información sobre cómo utilizar la API de New Relic Log para reenviar sus registros. 

Consejo nº 3: Envíe los registros de resolución de problemas

Para ayudar a solucionar problemas con el reenvío de registros a New Relic, puede configurar el agente para que envíe sus registros a New Relic. Esto proporciona información valiosa sobre el proceso de reenvío de registros y ayuda a identificar posibles problemas. Para activar esta función, debe editar el archivo de configuración newrelic-infra.yml y añadir un fragmento de configuración para activar el reenvío de registros a New Relic.

Para enviar registros de solución de problemas a New Relic a través del agente de infraestructura, siga estos pasos:

  • Edite su archivo de configuración newrelic-infra.yml .
  • Añada el siguiente fragmento de configuración para activar el reenvío de registros a New Relic, como se muestra aquí.
log:
 level: trace # Recomendado: Ayuda en la resolución de problemas
 forward: true # Habilita el envío de logs a New Relic
 format: json # Recomendado: Habilitar el registro del agente en formato JSON
 stdout: false # En Windows y sistemas que no utilizan `systemd` o donde `journald` es inaccesible
  • Reinicie el agente siguiendo las instrucciones para aplicar la nueva configuración.

Siguiendo estos pasos, configurará el agente de infraestructura para que envíe sus registros a New Relic. El fragmento de configuración anterior habilita el reenvío de registros a New Relic, establece el nivel de registro en rastreo para la solución de problemas, especifica el formato de registro como `JSON` y deshabilita la salida stdout en entornos de sistema específicos. 

Si puede enviar registros de solución de problemas correctamente, indica que el agente de infraestructura se está comunicando con New Relic sin problemas. Sin embargo, recuerde que el registro de trazas genera una enorme cantidad de datos rápidamente. Para evitar un uso elevado del disco y la ingestión de datos, debe establecer el nivel de registro en `info` o inferior una vez que haya generado registros. 

Si no puede ver los registros de solución de problemas en New Relic, tendrá que buscar las causas subyacentes del problema. Esto puede incluir problemas de red, cortafuegos o problemas de permisos.

Verificar la conectividad del agente de infraestructura

Linux: Puede utilizar el siguiente comando para comprobar si el agente de New Relic Infrastructure se está ejecutando correctamente. 

# listar y comprobar el proceso td-agent
ps -ef | grep -i td-agent

Windows: Puede comprobar si el servicio New Relic Infrastructure se ejecuta en Servicios de Windows para Microsoft Windows.

Abordar los problemas de permisos

Si está experimentando problemas con el agente de New Relic, es posible que tenga problemas de permisos que impiden que se ejecute correctamente. Los siguientes recursos proporcionan información adicional para ayudarle a resolver cualquier problema relacionado con los permisos. 

Linux: Por defecto, el agente se ejecuta e instala como root. También puede seleccionar modos de ejecución privilegiados o no privilegiados.

Windows: El agente debe instalarse desde una cuenta de Administrador y requiere privilegios de Administrador para ejecutarse.

macOS: El agente puede instalarse desde cualquier cuenta de usuario.

Además, puede aprovechar el evento NrIntegrationError proporcionado por New Relic para obtener más visibilidad de los posibles problemas relacionados con la ingestión de datos, los límites y la configuración de funciones. Este evento está diseñado para capturar problemas derivados de la superación de los límites de ingesta y consulta de datos, errores de configuración y datos malformados. 

Solución de problemas con el evento NrIntegrationError

New Relic proporciona el evento NrIntegrationError, que ofrece visibilidad sobre posibles problemas de ingestión de datos, límites y configuración de funciones. Utilice la siguiente consulta NRQL para examinar la estructura del evento NrIntegrationError y ver sus atributos adjuntos. 

 

FROM NrIntegrationError SELECT keyset()

La siguiente imagen muestra un ejemplo de problemas capturados por el evento NrIntegrationError.

Consejo nº 4: Acceda al archivo de log y al servicio designados 

Cuando trabaje con archivos de registros, es importante que se asegure de que el archivo de registro que intenta utilizar es accesible y tiene los permisos necesarios. En algunos casos, el archivo de registro puede haberse creado cuando el agente se estaba ejecutando como root, lo que provoca que el usuario nri-agent pierda los permisos de escritura. 

Para comprobar los permisos necesarios y asegurarse de que tiene acceso al archivo de registro, puede utilizar el comando ls -l en Linux.

ls -l /ruta/a/archivo

El comando anterior proporciona información detallada sobre los permisos y la propiedad del archivo. 

Una vez que haya identificado cualquier problema con los permisos de los archivos, puede considerar implementar las siguientes opciones: :

Opción 1: Cambiar el propietario del archivo de registro: Al cambiar el propietario del archivo de registro, puede asegurarse de que el usuario adecuado tenga los permisos necesarios para acceder al archivo y modificarlo.

Opción 2: En el archivo de configuración /etc/newrelic-infra.yml, modifique la entrada log_file para especificar una ubicación de archivo de registro que permita al usuario nri-agent escribir en él. Nuestros scripts de instalación crean la carpeta /var/log/newrelic-infra/ para este fin, y recomendamos utilizarla. Por ejemplo:

 

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

Los problemas de inactividad del agente o de inaccesibilidad a los registros en Microsoft Windows suelen estar causados por productos antivirus o de seguridad instalados en el sistema. En ocasiones, estos productos pueden interferir en el correcto funcionamiento del agente e impedir el acceso a archivos de log esenciales. Es importante comprobar la configuración de estos productos y asegurarse de que se han añadido las excepciones adecuadas para permitir la ejecución del agente y el acceso a los registros. Además, revisar cualquier actualización o cambio reciente realizado en el software de seguridad puede ser útil para determinar si pueden estar causando el problema.

Consejo nº 5: Implementar un análisis adecuado de los registros 

En New Relic, los registros se presentan a menudo en formato JSON, recomendado sobre el texto plano. Los mensajes de registro JSON se analizan automáticamente en pares clave-valor, lo que reduce la probabilidad de que surjan problemas inesperados. 

A continuación se muestra un ejemplo de un registro analizado correctamente en New Relic.

Cuando se registra en texto plano, la falta de estructura puede plantear problemas a la hora de analizar los datos de registro. Extraer información útil de los registros en texto plano resulta difícil e incluso puede dar lugar a errores de análisis. Por otro lado, JSON es un formato de datos estructurado que proporciona una estructura coherente para los datos de registro. Al utilizar JSON como formato de salida, los mensajes de registro se convierten automáticamente en pares clave-valor, lo que facilita la extracción de información útil de los registros. 

Cuando los registros no aparecen correctamente en New Relic, suele haber dos motivos.

Motivo uno: formato JSON no válido

Un formato JSON no válido es una posible razón para que los registros no aparezcan correctamente en New Relic. Los datos de registro deben estar en formato JSON válido para garantizar un análisis correcto y evitar el truncamiento. En caso contrario, se almacenará como cadena y se truncará si supera el límite de caracteres. Por lo tanto, verificar que los datos de registro están en formato JSON válido antes de reenviarlos a New Relic es crucial.

Solución

Si tiene problemas con el análisis sintáctico de los registros, le resultará útil saber que la comunidad técnica dispone de abundante información al respecto. Puede encontrar muchos ejemplos proporcionados por FluentBit, New Relic, u otros recursos comúnmente disponibles para ayudar. Aprovechando este conocimiento, puede asegurarse de que sus registros se analizan correctamente en New Relic.

Segunda razón: contenido JSON "encadenado"

Otra posible razón por la cual los registros no aparecen correctamente en New Relic es la presencia de contenido JSON "stringificado" (convertido a cadena de texto). Esto ocurre cuando el contenido JSON válido se convierte a un formato de cadena utilizando caracteres de escape, lo que provoca que se evalúe como una cadena en lugar de como JSON. Esto significa que el contenido se truncará a 4.096 caracteres antes de ser evaluado como JSON. Este truncamiento producirá un JSON inválido, almacenando los datos como una cadena. Además, si el JSON contiene matrices, se aplanarán y almacenarán como cadenas sin analizar, lo que dificultará la extracción y el análisis de los datos contenidos en las matrices.

Solución

Para evitar problemas relacionados con el contenido JSON "stringificado" y el aplanamiento de matrices, envíe los datos en su formato JSON original sin convertirlos a una cadena. Esto permite que el contenido se analice correctamente aunque supere el límite de caracteres.

¡Importante! Si encuentra algún problema relacionado con el formato y el análisis de los datos de registro, es probable que no tenga el formato de registro correcto o que los registros no se estén analizando correctamente en New Relic. Explore la estructura de datos de sus registros y utilice los analizadores de registros adecuados.

Conclusión

Para resumir, hemos cubierto cinco consejos para asegurarse de que sus registros se reenvían correctamente a New Relic, lo que le permite obtener información valiosa sobre el comportamiento de su aplicación e identificar rápidamente posibles problemas. La información proporcionada en esta publicación está diseñada para ayudarlo a comprender los conceptos básicos del reenvío de registros y guiarlo en la solución de problemas y la verificación de sus configuraciones de reenvío de registros. Utilizando estos consejos, puede asegurarse fácilmente de que sus registros funcionan correctamente y se envían a New Relic.