Konfigurieren von Logstash auf Droplettern, um Nginx-Logs an geführten OpenSearch weiterzuleiten

Einführung

Die Überwachung der Webserverlogs ist entscheidend, um Ihre Webseite flott zu halten, Probleme zu lösen und das Nutzerverhalten zu verstehen. Wenn Sie Nginx verwenden, erzeugt es Zugriffs- und Fehlerlogs, die viel wertvolle Informationen enthalten. Um diese Logs zu verwalten und zu analysieren, können Sie Logstash verwenden, um sie zu verarbeiten und weiterzuleiten, und DigitalOcean’s Managed OpenSearch, um die Daten zu indizieren und可视化する.

In diesem Leitfaden gehen wir Ihnen durch die Installation von Logstash auf einem Droplet, die Konfiguration zur Sammlung Ihrer Nginx-Logs und die Übertragung an das DigitalOcean Managed OpenSearch vor.

Voraussetzungen

Anwendungsfall

Du könntest diese Einrichtung brauchen, wenn du:

  • Monitoring und Fehlerbehebung: Web-Server-Leistung und Fehler analysieren, indem aktuelle Logdateien untersucht werden.
  • Leistungsanalyse: Einblicke in die Web-Traffic-Muster und Server-Metriken erhalten.
  • Logging zentralisieren: Logdateien von mehreren Nginx-Servern in einer einzigen OpenSearch-Instanz aggregieren, um einfacher verwalten zu können.

Hinweis: Die Einrichtungszeit sollte etwa 30 Minuten dauern.

Schritt 1 – Installieren von Logstash auf Droplets

Logstash kann mit Hilfe von binaeren Dateien, die hier verfügbar sind, oder Paket-Repositories, die für Ihr Betriebssystem angepasst sind, installiert werden. Für eine einfache Verwaltung und Updates ist die Verwendung von Paket-Repositories im Allgemeinen empfehlenswert. Sie können den APT-Paket-Manager auf Debian-basierten Systemen wie Ubuntu verwenden, während Sie auf Red Hat-basierten Systemen wie CentOS oder RHEL yum verwenden können. Beide Methoden gewährleisten, dass Logstash ordnungsgemäß in Ihre Systempaketverwaltung integriert wird, was die Installation und Wartung vereinfacht.

In diesem Abschnitt werden wir Ihnen durch die Installation von Logstash mit beiden apt und yum Paketmanagern geführt, sodass Sie Logstash auf Ihrem Droplet egal welcher Linux-Distribution konfigurieren können.

Um das Betriebssystem zu finden, führen Sie folgenden Befehl aus:

cat /etc/os-release

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

1. Laden und installieren Sie den öffentlichen Signaturschlüssel:

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

2. Installieren Sie apt-transport-https, falls es noch nicht installiert ist:

sudo apt-get install apt-transport-https

3. Fügen Sie der apt-Quellliste den Logstash-Repository-Eintrag hinzu und speichern Sie ihn:

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: Stelle sicher, dass du add-apt-repository-Befehle nicht verwendest, da sie eine deb-src-Eintragung hinzufügen könnten, die nicht unterstützt wird. Wenn du mit einem deb-src-Eintrag zusammenhängenden Fehler aufgegriffen bist, lösche ihn aus der Datei /etc/apt/sources.list. Wenn du den deb-src-Eintrag hinzugefügt hast, zeigt ein Fehler wie folgendes an:

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

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

4. Aktualisiere den Paketindex, um das neue Repository zu integrieren:

sudo apt-get update

5. Installiere Logstash mit dem apt-Paketmanager:

sudo apt-get install logstash

6. Starte Logstash und aktiviere es, damit es bei jedem Neustart automatisch gestartet wird:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash ist nun auf deinem System installiert und laufend.

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

1. Lade und installiere den öffentlichen Signaturschlüssel für das Logstash-Repository:

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

2. Erstelle eine Repositorydatei für Logstash in /etc/yum.repos.d/. Zum Beispiel kannst du eine Datei namens logstash.repo erzeugen. Du kannst den folgenden Inhalt kopieren und einfügen, um die Datei zu erstellen und den Inhalt zu aktualisieren:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Das Repository ist bereit zu verwenden.

