Dans le paysage applicatif complexe d'aujourd'hui, les logs constituent une précieuse source d'informations pour le monitoring et le dépannage. Ils fournissent des informations sur le comportement de votre système et vous permettent de comprendre les performances de vos applications. Cependant, la gestion des logs peut rapidement devenir écrasante sans les bons outils et processus en place. C'est là qu'intervient une plateforme de gestion des logs comme New Relic. 

New Relic offre des capacités de gestion de logs robustes qui connectent vos données de log avec le reste de vos données d'application et d'infrastructure. Cela vous permet d'obtenir une vue globale de votre système et de réduire le temps moyen de résolution (MTTR). Cependant, étant donné la nature complexe des systèmes impliquant plusieurs sources de logs, configurations et outils, il peut être difficile d'assurer un transfert précis des logs vers New Relic.

Dans ce blog, nous partageons avec vous les cinq meilleurs conseils pour vous assurer que les logs sont correctement transférés à New Relic. En suivant ces conseils, vous :

  • Confirmez votre accès réseau aux domaines New Relic
  • Vérifiez que vous avez sélectionné un redirecteur de logs pris en charge
  • Envoyez les logs de dépannage à partir du redirecteurs de logs pour un débogage supplémentaire
  • Accédez aux fichiers logs et aux services désignés pour confirmer les niveaux d'autorisation corrects
  • Vérifiez que vous analysez correctement les logs pour éviter les erreurs et les troncatures

Conseil n° 1 : assurez l'accès réseau aux domaines New Relic

Pour garantir le bon fonctionnement de New Relic, il est essentiel d'établir une connectivité réseau entre votre environnement et les domaines New Relic. Étant donné que New Relic est basé sur un logiciel en tant que service (SaaS), votre environnement doit pouvoir communiquer avec plusieurs domaines sur Internet. Pour garantir cette connectivité, ajoutez les domaines répertoriés dans ce document à votre liste de domaines autorisés. Ces domaines sont essentiels pour que New Relic fonctionne de manière optimale, et s'ils sont bloqués, cela pourrait entraîner des problèmes avec les fonctionnalités ou empêcher le chargement complet des pages.

Pour vérifier votre connexion aux domaines New Relic, vous pouvez effectuer le test ping suivant. 

ping collector.newrelic.com

L'exécution de la commande ci-dessus aidera à confirmer la connectivité entre votre système et le domaine du collecteur New Relic.

Veuillez noter que si vous utilisez un proxy, il est nécessaire d'inclure vos variables proxy dans les paramètres de configuration de votre agent d'infrastructure. Cela garantira que vos logs sont correctement transférés à New Relic.

Conseil n° 2 : utilisez les redirecteurs de logs pris en charge

Bien que l'utilisation de l'agent d'infrastructure New Relic soit un moyen de gérer les logs, ce n'est pas la seule option à votre disposition. Si vous n'avez pas besoin des métriques d'hôte fournies par le transfert de logs d'infrastructure ou si vous avez déjà un expéditeur de logs en place, vous pouvez choisir parmi d'autres méthodes prises en charge pour transférer vos logs vers New Relic. New Relic fournit une liste complète des redirecteurs de logs, y compris ceux pour les plateformes cloud populaires telles qu'AWS, Azure et GCP.

Avant d'explorer d'autres options de transfert de logs, commençons par comprendre comment fonctionne le transfert de logs.

Fonctionnement du transfert de logs

Le schéma suivant illustre le processus de transfert des logs :

Maintenant que vous avez une compréhension visuelle du transfert des logs, examinons quelques méthodes spécifiques que vous pouvez utiliser pour transférer vos logs vers New Relic.

Plugin Logstash pour le transfert des logs

