Effektives Webserver-Log-Management mit Logstash und OpenSearch
Effektives Webserver-Log-Management ist entscheidend für die Aufrechterhaltung der Leistung Ihrer Website, die Fehlerbehebung und das Gewinnen von Einblicken in das Nutzerverhalten. Apache ist einer der beliebtesten Webserver. Er generiert Zugriffs- und Fehlerprotokolle, die wertvolle Informationen enthalten.
In diesem Tutorial führen wir Sie durch die Installation von Logstash auf einem Droplet, die Konfiguration zur Erfassung Ihrer Apache-Protokolle und das Senden dieser an Managed OpenSearch zur Analyse.
Voraussetzungen
- Droplet/s mit installiertem Apache-Webserver.
- Managed OpenSearch Cluster
Schritt 1 – Installation von Logstash
Logstash ist entweder mit den Binärdateien ODER über die Paket-Repositories installierbar. Zur einfacheren Verwaltung und Aktualisierung wird generell die Nutzung der Paket-Repositories empfohlen.
In diesem Abschnitt zeigen wir Ihnen die Installation von Logstash auf Ihrem Droplet mit APT- und YUM-Paketmanagern.
Zunächst das Betriebssystem identifizieren:
cat /etc/os-release
Für APT-basierte Systeme (Ubuntu/Debian)
Laden Sie den Public Signing Key herunter und installieren Sie ihn:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
Eventuell müssen Sie das Paket apt-transport-https auf Debian installieren:
sudo apt-get install apt-transport-https
Speichern Sie die Repository-Definition unter /etc/apt/sources.list.d/elastic-8.x.list:
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
Verwenden Sie die Echo-Methode, um das Logstash-Repository hinzuzufügen – nicht add-apt-repository
. Dieses fügt nämlich auch einen deb-src-Eintrag hinzu, obwohl kein Quellpaket bereitgestellt wird. Falls der deb-src
-Eintrag hinzugefügt wurde, kann ein Fehler wie der folgende auftreten:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Dann entfernen Sie die deb-src-Eintragung aus der Datei /etc/apt/sources.list.
Führen Sie ein Update durch und installieren Sie Logstash:
sudo apt-get update && sudo apt-get install logstash
Für YUM-basierte Systeme (CentOS/RHEL)
Öffentlichen Signaturschlüssel herunterladen und installieren:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Fügen Sie die folgende Konfiguration in Ihre Datei /etc/yum.repos.d/logstash.repo ein. Verwenden Sie tee
, um die Datei zu erstellen und zu aktualisieren.
sudo tee /etc/yum.repos.d/logstash.repo > /dev/null
Installieren Sie Logstash:
sudo yum install logstash
Weitere Informationen finden Sie im Logstash-Installationshandbuch.
Schritt 2 – Logstash zur Übertragung von Logs an OpenSearch konfigurieren
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 für Datenquellen wie Logdateien, Datenbanken, Message Queues und Cloud-Dienste.
Filter
Diese Phase verarbeitet und transformiert die gesammelten Daten. Filter können Daten ändern, anreichern und strukturieren, um sie nutzbarer und einfacher analysierbar zu machen.
Output
Diese Phase sendet die verarbeiteten Daten an ein Ziel, wie Datenbanken, Dateien oder Datenspeicher wie OpenSearch.
Schritt 3 – Installation des OpenSearch Output Plugins
Das OpenSearch Output Plugin kann mit folgendem Befehl installiert werden:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Weitere Informationen finden Sie im logstash-output-opensearch Plugin Repository.
Erstellen einer Logstash-Pipeline
Erstellen Sie eine neue Datei unter /etc/logstash/conf.d/
mit dem Namen apache_pipeline.conf
und kopieren Sie den folgenden Inhalt:
input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://:25060"
user => "doadmin"
password => ""
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://:25060"
user => "doadmin"
password => ""
index => "apache_error"
ssl_certificate_verification => true
}
}
}
Ersetzen Sie
<OpenSearch-Hostname>
mit Ihrem OpenSearch-Server und <Ihr_Passwort>
mit Ihrem OpenSearch-Passwort.
Verständnis der Konfiguration
INPUT
Dieser Abschnitt dient zur Konfiguration einer Quelle für die Ereignisse. Das file
-Input-Plugin wird hier verwendet.
path => "/var/log/apache2/access.log"
: Gibt den Pfad zur Apache-Zugriffsprotokolldatei an, die Logstash lesen soll.- Stellen Sie sicher, dass der Logstash-Dienst Zugriff auf den Eingabepfad hat.
start_position => "beginning"
: Definiert, wo Logstash mit dem Lesen der Logdatei beginnen soll. „beginning“ bedeutet, dass Logstash die Datei von Anfang an verarbeitet.sincedb_path => "/dev/null"
: Gibt den Pfad zu einer sincedb-Datei an, die die zuletzt gelesene Position speichert.tags => "apache_access"
: Weist den von dieser Eingabe gelesenen Ereignissen ein Tag zu, das später für die Filterung nützlich ist.
FILTER
Filter verarbeiten und transformieren Ereignisse.
Bedingte Verarbeitung
if "apache_access" in [tags]
: Dies überprüft, ob das Tag apache_access
im Ereignis vorhanden ist, und wendet den entsprechenden GROK-Filter an.
Grok-Filter für Apache-Zugriffsprotokolle
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
Der %{HTTPD_COMBINEDLOG}
-Grok-Filter extrahiert Felder wie IP-Adresse, Zeitstempel, HTTP-Methode, URI und Statuscode.
Mutate-Filter
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
Dieser Filter entfernt unnötige Felder nach der Protokollverarbeitung.
Grok-Filter für Apache-Fehlerprotokolle
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
Dieser Filter extrahiert strukturierte Felder aus den Apache-Fehlerprotokollen.
OUTPUT
Das Output-Plugin sendet Ereignisse an ein bestimmtes Ziel.
Routing von Logs an OpenSearch
if "apache_access" in [tags] {
opensearch {
hosts => "https://XXX:25060"
user => "doadmin"
password => "XXXXX"
index => "apache_access"
ssl_certificate_verification => true
}
}
hosts
: Gibt den OpenSearch-Server an.user
: Benutzername für die Authentifizierung.password
: Passwort für die Authentifizierung.index
: Definiert den OpenSearch-Index, in dem die Protokolle gespeichert werden.ssl_certificate_verification => true
: Aktiviert die SSL-Zertifikatsüberprüfung.
GROK-Muster können im Logstash Patterns Repository gefunden werden.
Schritt 4 – Logstash starten
Sobald die Pipeline konfiguriert ist, starten Sie den Logstash-Dienst:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service
Schritt 5 – Fehlerbehebung
Verbindung prüfen
Überprüfen Sie die Verbindung von Logstash zu OpenSearch:
curl -u ihr_benutzername:ihr_passwort -X GET "https://ihr-opensearch-server:25060/_cat/indices?v"
Datenübertragung prüfen
Stellen Sie sicher, dass die Daten korrekt in OpenSearch indexiert werden:
curl -u ihr_benutzername:ihr_passwort -X GET "http://ihr-opensearch-server:25060//_search?pretty"
Ersetzen Sie <your-opensearch-server>
durch den Hostnamen Ihres OpenSearch-Servers sowie <your_username>
und <your_password>
durch Ihre OpenSearch-Anmeldedaten. Ebenso ersetzen Sie <your-index-name>
durch den Indexnamen.
Firewall- und Netzwerkkonfiguration
Stellen Sie sicher, dass Firewall-Regeln und Netzwerkeinstellungen den Datenverkehr zwischen Logstash und OpenSearch auf Port 25060 zulassen.
Logs
Die Logdateien für Logstash befinden sich unter:
/var/log/logstash/logstash-plain.log
Weitere Informationen finden Sie in der Fehlerbehebungsanleitung.
Fazit
In dieser Anleitung haben wir die Einrichtung von Logstash zur Erfassung und Weiterleitung von Apache-Logs an OpenSearch durchlaufen. Hier eine kurze Zusammenfassung:
- Installation von Logstash: Wir haben die Installation mit APT oder YUM für verschiedene Linux-Distributionen behandelt.
- Konfiguration: Wir haben die Logstash-Konfiguration erstellt und angepasst, damit Apache-Logs korrekt verarbeitet und an OpenSearch gesendet werden.
- Verifizierung in OpenSearch: Wir haben ein Indexmuster in OpenSearch Dashboards eingerichtet, um sicherzustellen, dass Ihre Logs korrekt indexiert und analysiert werden können.
Mit diesen Schritten sollten Sie nun eine funktionale Umgebung haben, in der Logstash Apache-Logs sammelt und an OpenSearch weiterleitet.