Einleitung
Effektive Verwaltung von Webserver-Logs ist entscheidend für die Wartung der Website-Leistung, das Trouble-Shooting von Problemen und das Erlangen von Einblicken in das Nutzerverhalten. Apache ist einer der beliebtesten Webserver. Er generiert Zugangs- und Fehlerlogs, die wertvolle Informationen enthalten. Um diese Logs effizient zu verwalten und zu analysieren, kannst du Logstash verwenden, um sie zu verarbeiten und an DigitalOcean’s Managed OpenSearch zu senden, wo sie indiziert und visualisiert werden.
In diesem Tutorial führen wir dich durch die Installation von Logstash auf einem Droplet, die Konfiguration zur Sammlung deiner Apache-Logs und den Versand an Managed OpenSearch zur Analyse.
Voraussetzungen
- Droplet/s mit installiertem Apache-Webserver.
- Managed OpenSearch-Cluster
Schritt 1 – Installation von Logstash
Logstash kann entweder über die binären Dateien installiert werden oder über die Paket-Repositories. Für eine einfache Verwaltung und Updates ist es generell empfehlenswert, Paket-Repositories zu verwenden.
In diesem Abschnitt werden wir Ihnen dabei begleiten, Logstash auf Ihrem Droplet mit den APT und YUM Paketmanagern zu installieren.
Lassen Sie uns zunächst die Betriebssystem-Art bestimmen:
Für APT-basierte Systeme (Ubuntu/Debian)
Laden Sie die öffentliche Signaturschlüssel herunter und installieren Sie diese:
Es ist möglicherweise notwendig, das Paket apt-transport-https
auf Debian zu installieren, bevor Sie fortfahren:
Speichern Sie die Repository-Definition in /etc/apt/sources.list.d/elastic-8.x.list
:
Verwenden Sie die oben beschriebene echo
-Methode, um das Logstash-Repository hinzuzufügen. Verwenden Sie nicht add-apt-repository
, da es auch eine deb-src
-Eintrag hinzufügt, aber wir stellen kein Quellpaket bereit. Wenn Sie den deb-src
-Eintrag hinzugefügt haben, sehen Sie einen Fehler wie folgendes:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Löschen Sie den deb-src
-Eintrag aus der Datei /etc/apt/sources.list
und die Installation sollte wie erwartet funktionieren.
Führen Sie sudo apt-get update
aus, und das Repository ist bereit für die Verwendung. Sie können es mit folgendem Befehl installieren:
Für YUM-basierte Systeme (CentOS/RHEL)
Laden und installieren Sie die öffentliche Signaturschlüssel:
Fügen Sie die folgenden Einträge Ihrer Datei /etc/yum.repos.d/logstash.repo
hinzu. Sie können den Befehl ‘tee’ verwenden, um die Datei zu aktualisieren und zu erstellen.
Ihr Repository ist bereit für die Nutzung. Sie können es mit installieren:
Weitere Informationen finden Sie im Leitfaden zur Installation von Logstash.
Schritt 2 – Konfigurieren von Logstash, um Protokolle in OpenSearch zu senden
Ein Logstash-Pipeline besteht aus drei Hauptschritten: Eingang, Filter und Ausgang. Logstash-Pipelines verwenden Plugins. Sie können Community-Plugins verwenden oder eigenen Plugins erstellen.
-
Eingang: In diesem Schritt wird Daten aus verschiedenen Quellen erfasst. Logstash unterstützt zahlreiche Eingangs-Plugins, um Datenquellen wie Logdateien, Datenbanken, Meldequeues und Clouddienste zu verwalten.
-
Filter: In diesem Stadium werden die im Eingangsstadium gesammelten Daten verarbeitet und transformiert. Filter können die Daten modifizieren, ergänzen und strukturieren, um sie nützlicher und einfacher zu analysieren.
-
Ausgabe: In diesem Stadium werden die verarbeiteten Daten an einen Bestimmungsort gesendet. mögliche Ziele sind Datenbanken, Dateien und Datenspeicher wie OpenSearch.
Schritt 3 – Installation der Open Search Ausgabemoduls
Das OpenSearch-Ausgabemodul kann installiert werden, indem Sie den folgenden Befehl ausführen:
Weitere Informationen finden Sie in diesem logstash-output-opensearch-plugin-Repository.
Jetzt erstellen wir eine Pipeline:
Erstellen Sie ein neues Datei im Verzeichnis /etc/logstash/conf.d/ mit dem Namen apache_pipeline.conf
und fügen Sie folgenden Inhalt hinzu.
Ersetzen Sie <OpenSearch_Host>
mit dem Hostnamen Ihres OpenSearch-Servers und <OpenSearch_Password>
mit Ihrem OpenSearch-Passwort.
Lassen Sie uns die obige Konfiguration aufteilen.
-
EINGABE: Dies wird verwendet, um eine Quelle für Ereignisse einzurichten. Der ‚datei‘ Eingabemodul wird hier verwendet.
-
pfad => “/var/log/apache2/access.log” : Gibt den Pfad zum Apache-Zugriffsprotokolldatei an, die Logstash ausliest.
Stellen Sie sicher, dass der Logstash-Dienst auf die Eingabepfad zugreifen kann.
-
startposition => “beginning”: Definiert, wo Logstash beginnen soll, die Protokolldatei zu lesen. “beginning” bedeutet, dass Logstash die Datei am Anfang bearbeitet, anstatt am Ende.
-
sincedb_path => “/dev/null”: Gewährt den Pfad zu einer sincedb-Datei. Sincedb-Dateien werden von Logstash verwendet, um den aktuellen position in log-Dateien zu verwalten, was es ermöglicht, bei Neustarts oder Fehlern fortzufahren, wo es aufgehört hat.
-
tags => “apache_access”: Fügt Events, die von diesem Input gelesen werden, einer Tag. Tags sind nützlich für die Identifizierung und Filterung von Ereignissen innerhalb von Logstash und werden oft in den Ausgaben oder Filterstufen der Konfiguration verwendet. Wir verwenden Tags für letzteres.
-
FILTER: wird verwendet, um die Ereignisse zu verarbeiten.
Beginnend mit Bedingungen:
Dies überprüft, ob das Tag
apache_access
im [tags]-Feld der eingehenden Protokollereignisse vorhanden ist. Wir verwenden diese Bedingung, um den entsprechenden GROK-Filter für Apache Access- und Fehlerprotokolle anzuwenden. -
Grok-Filter (für Apache-Zugriffslogs):
Das Grok-Filter
%{HTTPD_COMBINEDLOG}
ist ein vordefiniertes Muster in Logstash, das zum Parsen des Apache-Kombinierten Zugriffslogformats verwendet wird. Dies extrahiert Felder wie IP-Adresse, Zeitstempel, HTTP-Methode, URL, Status-Code etc. aus dem Nachrichtenfeld von eingehenden Ereignissen. -
Mutationsfilter
Entfernen
(optional): Nach der Analyse der Apache-Logdateien verwenden wir mutate-remove, um bestimmte Felder zu entfernen. -
Andere Bedingung: Der else-Block wird ausgeführt, wenn das
apache_access
-Tag in den [tags] nicht enthalten ist. Dieser else-Block enthält einen weiteren GROK-Filter für Apache-Fehlerprotokolle.Dieser grok-Filter
%{HTTPD24_ERRORLOG}
parsed Nachrichten, die auf das Apache-Fehlerprotokollformat passen. Er extrahiert Felder, die für Fehlerprotokolle relevant sind, wie Zeitstempel, Protokollierungsstufe, Fehlernachricht usw.GROK-Muster können unter folgendem Link gefunden werden: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
-
OUTPUT: Das Ausgabe-Plugin sendet Ereignisse an einen bestimmten Zielort.
Der Ausgabe-Block beginnt mit einer If-Bedingung. Wir verwenden hier If-Bedingungen
apache_error und apache_access
.Wir erkunden das OpenSearch-Ausgabe-Plugin:
hosts => "https://XXX:25060" Ihr OpenSearch-Hostname user => "doadmin" Ihr OpenSearch-Benutzername password => "XXXXX" OpenSearch-Passwort index => "apache_error" Indexname in OpenSearch ssl_certificate_verification => true SSL-Zertifikatsüberprüfung aktiviert
Schritt 4 – Starten von Logstash
Sobald die Pipeline konfiguriert ist, starten Sie den Logstash-Dienst:
Schritt 5 – Fehlerbehebung
Prüfen Sie die Verbindung
Sie können überprüfen, ob Logstash sich mit OpenSearch verbinden kann, indem Sie die Verbindung testen:
Ersetzen Sie <your-opensearch-server> mit dem Hostnamen Ihres OpenSearch-Servers und <your_username>, <your_password> mit Ihren OpenSearch-Anmeldedaten.
Dateningestion
Stellen Sie sicher, dass Daten ordnungsgemäß in OpenSearch indiziert werden:
Ersetzen Sie <your-opensearch-server> mit dem Hostnamen Ihres OpenSearch-Servers und <your_username>, <your_password> mit Ihren OpenSearch-Anmeldedaten. Ebenso <your-index-name> mit dem Index-Namen.
Firewall und Netzwerkeinstellungen
Stellen Sie sicher, dass die Firewall-Regeln und die Netzwerkeinstellungen den Verkehr zwischen Logstash und OpenSearch auf Port 25060
zulassen.
Protokolle
Die Protokolle von Logstash finden Sie unter /var/log/logstash/logstash-plain.log
Weitere Informationen entnehmen Sie dem Fehlerbehebung-Abschnitt.
Fazit
In diesem Leitfaden haben wir durchgeführt, wie man Logstash einrichtet, um Apache-Protokolle zu sammeln und an OpenSearch weiterzuleiten. Hier ist ein kurzer Zusammenfassung dessen, was wir behandelt haben:
Installieren von Logstash: Wir haben erklärt, wie Sie Logstash mithilfe entweder des APT- oder YUM-Paketmanagers installieren können, je nach Ihrer Linux-Distribution, auf Ihrem Droplet.
Einstellen von Logstash: Wir haben eine Logstash-Konfigurationsdatei erstellt und verändert, um sicherzustellen, dass Apache-Protokolle korrekt verarbeitet und an OpenSearch weitergeleitet werden.
Überprüfen in OpenSearch: Wir haben in OpenSearch Dashboards ein Indexmuster eingerichtet, um sicherzustellen, dass Ihre Protokolle korrekt indiziert werden und für die Analyse sichtbar sind.
Nach Abschluss dieser Schritte sollten Sie nun eine funktionelle Einrichtung haben, in der Logstash Apache-Protokolle sammelt und an OpenSearch sendet.
Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash