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:
cat /etc/os-release
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:
sudo apt-get update
- 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 namenslogstash.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:
sudo yum 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.
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.
- Pfade:
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
unduser_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 wietimestamp
,level
,pid
,tid
underror_message
zu extrahieren. Entfernt ebenfalls die Nachricht und Metadatenfelder.
- Zugriffs-Logs: Verwendet einen Grok-Filter, um das Format der Zugriffs-Logs zu analysieren und Felder wie
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 undnginx_error-%{+YYYY.MM.dd}
für Fehler-Logs. - SSL-Einstellungen: Aktiviert SSL und Zertifikatsprüfung.
Schritt 4 – OpenSearch konfigurieren
- Ö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.
- 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-*
odernginx_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.
- Stellen Sie sicher, dass das Index-Pattern erfolgreich erstellt wurde und in der Liste der Index Patterns sichtbar ist.
- Gehen Sie in der linken Seitenleiste zu Discover und wählen Sie das erstellte Index-Pattern (
nginx_access-*
odernginx_error-*
). - Überprüfen Sie, ob die Log-Einträge sichtbar und korrekt indiziert sind.
- 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.