Si vos données de log sont déjà monitorées par Logstash, vous pouvez utiliser notre plugin Logstash pour transférer et enrichir vos données de log dans New Relic. En transférant vos logs Logstash vers New Relic, vous pouvez tirer parti des fonctionnalités améliorées de gestion des logs. Cela inclut la possibilité de collecter, traiter, explorer, interroger et définir des alertes sur vos données de log plus efficacement. Installez et configurez le plugin Logstash pour envoyer les logs à New Relic.

API de logs

Si les solutions existantes de transfert des logs vers New Relic ne répondent pas à vos besoins, vous pouvez utiliser l'API Log pour envoyer directement les données à New Relic via un point de terminaison HTTP. La plateforme est construite autour des quatre types de données de télémétrie fondamentaux : métriques, événements, logs et traces, qui sont nécessaires pour un monitoring efficace du système. Ces types de données sont exposés via une API, souvent appelée "MELT" dans l'industrie de l'observabilité.

Voici un exemple Python simple pour envoyer des logs à l'API New Relic Logs.

import json
import requests

# Endpoint for New Relic Log API
url = "https://log-api.newrelic.com/log/v1"

# Headers to include the content-type and Api-Key
headers = {
    'Content-type': 'application/json', 
    'Api-Key': 'INGEST_KEY'
    }

# Loading the JSON file
with open('./sampleLogs.json') as file:
    sampleLogs = json.load(file)

# Post request to the url with the sampleLogs data and headers
response = requests.post(url, json=sampleLogs, headers=headers)

Vous pouvez également utiliser curl pour envoyer des logs à l'API New Relic Logs. Vous trouverez ci-dessous un exemple simple de transfert de logs vers l'API New Relic Logs à l'aide de 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"
}'

Suivez notre documentation pour en savoir plus sur l'utilisation de l'API New Relic Log pour transférer vos logs. 

Conseil n° 3 : envoyez des logs de dépannage

Pour vous aider à résoudre les problèmes de transfert de logs vers New Relic, vous pouvez configurer l'agent pour qu'il envoie ses propres logs à New Relic. Cela fournit des informations précieuses sur le processus de transfert des logs et aide à identifier les problèmes potentiels. Pour activer cette fonctionnalité, vous devez modifier votre fichier de configuration newrelic-infra.yml et ajouter un snippet de configuration pour activer le transfert des logs vers New Relic.

Pour envoyer les logs de dépannage à New Relic via l'agent d'infrastructure, procédez comme suit :

  • Modifiez votre fichier de configuration newrelic-infra.yml.
  • Ajoutez le snippet de configuration ci-dessous pour activer le transfert des logs vers New Relic, comme indiqué ici.
log:
      level: trace # Recommended: Helps with troubleshooting
      forward: true # Enables sending logs to New Relic
      format: json # Recommended: Enable agent logging in JSON format
      stdout: false # On Windows and systems that don't use `systemd` or where `journald` is inaccessible
  • Redémarrez l'agent en suivant les instructions pour appliquer les nouveaux paramètres.

En suivant ces étapes, vous configurez l'agent d'infrastructure pour envoyer ses logs à New Relic. Le snippet de configuration ci-dessus active le transfert de log vers New Relic, définit le niveau de log à tracer à des fins de dépannage, spécifie le format de log en tant que « JSON » et désactive la sortie stdout dans certains environnements système. 

Si vous réussissez à envoyer les logs de dépannage, cela indique que l'agent d'infrastructure communique avec New Relic sans problème. Cependant, gardez à l'esprit que le logging des traces génère rapidement une énorme quantité de données. Pour éviter une utilisation intensive du disque et l'ingestion d'une grande quantité de données, définissez le niveau de logging sur « info » ou plus bas, une fois que vous avez généré des logs. 

Si vous ne parvenez pas à voir les logs de dépannage dans New Relic, vous devez rechercher les causes sous-jacentes du problème. Cela peut inclure des problèmes de réseau, des pare-feu ou des problèmes d'autorisation.

Vérification de la connectivité de l'agent d'infrastructure

Linux : sous Linux, vous pouvez utiliser la commande suivante pour vérifier si l'agent New Relic Infrastructure s'exécute correctement. 

# list and check the td-agent process
ps -ef | grep -i td-agent

Windows : pour Microsoft Windows, vous pouvez vérifier si le service New Relic Infrastructure est en cours d'exécution dans les services Windows.

Résolution des problèmes d'autorisation

Si vous rencontrez des problèmes avec l'agent New Relic, il est possible que vous ayez des problèmes d'autorisation qui l'empêchent de s'exécuter correctement. Les ressources suivantes fournissent des informations supplémentaires pour vous aider à résoudre les problèmes liés aux autorisations. 

Linux : par défaut, l'agent s'exécute et s'installe en tant que root. Vous pouvez également sélectionner des modes d'exécution privilégiés ou non privilégiés .

Windows : l'agent doit être installé à partir d'un compte administrateur et nécessite des privilèges d'administrateur pour s'exécuter.

macOS : l'agent peut être installé à partir de n'importe quel compte utilisateur.

De plus, vous pouvez tirer parti de l'événement NrIntegrationError fourni par New Relic pour obtenir plus de visibilité sur les problèmes potentiels liés à l'ingestion de données, aux limites et à la configuration des fonctionnalités. Cet événement est spécialement conçu pour capturer les problèmes résultant du dépassement des limites d'ingestion de données et de requête, des erreurs de configuration et des données malformées. 

Dépannage avec l'événement NrIntegrationError

New Relic fournit l'événement NrIntegrationError, qui donne une visibilité sur les problèmes potentiels liés à l'ingestion de données, aux limites et à la configuration des fonctionnalités. Utilisez la requête NRQL suivante pour examiner la structure de l'événement NrIntegrationError et voir ses attributs attachés. 

 

FROM NrIntegrationError SELECT keyset()

L'image ci-dessous montre un exemple de problèmes capturés par l'événement NrIntegrationError.

Conseil n° 4 : accédez au fichier de log et au service désignés 

Lorsque vous travaillez avec des fichiers de log, il est important de vous assurer que le fichier que vous essayez d'utiliser est accessible et dispose des autorisations nécessaires. Dans certains cas, le fichier de log peut avoir été créé lorsque l'agent s'exécutait en tant que root, entraînant la perte des autorisations d'écriture pour l'utilisateur nri-agent

Pour vérifier les autorisations nécessaires et vous assurer que vous avez accès au fichier log, vous pouvez utiliser la commande ls -l sous Linux.

ls -l /path/to/file

La commande ci-dessus fournit des informations détaillées sur les autorisations et la propriété du fichier. 

Une fois que vous avez identifié les problèmes d'autorisations du fichier, vous pouvez envisager d'implémenter les options suivantes :

Option 1 - Modifiez le propriétaire du fichier log : en modifiant le propriétaire du fichier log, vous pouvez vous assurer que l'utilisateur approprié dispose des autorisations nécessaires pour accéder au fichier et le modifier.

Option 2 - Dans le fichier de configuration /etc/newrelic-infra.yml, modifiez l'entrée log_file pour spécifier un emplacement de fichier log qui permet à l'utilisateur nri-agent d'y écrire. Nos scripts d'installation créent le dossier /var/log/newrelic-infra/ à cette fin, et nous vous recommandons de l'utiliser. Par exemple :

 

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

Lorsque vous rencontrez des problèmes avec l'agent qui ne s'exécute pas ou que les logs sont inaccessibles sur Microsoft Windows, cela est souvent causé par des produits antivirus ou de sécurité installés sur le système. Ces produits peuvent parfois interférer avec le bon fonctionnement de l'agent et empêcher l'accès à des fichiers logs importants. Il est important de vérifier les paramètres de ces produits et de s'assurer que les exceptions appropriées ont été ajoutées pour permettre l'exécution de l'agent et l'accès aux logs. De plus, il peut être utile d'examiner les mises à jour ou les modifications récentes apportées au logiciel de sécurité pour déterminer si elles peuvent être à l'origine du problème.

