In der heutigen komplexen Anwendungslandschaft dienen Logs als wertvolle Informationsquelle für das Monitoring und Troubleshooting. Sie bieten Einblicke in das Verhalten Ihres Systems und ermöglichen es Ihnen, die Performance Ihrer Anwendungen zu verstehen. Ohne die richtigen Tools und Prozesse kann die Verwaltung von Logs jedoch schnell überwältigend werden. Hier kommt eine Logmanagement-Plattform wie New Relic ins Spiel. 

New Relic bietet zuverlässige Logmanagement-Funktionen, die Ihre Logdaten mit den übrigen Anwendungs- und Infrastrukturdaten verbinden. Dies ermöglicht Ihnen einen ganzheitlichen Blick auf Ihr System und verkürzt die mittlere Lösungszeit (MTTR). Angesichts der Komplexität von Systemen mit mehreren Logquellen, Konfigurationen und Tools kann es jedoch eine Herausforderung sein, korrektes Log-Forwarding an New Relic sicherzustellen.

In diesem Blog geben wir Ihnen die fünf wichtigsten Tipps, mit denen Sie sicherstellen, dass Ihre Logs korrekt an New Relic weitergeleitet werden. Durch Befolgen dieser Tipps:

  • Bestätigen Sie Ihren Netzwerkzugriff auf New Relic Domains
  • Vergewissern Sie sich, dass Sie einen unterstützten Log-Forwarder ausgewählt haben
  • Senden Sie Fehlerbehebungslogs vom Log-Forwarder zum weiteren Debugging
  • Greifen Sie auf ausgewiesene Logdateien und Dienste zu, um die korrekten Berechtigungsstufen zu bestätigen
  • Überprüfen Sie, ob Ihre Logs korrekt geparst werden, um Fehler und Kürzungen zu vermeiden

Tipp Nr. 1: Stellen Sie den Netzwerkzugriff auf New Relic Domains sicher

Für eine ordnungsgemäße Funktion von New Relic ist es wichtig, Netzwerkkonnektivität zwischen Ihrer Umgebung und den New Relic Domains herzustellen. Da es sich bei New Relic um ein auf Software as a Service (SaaS) basierendes Angebot handelt, muss Ihre Umgebung in der Lage sein, mit mehreren Domains über das Internet zu kommunizieren. Um diese Konnektivität zu gewährleisten, fügen Sie die in diesem Dokument aufgeführten Domains Ihrer Positivliste hinzu. Diese Domains sind für die optimale Leistung von New Relic unerlässlich, sie zu sperren kann daher zu Problemen mit Produktfunktionen führen oder das vollständige Laden von Seiten verhindern.

Um Ihre Verbindung zu New Relic Domains zu überprüfen, können Sie den folgenden Ping-Test durchführen. 

ping collector.newrelic.com

Durch Ausführen des obigen Befehls können Sie die Konnektivität zwischen Ihrem System und der New Relic Collector-Domain bestätigen.

Bitte beachten Sie, dass es bei Verwendung eines Proxys erforderlich ist, Ihre Proxy-Variablen in die Konfigurationseinstellungen Ihres Infrastructure Agent einzubeziehen. Dadurch wird sichergestellt, dass Ihre Logs ordnungsgemäß an New Relic weitergeleitet werden.

Tipp Nr. 2: Verwenden Sie unterstützte Log-Forwarder

Die Verwendung des New Relic Infrastructure Agent ist zwar eine Möglichkeit, Logs zu verwalten, aber nicht die einzige Option, die Ihnen zur Verfügung steht. Wenn Sie die Hostmetriken, die vom Infrastruktur-Log-Forwarding bereitgestellt werden, nicht benötigen oder bereits über einen Log-Forwarder verfügen, können Sie eine andere unterstützte Methode zur Weiterleitung Ihrer Logs an New Relic wählen. New Relic bietet eine umfassende Liste von Log-Forwardern, einschließlich solcher für beliebte Cloudplattformen wie AWS, Azure und GCP.

Bevor wir uns mit alternativen Log-Forwarding-Optionen befassen, sollten wir zunächst verstehen, wie das Log-Forwarding funktioniert.

So funktioniert das Log-Forwarding

Das folgende Diagramm veranschaulicht den Prozess des Log-Forwarding:

Nachdem Sie nun ein visuelles Verständnis des Log-Forwarding haben, sehen wir uns ein paar Methoden an, mit denen Sie Ihre Logs an New Relic weiterleiten können.

Logstash-Plugin für das Log-Forwarding

Wenn Ihre Logdaten bereits von Logstash überwacht werden, können Sie unser Logstash-Plugin verwenden, um Ihre Logdaten in New Relic weiterzuleiten und anzureichern. Durch die Weiterleitung Ihrer Logstash-Logs an New Relic können Sie auf die erweiterten Logmanagement-Funktionen zugreifen. Dazu gehört die Möglichkeit, Ihre Logdaten effizienter zu sammeln, zu verarbeiten, zu untersuchen, abzufragen und Alerts für sie festzulegen. Installieren und konfigurieren Sie das Logstash-Plugin zum Senden von Logs an New Relic.

Logs-API

Wenn die vorhandenen Log-Forwarding-Lösungen von New Relic Ihre Anforderungen nicht erfüllen, können Sie die Logs-API verwenden, um Logdaten direkt über einen HTTP-Endpunkt an New Relic zu senden. Die Plattform basiert auf den vier grundlegenden Telemetriedatentypen Metriken, Events, Logs und Traces, die für ein effektives System-Monitoring erforderlich sind. Diese Datentypen werden über eine API bereitgestellt, die in der Observability-Branche oft anhand der Anfangsbuchstaben der Datentypen als „MELT“ bezeichnet wird.

Hier ist ein einfaches Python-Beispiel zum Senden von Logs an die New Relic Logs-API.

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)

Sie können auch Curl verwenden, um Logs an die New Relic Logs-API zu senden. Unten finden Sie ein einfaches Beispiel für die Weiterleitung von Logs an die New Relic Logs-API mithilfe von 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"
}'

Folgen Sie unserer Dokumentation , um mehr darüber zu erfahren, wie Sie die New Relic Logs-API zum Weiterleiten Ihrer Logs verwenden. 

Tipp Nr. 3: Senden Sie Fehlerbehebungslogs

Um Probleme beim Log-Forwarding an New Relic zu beheben, können Sie den Agent so konfigurieren, dass er seine eigenen Logs an New Relic sendet. Dies liefert wertvolle Einblicke in das Log-Forwarding und hilft bei der Identifizierung potenzieller Probleme. Um diese Funktion zu aktivieren, müssen Sie Ihre Konfigurationsdatei newrelic-infra.yml bearbeiten und ein Konfigurations-Snippet hinzufügen, um das Log-Forwarding an New Relic zu aktivieren.

Um Fehlerbehebungslogs über den Infrastructure Agent an New Relic zu senden, führen Sie die folgenden Schritte aus:

  • Bearbeiten Sie die Konfigurationsdatei newrelic-infra.yml.
  • Fügen Sie das nachstehende Konfigurations-Snippet hinzu, um das Log-Forwarding an New Relic zu aktivieren, wie hier beschrieben.
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

Damit konfigurieren Sie den Infrastructure Agent so, dass er seine Logs an New Relic sendet. Das obige Konfigurations-Snippet ermöglicht die Weiterleitung von Logs an New Relic, legt die Log-Ebene zum Tracing für das Troubleshooting fest, gibt das Logformat als „JSON“ an und deaktiviert den stdout-Output in bestimmten Systemumgebungen. 

Wenn Sie Fehlerbehebungslogs problemlos versenden können, kommuniziert der Infrastructure Agent einwandfrei mit New Relic. Bedenken Sie jedoch, dass beim Trace-Logging schnell eine enorme Datenmenge anfällt. Um eine hohe Festplattennutzung und übermäßige Datenerfassung zu vermeiden, sollten Sie die Log-Ebene auf „Info“ oder niedriger setzen, nachdem Sie Logs erstellt haben. 

Wenn Sie in New Relic keine Fehlerbehebungslogs sehen können, müssen Sie die zugrunde liegenden Ursachen des Problems untersuchen. Dabei kann es sich um Netzwerkprobleme, Firewalls oder Berechtigungsprobleme handeln.

Überprüfen Sie die Konnektivität des Infrastructure Agent

Linux: Unter Linux können Sie mit dem folgenden Befehl überprüfen, ob der New Relic Infrastructure Agent wie vorgesehen ausgeführt wird. 

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

Windows: Für Microsoft Windows können Sie in den Windows-Diensten prüfen, ob der New Relic Infrastructure-Service ausgeführt wird.

Beheben Sie Berechtigungsprobleme

Wenn der New Relic Agent nicht einwandfrei ausgeführt wird, liegen möglicherweise Berechtigungsprobleme vor. Die folgenden Ressourcen bieten zusätzliche Informationen, die Ihnen bei der Behebung von Berechtigungsproblemen helfen sollen. 

Linux: Standardmäßig wird der Agent als Root ausgeführt und installiert. Sie können auch privilegierte oder nicht privilegierte Ausführungsmodi auswählen.

Windows: Der Agent muss über ein Administratorkonto installiert werden und benötigt zur Ausführung Administratorrechte.

macOS: Der Agent kann von jedem Benutzerkonto aus installiert werden.

Darüber hinaus können Sie das von New Relic bereitgestellte Event NrIntegrationError nutzen, um mehr Einblick in potenzielle Probleme mit Datenerfassung, Grenzwerten und Funktionskonfiguration zu erhalten. Dieses Event ist speziell darauf ausgelegt, Probleme zu ermitteln, die aus der Überschreitung von Datenerfassungs- und Abfragegrenzen, Konfigurationsfehlern und fehlerhaften Daten resultieren. 

Nutzen Sie das Event NrIntegrationError zur Fehlerbehebung

New Relic stellt das NrIntegrationError-Event bereit, das Einblicke in potenzielle Probleme hinsichtlich Datenerfassung, Grenzwerten und Funktionskonfiguration bietet. Verwenden Sie die folgende NRQL-Abfrage, um die Struktur des Events NrIntegrationError zu untersuchen und die zugewiesenen Attribute zu sehen. 

 

FROM NrIntegrationError SELECT keyset()

Das Bild unten zeigt ein Beispiel für Probleme, die vom NrIntegrationError-Event erfasst wurden.

Tipp Nr. 4: Greifen Sie auf die ausgewiesene Logdatei und den ausgewiesenen Service zu 

Beim Arbeiten mit Logdateien müssen Sie sicherstellen, dass auf die gewünschte Logdatei zugegriffen werden kann und die erforderlichen Berechtigungen vorhanden sind. In einigen Fällen wurde die Logdatei möglicherweise erstellt, als der Agent als Root ausgeführt wurde, was dazu führte, dass nri-agent die Schreibberechtigung verlor. 

Um die erforderlichen Berechtigungen zu überprüfen und sicherzustellen, dass Sie Zugriff auf die Logdatei haben, können Sie unter Linux den Befehl ls -l verwenden.

ls -l /path/to/file

Der obige Befehl liefert detaillierte Informationen zu den Berechtigungen und der Eigentümerschaft der Datei. 

Liegen Probleme mit Dateiberechtigungen vor, können Sie die folgenden Optionen in Betracht ziehen:

Option 1: Ändern Sie den/die Eigentümer:in der Logdatei. Dadurch können Sie sicherstellen, dass die gewünschte Person über die erforderlichen Berechtigungen zum Aufrufen und Ändern der Datei verfügt.

Option 2: Ändern Sie in der Konfigurationsdatei /etc/newrelic-infra.yml den Eintrag log_file so, dass ein Speicherort für die Logdatei angegeben wird, an dem der/die Benutzer:in nri-agent Schreibzugriff auf die Datei hat. Unsere Installationsskripte erstellen zu diesem Zweck den Ordner /var/log/newrelic-infra/. Benutzen Sie am besten diesen Ordner. Zum Beispiel:

 

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

Wenn unter Microsoft Windows der Agent nicht ausgeführt wird oder der Logzugriff nicht funktioniert, liegt dies häufig an auf dem System installierten Antiviren- oder Sicherheitsprodukten. Diese Produkte können manchmal die einwandfreie Funktion des Agent beeinträchtigen und den Zugriff auf wichtige Logdateien verhindern. Prüfen Sie daher die Einstellungen für diese Produkte und vergewissern Sie sich, dass die relevanten Ausnahmen hinzugefügt wurden, damit der Agent ausgeführt und auf Logs zugegriffen werden kann. Darüber hinaus kann es hilfreich sein, alle kürzlich an der Sicherheitssoftware vorgenommenen Updates oder Änderungen als Problemursache in Betracht zu ziehen und zu überprüfen.

Tipp Nr. 5: Implementieren Sie angemessenes Log-Parsing 

In New Relic werden Logs häufig im JSON-Format dargestellt, das anstelle von reinem Text empfohlen wird. JSON-Lognachrichten werden automatisch als Schlüssel-Wert-Paare geparst, was die Wahrscheinlichkeit unerwarteter Probleme verringert. 

Unten finden Sie ein Beispiel für ein Log, das in New Relic erfolgreich geparst wurde.

Beim Logging im Klartext kann die fehlende Struktur zu Problemen beim Parsen von Logdaten führen. Bei Klartextlogs wird das Extrahieren hilfreicher Informationen erschwert und es kann sogar zu Parsing-Fehlern kommen. Andererseits ist JSON ein strukturiertes Datenformat, das eine konsistente Struktur für Logdaten bietet. Durch die Verwendung von JSON als Ausgabeformat werden Lognachrichten automatisch in Schlüssel-Wert-Paare umgewandelt, wodurch es einfacher wird, nützliche Informationen aus Logs zu extrahieren. 

Wenn Logs in New Relic nicht korrekt angezeigt werden, gibt es normalerweise zwei Gründe.

Grund 1: ungültiges JSON-Format

Ein möglicher Grund dafür, dass Logs in New Relic nicht korrekt angezeigt werden, ist ein ungültiges JSON-Format. Um einwandfreies Parsing sicherzustellen und Verkürzungen zu verhindern, müssen die Logdaten im gültigen JSON-Format vorliegen. Andernfalls werden sie als Zeichenfolge gespeichert und bei Überschreiten der Zeichenbeschränkung abgeschnitten. Daher ist es wichtig zu prüfen, ob die Logdaten im gültigen JSON-Format vorliegen, bevor sie an New Relic weitergeleitet werden.

Workaround

Wenn beim Log-Parsing Probleme auftreten, sehen Sie sich in der technischen Community um: Dort finden Sie zahlreiche Informationen zum Parsen von Logs, z. B. von FluentBit und New Relic bereitgestellte Beispiele oder andere allgemein verfügbare Ressourcen. Anhand dieser Infos können Sie sicherstellen, dass Ihre Logs korrekt in New Relic geparst werden.

Grund 2: „stringifizierter“ JSON-Inhalt

Ein weiterer möglicher Grund dafür, dass Logs in New Relic nicht korrekt angezeigt werden, ist das Vorhandensein von „stringifizierten“ JSON-Inhalten. Dies tritt auf, wenn gültiger JSON-Inhalt mithilfe von Escapezeichen in ein Zeichenfolgenformat konvertiert wird, sodass er als Zeichenfolge (oder String) anstatt als JSON ausgewertet wird. Dadurch wird der Inhalt vor der Auswertung auf 4.096 Zeichen gekürzt und diese Kürzung führt zu einem ungültigen JSON-Inhalt. Die Daten werden als Zeichenfolge gespeichert. Wenn der JSON-Inhalt Arrays umfasst, werden diese zudem geglättet und als ungeparste Zeichenfolgen gespeichert. Das Extrahieren und Analysieren der Daten in den Arrays wird dadurch erschwert.

Workaround

Um Probleme im Zusammenhang mit „stringifizierten“ JSON-Inhalten und dem Glätten von Arrays zu vermeiden, stellen Sie sicher, dass Sie die Daten im ursprünglichen JSON-Format senden, ohne sie in einen String zu konvertieren. Dadurch kann der Inhalt auch dann korrekt geparst werden, wenn er die Zeichenbeschränkung überschreitet.

Wichtig! Wenn Sie auf Probleme im Zusammenhang mit Formatierung und Parsing von Logdaten stoßen, ist es wahrscheinlich, dass Sie nicht über das richtige Logformat verfügen oder dass die Logs nicht korrekt in New Relic geparst werden. Sehen Sie sich die Datenstruktur Ihrer Logs an und verwenden Sie die passenden Log-Parser.

Fazit

Anhand dieser fünf Tipps sorgen Sie dafür, dass Ihre Logs korrekt an New Relic weitergeleitet werden. So können Sie wertvolle Einblicke in das Verhalten Ihrer Anwendungen gewinnen und potenzielle Probleme schnell erkennen. Die in diesem Beitrag bereitgestellten Informationen sollen Ihnen helfen, die Grundlagen der Log-Forwarding zu verstehen, und Sie bei der Prüfung und Fehlerbehebung Ihrer Log-Forwarding-Konfigurationen anleiten. Mithilfe dieser Tipps können Sie ganz einfach sicherstellen, dass Ihre Logs ordnungsgemäß funktionieren und an New Relic gesendet werden.