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 einer ccloud³ VM, die Konfiguration zur Erfassung Ihrer Apache-Protokolle und das Senden dieser an OpenSearch zur Analyse.
Zu wenig GPU-Leistung für dieses Projekt?
Dedizierte NVIDIA-GPUs (RTX A4000 bis A100) aus deutschen Rechenzentren – ab 92,59 €/Monat, stundengenau abgerechnet, in Minuten startklar. GPU Server mieten →
Voraussetzungen
- ccloud³ VM mit installiertem Apache-Webserver.
- 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 Ihrer ccloud³ VM mit APT- und YUM-Paketmanagern.
Zunächst das Betriebssystem identifizieren:
cat /etc/os-releaseFü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.gpgEventuell müssen Sie das Paket apt-transport-https auf Debian installieren:
sudo apt-get install apt-transport-httpsSpeichern 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.listVerwenden 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 logstashFür YUM-basierte Systeme (CentOS/RHEL)
Öffentlichen Signaturschlüssel herunterladen und installieren:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchFü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/nullInstallieren Sie Logstash:
sudo yum install logstashWeitere 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-opensearchWeitere 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.serviceSchritt 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.logWeitere 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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.