Verwaltung von Nginx-Logs mit Logstash und OpenSearch

Die Verfolgung von Webserver-Logs ist entscheidend, um Ihre Website reibungslos zu betreiben, Probleme zu lösen und das Nutzerverhalten zu verstehen. Wenn Sie Nginx verwenden, erzeugt es Zugriffs- und Fehlerprotokolle, die wertvolle Informationen enthalten. Um diese Logs zu verwalten und zu analysieren, können Sie Logstash nutzen, um sie zu verarbeiten und weiterzuleiten, sowie OpenSearch, um die Daten zu indexieren und zu visualisieren.

In diesem Tutorial führen wir Sie durch die Installation von Logstash auf einer ccloud³ VM, die Einrichtung zur Erfassung Ihrer Nginx-Logs und das Senden dieser Daten an OpenSearch.

Voraussetzungen

  • Eine laufende Ubuntu-ccloud³ VM.
  • Nginx sollte eingerichtet sein und Logs auf Ihrer ccloud³ VM generieren.
  • Ein OpenSearch-Cluster sollte laufen, und Sie sollten darauf zugreifen können.
  • Vertrautheit mit Nginx, Logstash und OpenSearch ist von Vorteil.

Einsatzmöglichkeiten

Dieses Setup ist für Sie nützlich, wenn Sie:

  • Überwachung und Fehlerbehebung: Überwachen Sie die Leistung Ihres Webservers und identifizieren Sie Fehler durch die Analyse von Echtzeit-Logs.
  • Leistungsanalyse: Gewinnen Sie Einblicke in den Webverkehr und die Servermetriken.
  • Zentralisiertes Logging: Sammeln Sie Logs von mehreren Nginx-Servern in einer einzigen OpenSearch-Instanz, um die Verwaltung zu erleichtern.

Hinweis: Die Einrichtung sollte ungefähr 30 Minuten dauern.

Schritt 1 – Installation von Logstash auf einer ccloud³ VM

Logstash kann entweder über binäre Dateien, die hier verfügbar sind, oder über für Ihr Betriebssystem optimierte Paket-Repositories installiert werden. Für eine einfachere Verwaltung und Aktualisierung wird die Verwendung von Paket-Repositories empfohlen. Auf Debian-basierten Systemen wie Ubuntu können Sie den APT-Paketmanager verwenden, während Sie auf Red-Hat-basierten Systemen wie CentOS oder RHEL yum nutzen können. Beide Methoden stellen sicher, dass Logstash korrekt in die Paketverwaltung Ihres Systems integriert wird, was die Installation und Wartung vereinfacht.

In diesem Abschnitt führen wir Sie durch die Installation von Logstash mit den Paketmanagern apt und yum, sodass Sie Logstash auf Ihrer ccloud³ VM unabhängig von Ihrer Linux-Distribution konfigurieren können.

So finden Sie das Betriebssystem heraus, führen Sie den folgenden Befehl aus:

Für APT-basierte Systeme (Ubuntu/Debian)

  • Öffentlichen Signierschlüssel herunterladen und installieren:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

  • apt-transport-https installieren, falls es noch nicht installiert ist:

sudo apt-get install apt-transport-https

  • Fügen Sie die Logstash-Repository-Definition zur APT-Quellenliste hinzu und speichern Sie sie:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Hinweis: Verwenden Sie nicht den Befehl add-apt-repository, da er möglicherweise einen deb-src-Eintrag hinzufügt, der nicht unterstützt wird. Falls Sie einen Fehler im Zusammenhang mit einem deb-src-Eintrag erhalten, löschen Sie diesen aus der Datei /etc/apt/sources.list. Falls Sie den deb-src-Eintrag hinzugefügt haben, kann die folgende Fehlermeldung auftreten:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Wenn Sie den deb-src-Eintrag einfach aus der Datei /etc/apt/sources.list löschen, sollte die Installation wie erwartet funktionieren.

  • Aktualisieren Sie den Paketindex, um das neue Repository einzuschließen:
  • Installieren Sie Logstash mit dem APT-Paketmanager:

sudo apt-get install logstash

  • Starten Sie Logstash und aktivieren Sie den automatischen Start beim Booten:

sudo systemctl start logstash


sudo systemctl enable logstash

Logstash ist nun installiert und läuft auf Ihrem System.

Für YUM-basierte Systeme (CentOS/RHEL)

  • Öffentlichen Signierschlüssel für das Logstash-Repository herunterladen und installieren:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

  • Erstellen Sie eine Repository-Datei für Logstash in /etc/yum.repos.d/:
    Zum Beispiel können Sie eine Datei namens logstash.repo erstellen. Sie können den folgenden Inhalt kopieren und einfügen, um die Datei zu erstellen und zu aktualisieren:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <

Das Repository ist nun einsatzbereit.

  • Installieren Sie Logstash mit dem YUM-Paketmanager:
  • Starten Sie Logstash und aktivieren Sie den automatischen Start beim Booten:

sudo systemctl start logstash


sudo systemctl enable logstash

Logstash ist nun installiert und läuft auf Ihrem System.

Schritt 2 – Installation des OpenSearch-Output-Plugins

Sie können das OpenSearch-Output-Plugin installieren, indem Sie den folgenden Befehl ausführen:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Weitere Informationen zu diesem Plugin finden Sie im Logstash-Output-OpenSearch-Plugin-Repository.

Schritt 3 – Konfiguration von Logstash zur Weiterleitung von Nginx-Logs an OpenSearch

Eine Logstash-Pipeline besteht aus drei Hauptphasen: Input, Filter und Output. Logstash-Pipelines verwenden Plugins. Sie können Community-Plugins nutzen oder eigene erstellen.

  • Input: Diese Phase sammelt Daten aus verschiedenen Quellen. Logstash unterstützt zahlreiche Input-Plugins, um Daten aus Log-Dateien, Datenbanken, Nachrichtenwarteschlangen und Cloud-Diensten zu verarbeiten.
  • Filter: Diese Phase verarbeitet und transformiert die in der Input-Phase gesammelten Daten. Filter können Daten modifizieren, anreichern und strukturieren, um sie nützlicher und leichter analysierbar zu machen.
  • Output: Diese Phase sendet die verarbeiteten Daten an ein Ziel. Ziele können Datenbanken, Dateien oder Datenspeicher wie OpenSearch sein.

Nun erstellen wir eine Pipeline.

1. Erstellen der Logstash-Konfigurationsdatei

Erstellen Sie eine Logstash-Konfigurationsdatei unter /etc/logstash/conf.d/nginx-to-opensearch.conf mit folgendem Inhalt:

input { 
  file { 
    path => "/var/log/nginx/access.log" 
    start_position => "beginning" 
    sincedb_path => "/dev/null" 
    tags => ["nginx_access"] 
  } 
  file { 
    path => "/var/log/nginx/error.log" 
    start_position => "beginning" 
    sincedb_path => "/dev/null" 
    tags => ["nginx_error"] 
  } 
} 

filter { 
  if "nginx_access" in [tags] { 
    grok { 
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" } 
    } 
    mutate { 
      remove_field => ["message", "[log][file][path]", "[event][original]"] 
    } 
  } 
  else if "nginx_error" in [tags] { 
    grok { 
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" } 
    } 
    mutate { 
      remove_field => ["message", "[log][file][path]", "[event][original]"] 
    } 
  } 
} 

output { 
  if "nginx_access" in [tags] { 
    opensearch { 
      hosts => ["https://:25060"] 
      user => "doadmin" 
      password => "" 
      index => "nginx_access-%{+YYYY.MM.dd}" 
      ssl => true 
      ssl_certificate_verification => true 
    } 
  } 
  else if "nginx_error" in [tags] { 
    opensearch { 
      hosts => ["https://:25060"] 
      user => "doadmin" 
      password => "" 
      index => "nginx_error-%{+YYYY.MM.dd}" 
      ssl => true 
      ssl_certificate_verification => true 
    } 
  } 
}

Ersetzen Sie:

  • OpenSearch-Hostname mit dem Hostnamen Ihres OpenSearch-Servers.
  • <your_password> mit Ihrem OpenSearch-Passwort.

2. Neue Konfiguration anwenden

Starten Sie Logstash neu, um die neue Konfiguration anzuwenden:

sudo systemctl restart logstash

3. Logstash-Logs überprüfen

Stellen Sie sicher, dass Logstash die Daten korrekt verarbeitet und weiterleitet:

sudo tail -f /var/log/logstash/logstash-plain.log

Aufschlüsselung der Konfigurationsdatei nginx-to-opensearch.conf

INPUT

Der Input-Block konfiguriert zwei Datei-Inputs, um Logs zu lesen:

  • Nginx-Logs:
    • Pfade: /var/log/nginx/access.log (für Zugriffs-Logs) und /var/log/nginx/error.log (für Fehler-Logs).
    • Startposition: beginning – Liest ab Beginn der Log-Dateien.
    • Sincedb-Pfad: /dev/null – Deaktiviert die Nachverfolgung für kontinuierliches Lesen.
    • Tags: ["nginx_access"] für Zugriffs-Logs, ["nginx_error"] für Fehler-Logs.

Hinweis: Stellen Sie sicher, dass der Logstash-Dienst Zugriff auf die angegebenen Pfade hat.

FILTER