Conseil n° 5 : implémentez l'analyse adéquate des logs 

Dans New Relic, les logs sont souvent présentés au format JSON, ce qui est recommandé par rapport au texte brut. Les messages de log JSON sont automatiquement analysés en paires clé-valeur, réduisant ainsi la probabilité de problèmes inattendus. 

Vous trouverez ci-dessous un exemple de log analysé avec succès dans New Relic.

Lors de la connexion en texte brut, le manque de structure peut poser des problèmes lors de l'analyse des données de log. L'extraction d'informations utiles à partir de logs en texte brut devient difficile et peut même entraîner des erreurs d'analyse. D'autre part, JSON est un format de données structuré qui fournit une structure cohérente pour les données de log. En utilisant JSON comme format de sortie, les messages de log sont automatiquement convertis en paires clé-valeur, ce qui facilite l'extraction d'informations utiles à partir des logs. 

Lorsque les logs n'apparaissent pas correctement dans New Relic, il y a généralement deux raisons.

Raison 1 : le format JSON n'est pas valide

Une possibilité qui empêche les logs d'apparaître correctement dans New Relic est un format JSON non valide. Pour garantir une analyse correcte et empêcher la troncature, le format JSON des données du log doit être valide. Sinon, il sera stocké sous forme de chaîne et tronqué s'il dépasse la limite de caractères. Il est donc crucial de vérifier que les données de log suivent un format JSON valide avant de les transférer à New Relic.

Autre solution

Si vous rencontrez des problèmes avec l'analyse des logs, sachez que vous disposez d'une grande quantité d'informations sur ce sujet grâce à la communauté technique . Vous trouverez de nombreux exemples fournis par FluentBit, New Relic ou d'autres ressources couramment disponibles pour vous aider. Utilisez cette mine d'informations pour vous assurer que vos logs sont correctement analysés dans New Relic.

Raison 2 : contenu JSON « stringifié »

Une autre raison potentielle pour laquelle les logs n'apparaissent pas correctement dans New Relic est la présence de contenu JSON « stringifié ». Cela se produit lorsqu'un contenu JSON valide est converti au format de chaîne à l'aide de caractères d'échappement, ce qui entraîne son évaluation en tant que chaîne plutôt que JSON. Cela signifie que le contenu sera tronqué à 4 096 caractères avant d'être évalué comme JSON. Cette troncature produira un JSON invalide, stockant les données sous forme de chaîne. De plus, si le JSON contient des tableaux, ils seront aplatis et stockés sous forme de chaînes non analysées, ce qui rendra difficiles l'extraction et l'analyse des données dans les tableaux.

Autre solution

Pour éviter les problèmes liés au contenu JSON « stringifié » et à l'aplatissement des tableaux, assurez-vous d'envoyer les données dans leur format JSON d'origine sans les convertir en chaîne. Cela permet au contenu d'être analysé correctement même s'il dépasse la limite de caractères.

Important ! Si vous rencontrez des problèmes liés au formatage et à l'analyse des données de log, il est probable que vous n'ayez pas le bon format de log ou que les logs ne soient pas correctement analysés dans New Relic. Explorez la structure de données de vos logs et utilisez les analyseurs de logs appropriés.

Conclusion

Pour résumer, nous avons couvert cinq conseils pour vous assurer que vos logs sont correctement transférés à New Relic, vous permettant d'obtenir des informations précieuses sur le comportement de votre application et d'identifier rapidement les problèmes potentiels. Les informations fournies dans cet article sont conçues pour vous aider à comprendre les bases du transfert de logs et vous guider dans le dépannage et la vérification de vos configurations de transfert de logs. En utilisant ces conseils, vous pouvez facilement vous assurer que vos logs fonctionnent correctement et sont envoyés à New Relic.