3. Installiere Logstash mit dem YUM-Paketmanager:

sudo yum install logstash

4. Starte Logstash und aktiviere es, damit es bei jedem Neustart automatisch gestartet wird:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash ist nun installiert und auf Ihrem System ausgeführt.

Schritt 2 – Installation des Open Search Output Plugins

Sie können das OpenSearch-Ausgabeplugin mithilfe des folgenden Befehls installieren:

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

Weitere Informationen über das Plugin finden Sie auf diesem logstash-output-opensearch-PluginkRepository.

Schritt 3 – Konfigurieren von Logstash, um Nginx-Protokolle an OpenSearch zu senden

Ein Logstash-Pipeline besteht aus drei Hauptstufen: Eingabe, Filterung und Ausgabe. Logstash-Pipelines nutzen Plugins. Sie können Community-Plugins verwenden oder eigenen erstellen.

  • Eingabe: In dieser Phase erfasst Logstash Daten aus verschiedenen Quellen. Logstash unterstützt zahlreiche Eingabeplugins, um Datenquellen wie Logdateien, Datenbanken, Meldezeichen und Clouddienstleistungen zu verwalten.
  • Filterung: In dieser Phase wird die in der Eingabestufe erfasste Daten verarbeitet und verändert. Filter können die Daten verändern, vervollständigen und strukturieren, um sie nützlicher und einfacher analysierbar zu machen.
  • Ausgabe: In diesem Abschnitt werden die verarbeiteten Daten an eine Zieladresse gesendet. Ziele können Datenbanken, Dateien und DatenSpeicher wie OpenSearch sein.

Nun erstellen wir einen Pipeline.

1. Erstellen Sie ein 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://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_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. Aktualisieren Sie die neue Konfiguration, indem Sie Logstash neu starten:

sudo systemctl restart logstash

3. Prüfen Sie die Logstash-Logs, um sicherzugehen, dass Daten korrekt verarbeitet und weitergeleitet werden:

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

Ausführliche Beschreibung der nginx-to-opensearch.conf-Konfiguration

EINGABE

Der input-Block konfiguriert zwei Dateieingaben, um Logdateien zu lesen:

Nginx-Logs:
Pfade:
/var/log/nginx/access.log (für Zugriffslogs)
/var/log/nginx/error.log (für Fehlerlogs)
Startposition: beginning – Liest von der Anfangszelle der Logdateien aus.
Sincedb-Pfad: /dev/null – Deaktiviert die Tracking-Funktion für kontinuierliches Lesen.
Tags:
["nginx_access"] für Zugriffslogs
["nginx_error"] für Fehlerlogs

Hinweis: Stellen Sie sicher, dass der Logstash-Dienst auf die Eingabepfade zugreifen kann.

FILTER

Der filter-Block verarbeitet Logs auf Basis ihrer Markierungen:

Log Verarbeitung:
Zugriffsprotokolle:
Verwendet ein grok-Filter, um das Zugriffsprotokollformat zu parsen und Felder wie client_ip, timestamp, method, request, http_version, response, bytes, referrer und user_agent herauszufiltern.
Entfernt das ursprüngliche message-Feld und bestimmte Metadatenfelder.

Fehlerprotokolle:
Sucht nach der nginx_error-Markierung und verwendet ein grok-Filter, um Felder wie timestamp, level, pid, tid und error_message herauszufiltern.
Entfernt auch das message-Feld und die Metadatenfelder.

OUTPUT

Der output-Block leitet Ereignisse an OpenSearch weiter, basierend auf ihren Markierungen:

Weiterleitung an OpenSearch:
Bei sowohl Zugriffs- als auch Fehlerprotokollen wird festgelegt:
Hosts: URL der OpenSearch-Instanz.
User: doadmin für die Authentifizierung.
Password: Ihr OpenSearch-Passwort.
Index:
nginx_access-%{+YYYY.MM.dd} für Zugriffsprotokolle
nginx_error-%{+YYYY.MM.dd} für Fehlerprotokolle
SSL-Einstellungen: Aktiviert SSL und Zertifikatüberprüfung.

Schritt 4 – OpenSearch einrichten

1.Öffnen Sie Ihren Webbrowser und navigieren Sie zu der URL des OpenSearch-Dashboards:

https://<OpenSearch-Hostname>

Ersetzen Sie OpenSearch-Hostname durch den Hostnamen Ihres OpenSearch-Servers.

2.Erstellen Sie ein Indexmuster.
a. Navigieren Sie linksseitig zu Verwaltung > Dashboard-Verwaltung > Indexmuster.
b. Klicken Sie oben rechts auf Indexmuster erstellen.
c. Geben Sie nginx_access-* oder nginx_error-* als Indexmuster ein, um alle Indizes, die von Logstash erstellt wurden, abzubilden, und klicken Sie auf Nächster Schritt.
d. Klicken Sie auf Indexmuster erstellen.

3.Stellen Sie sicher, dass das Indexmuster erfolgreich erstellt und in der Liste der Indexmuster sichtbar ist.

4.Gehen Sie linksseitig zu Entdecken und wählen Sie das von Ihnen erstellte Indexmuster (nginx_access-* oder nginx_error-*). Prüfen Sie, dass Logeinträge sichtbar sind und korrekt indiziert wurden.

5.Erstellen Sie Visualisierungen und Dashboards. Besuchen Sie Wie man ein Dashboard in OpenSearch erstellt für weitere Informationen.

Fehlerbehebung

Verbindung prüfen

Du kannst überprüfen, ob Logstash mit OpenSearch verbunden werden kann, indem du die Verbindung testen:

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

Ersetze:

  • OpenSearch-Hostname mit dem Hostnamen deines OpenSearch-Servers.
  • <your_password> mit deinem OpenSearch-Passwort.

Daten Ingestion

Du kannst sicherstellen, dass die Daten korrekt in OpenSearch indiziert werden, indem du folgendes curl-Befehl verwendest:

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

Ersetze:

  • OpenSearch-Hostname mit dem Hostnamen deines OpenSearch-Servers.
  • <your_password> mit deinem OpenSearch-Passwort.

Firewall und Netzwerkskonfiguration

Stelle sicher, dass die Firewall-Regeln und die Netzwerksettings den Verkehr zwischen Logstash und OpenSearch auf Port 25060 zulassen.

Schlussfolgerung

In diesem Leitfaden hast du gelernt, Logstash einzurichten, um Nginx-Logdateien zu sammeln und an OpenSearch weiterzuleiten.

Du hast beschrieben, wie du die Paketverwaltungen apt oder yum verwendest, je nach deiner Linux-Distribution, um Logstash auf deinem Droplet zu installieren. Du hast auch die Logstash-Konfigurationsdatei erstellt und angepasst, um sicherzustellen, dass die Nginx-Logdateien korrekt verarbeitet und an OpenSearch gesendet werden. Anschließend hast du in OpenSearch Dashboards einen Index-Muster eingerichtet, um zu überprüfen, dass die Logdateien ordnungsgemäß indexiert werden und für die Analyse sichtbar sind.Nach Abschluss dieser Schritte solltest du nun eine funktionierende Einrichtung haben, in der Logstash Nginx-Logdateien sammelt und an OpenSearch sendet. Diese Einrichtung ermöglicht es dir, die leistungsstarken Suche und Visualisierungs工具 von OpenSearch zu verwenden, um deine Serverlogs zu analysieren.

Wenn du auf Probleme stößt, schaue dir die Fehlerbehebung-Tipps an, die wir bereitgestellt haben, und beziehe dich auf die Logstash– und OpenSearch-Dokumentation für weitere Hilfe. Der regelmäßige Überwachung sorgt dafür, dass das Logging-System flüssig und effektiv läuft.

Source:
https://www.digitalocean.com/community/tutorials/forward-nginx-logs-to-opensearch-using-logstash