Der Filterblock verarbeitet Logs basierend auf ihren Tags:

  • Logverarbeitung:
    • Zugriffs-Logs: Verwendet einen Grok-Filter, um das Format der Zugriffs-Logs zu analysieren und Felder wie client_ip, timestamp, method, request, http_version, response, bytes, referrer und user_agent zu extrahieren. Entfernt die ursprüngliche Nachricht und bestimmte Metadatenfelder.
    • Fehler-Logs: Überprüft das Tag nginx_error und wendet einen Grok-Filter an, um Felder wie timestamp, level, pid, tid und error_message zu extrahieren. Entfernt ebenfalls die Nachricht und Metadatenfelder.

OUTPUT

Der Output-Block leitet Ereignisse basierend auf ihren Tags an OpenSearch weiter:

  • Weiterleitung an OpenSearch: Für Zugriffs- und Fehler-Logs werden folgende Einstellungen definiert:
    • Hosts: URL der OpenSearch-Instanz.
    • Benutzer: doadmin zur Authentifizierung.
    • Passwort: Ihr OpenSearch-Passwort.
    • Index: nginx_access-%{+YYYY.MM.dd} für Zugriffs-Logs und nginx_error-%{+YYYY.MM.dd} für Fehler-Logs.
    • SSL-Einstellungen: Aktiviert SSL und Zertifikatsprüfung.

Schritt 4 – OpenSearch konfigurieren

  1. Öffnen Sie Ihren Webbrowser und rufen Sie die OpenSearch-Dashboard-URL auf:

https://<OpenSearch-Hostname>

Ersetzen Sie OpenSearch-Hostname mit dem Hostnamen Ihres OpenSearch-Servers.

  1. Erstellen Sie ein Index-Pattern:
    • Gehen Sie in der linken Seitenleiste zu Management > Dashboard Management > Index Patterns.
    • Klicken Sie oben rechts auf Create index pattern.
    • Geben Sie nginx_access-* oder nginx_error-* als Index-Pattern ein, um alle von Logstash erstellten Indizes zu erfassen, und klicken Sie auf Next step.
    • Klicken Sie auf Create index pattern.
  2. Stellen Sie sicher, dass das Index-Pattern erfolgreich erstellt wurde und in der Liste der Index Patterns sichtbar ist.
  3. Gehen Sie in der linken Seitenleiste zu Discover und wählen Sie das erstellte Index-Pattern (nginx_access-* oder nginx_error-*).
  4. Überprüfen Sie, ob die Log-Einträge sichtbar und korrekt indiziert sind.
  5. Erstellen Sie Visualisierungen und Dashboards.

Fehlersuche

Verbindung überprüfen

Sie können überprüfen, ob Logstash eine Verbindung zu OpenSearch herstellen kann, indem Sie die Konnektivität testen:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

Ersetzen Sie:

  • OpenSearch-Hostname mit dem Hostnamen Ihres OpenSearch-Servers.
  • <your_password> mit Ihrem OpenSearch-Passwort.

Datenaufnahme

Sie können sicherstellen, dass die Daten in OpenSearch ordnungsgemäß indiziert werden, indem Sie den folgenden curl-Befehl ausführen:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

Ersetzen Sie:

  • OpenSearch-Hostname mit dem Hostnamen Ihres OpenSearch-Servers.
  • <your_password> mit Ihrem OpenSearch-Passwort.

Firewall- und Netzwerkkonfiguration

Stellen Sie sicher, dass die Firewall-Regeln und Netzwerkeinstellungen den Datenverkehr zwischen Logstash und OpenSearch auf Port 25060 zulassen.

Fazit

In diesem Leitfaden haben Sie gelernt, wie Sie Logstash einrichten, um Nginx-Logs zu sammeln und an OpenSearch weiterzuleiten.

Sie haben gelernt, wie Sie mit apt oder yum Paketmanagern – abhängig von Ihrer Linux-Distribution – Logstash auf Ihrer ccloud³ VM installieren. Zudem haben Sie die Logstash-Konfigurationsdatei erstellt und angepasst, um sicherzustellen, dass Nginx-Logs korrekt analysiert und an OpenSearch gesendet werden.

Anschließend haben Sie in den OpenSearch Dashboards ein Index-Pattern erstellt, um sicherzustellen, dass die Logs ordnungsgemäß indiziert werden und für die Analyse sichtbar sind. Mit diesen Schritten haben Sie nun ein funktionierendes Setup, bei dem Logstash Nginx-Logs sammelt und an OpenSearch sendet.

Dieses Setup ermöglicht Ihnen die Nutzung der leistungsstarken Such- und Visualisierungstools von OpenSearch zur Analyse Ihrer Server-Logs.

Falls Probleme auftreten, schauen Sie sich die bereitgestellten Tipps zur Fehlerbehebung an und konsultieren Sie die Logstash– und OpenSearch-Dokumentation für weitere Unterstützung. Regelmäßige Überwachung sorgt dafür, dass Ihr Logging-System reibungslos und effizient läuft.

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: