Einführung
Effizientes Webserver-Logmanagement ist entscheidend für die Performance Ihrer Website, die Fehlerbehebung und das Verständnis des Nutzerverhaltens. Apache ist einer der beliebtesten Webserver. Er generiert Zugriffs- und Fehlerprotokolle mit wertvollen Informationen. Zur effektiven Verwaltung und Analyse dieser Protokolle können Sie Logstash verwenden, um sie zu verarbeiten und an DigitalOceans verwaltetes OpenSearch zur Indizierung und Visualisierung zu senden.
In diesem Tutorial zeigen wir Ihnen, wie Sie Logstash auf Ihrem Droplet installieren, es so konfigurieren, dass es Apache-Logs sammelt, und diese zur Analyse an Managed OpenSearch senden.
Voraussetzungen
- Droplet/s mit installiertem Apache-Webserver.
- Verwalteter OpenSearch-Cluster
Schritt 1 – Logstash installieren
Logstash kann entweder über Binärdateien oder über Paketquellen installiert werden. Für eine einfachere Verwaltung und Aktualisierung wird im Allgemeinen die Verwendung von Paketquellen empfohlen.
In diesem Abschnitt zeigen wir Ihnen, wie Sie Logstash mithilfe des APT- und YUM-Paketmanagers auf Ihrem Droplet installieren.
Lassen Sie uns das Betriebssystem identifizieren:
cat /etc/os-release
Für APT-basierte Systeme (Ubuntu/Debian)
Laden Sie den öffentlichen Signaturschlüssel herunter und installieren Sie ihn:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
Möglicherweise müssen Sie unter Debian das Paket apt-transport-https installieren, bevor Sie fortfahren können:
sudo apt-get install apt-transport-https
Speichern Sie die Repository-Definition in /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
Um das Logstash-Repository hinzuzufügen, verwenden Sie die oben beschriebene `echo`-Methode. Verwenden Sie nicht `add-apt-repository`, da dadurch auch ein `deb-src`-Eintrag hinzugefügt wird, wir aber kein Quellpaket bereitstellen. Falls Sie einen `deb-src`-Eintrag hinzugefügt haben, erhalten Sie die folgende Fehlermeldung:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Entfernen Sie einfach den Eintrag „deb-src“ aus der Datei „/etc/apt/sources.list“, dann sollte die Installation wie erwartet funktionieren.
Führen Sie `sudo apt-get update` aus, und das Repository ist einsatzbereit. Sie können es wie folgt verwenden:
sudo apt-get update && sudo apt-get install logstash
Für YUM-basierte Systeme (CentOS/RHEL)
Laden Sie den öffentlichen Signaturschlüssel herunter und installieren Sie ihn:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Fügen Sie Folgendes zu Ihrer Datei /etc/yum.repos.d/logstash.repo hinzu. Sie können "t" verwenden, um die Datei zu aktualisieren und zu erstellen.
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
EOFIhr Tank ist einsatzbereit. Sie können ihn verwenden mit:
sudo yum install logstash
Weitere Informationen finden Sie in der Logstash-Installationsanleitung.
Schritt 2 – Logstash so konfigurieren, dass Protokolle an OpenSearch gesendet werden.
Die Logstash-Pipeline besteht aus drei Hauptphasen: Eingabe, Filterung und Ausgabe. Logstash-Pipelines verwenden Plugins. Sie können Community-Plugins nutzen oder eigene Plugins erstellen.
- Eingabe: In dieser Phase werden Daten aus verschiedenen Quellen gesammelt. Logstash unterstützt mehrere Eingabe-Plugins zur Verwaltung von Datenquellen wie Protokolldateien, Datenbanken, Message Queues und Cloud-Diensten.
- Filter: In dieser Phase werden die in der Eingabephase gesammelten Daten verarbeitet und transformiert. Filter können die Daten modifizieren, anreichern und strukturieren, um sie nutzbarer und analytischer zu machen.
- Ausgabe: In dieser Phase werden die verarbeiteten Daten an ein Ziel gesendet. Ziele können Datenbanken, Dateien und Datenspeicher wie OpenSearch sein.
Schritt 3 – Installieren Sie das Open Search Output-Plugin
Das OpenSearch-Ausgabe-Plugin kann durch Ausführen des folgenden Befehls installiert werden:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Weitere Informationen finden Sie im Repository des Logstash-Output-Opensearch-Plugins.
Jetzt erstellen wir eine Pipeline:
Erstellen Sie im Pfad /etc/logstash/conf.d/ eine neue Datei namens apache_pipeline.conf und kopieren Sie den folgenden Inhalt hinein.
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://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}mit dem Hostnamen Ihres OpenSearch-Servers und Ersetzen Sie dies durch Ihr OpenSearch-Passwort.
Lassen Sie uns die obige Konfiguration im Detail betrachten.
- EINGABE: Dient zur Konfiguration einer Ereignisquelle. Hier wird das Dateieingabe-Plugin verwendet.
- Pfad => “/var/log/apache2/access.log”: Gibt den Pfad zur Apache-Zugriffsprotokolldatei an, aus der Logstash lesen soll.
Stellen Sie sicher, dass der Logstash-Dienst Zugriff auf den Eingabepfad hat.
- start_position => “beginning”: Gibt an, wo Logstash mit dem Lesen der Logdatei beginnen soll. “beginning” bedeutet, dass Logstash die Datei vom Anfang und nicht vom Ende her verarbeiten soll.
- sincedb_path => “/dev/null”: Gibt den Pfad zur sincedb-Datei an. Logstash verwendet sincedb-Dateien, um die aktuelle Position in den Protokolldateien zu speichern und so nach einem Neustart oder Absturz die Protokollierung an der unterbrochenen Stelle fortzusetzen.
- tags => “apache_access”: Weist Ereignissen, die aus dieser Eingabe gelesen werden, ein Tag zu. Tags sind nützlich, um Ereignisse in Logstash zu identifizieren und zu filtern. Sie werden häufig in nachgelagerten Ausgabestufen oder zur Konfigurationsfilterung verwendet. Wir verwenden Tags für Letzteres.
- FILTER: Wird zur Verarbeitung von Ereignissen verwendet.
Beginnen wir mit bedingten Anweisungen:
(if "apache_access" in [tags]):
Hier wird geprüft, ob das Tag „apache_access“ im Abschnitt „[tags]“ der eingehenden Log-Ereignisse vorhanden ist. Anhand dieser Bedingung wird der entsprechende GROK-Filter auf die Apache-Zugriffs- und Fehlerprotokolle angewendet.
- Grok-Filter (für Apache-Zugriffsprotokolle):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}Der Grok-Filter %{HTTPD_COMBINEDLOG} ist ein vordefiniertes Muster in Logstash, das zum Parsen des Apache Combined Access Log-Formats verwendet wird. Er extrahiert Felder wie IP-Adresse, Zeitstempel, HTTP-Methode, URI, Statuscode usw. aus dem Nachrichtentext empfangener Ereignisse.
- Mutate Filter Remove (optional): Nach dem Parsen der Apache-Logs verwenden wir mutate-remove, um einige Felder zu entfernen.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}- Eine weitere Bedingung: Wenn das Tag „apache_access“ nicht in [tags] enthalten ist, wird der else-Block ausgeführt. Dieser else-Block enthält einen weiteren GROK-Filter für Apache-Fehlerprotokolle.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
Dieser Filter %{HTTPD24_ERRORLOG} analysiert Meldungen, die dem Apache-Fehlerprotokollformat entsprechen. Er extrahiert Felder, die mit Fehlerprotokollen zusammenhängen, wie z. B. Zeitstempel, Protokollierungsstufe, Fehlermeldung usw.
GROK-Muster finden Sie hier: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns Finden.
- AUSGABE: Das Plugin sendet Ausgabeereignisse an ein bestimmtes Ziel.
Der Ausgabeblock beginnt mit einer if-Bedingung. Wir verwenden hier die bedingte Anweisung.
if "apache_access" in [tags] {}
Wenn eine Bedingung verwendet wird, um Protokolle an OpenSearch in zwei separate Profile, apache_error und apache_access, weiterzuleiten.
Schauen wir uns das OpenSearch Output-Plugin an:
hosts => "https://XXX:25060" Your Open search Hostname
user => "doadmin" Your Open search Username
password => "XXXXX" OpenSearch Password
index => "apache_error" Index name in OpenSearch
ssl_certificate_verification => true Enabled SSL certificate verificationSchritt 4 – Logstash starten
Nach der Konfiguration der Pipeline starten Sie den Logstash-Dienst:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.serviceSchritt 5 – Fehlerbehebung
Überprüfen Sie die Verbindung.
Sie können überprüfen, ob Logstash eine Verbindung zu OpenSearch herstellen kann, indem Sie die Verbindung testen:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
mit dem Hostnamen des OpenSearch-Servers und , Ersetzen Sie dies durch Ihre OpenSearch-Zugangsdaten.
Datenaufnahme
Stellen Sie sicher, dass die Daten in OpenSearch ordnungsgemäß indexiert sind:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
mit dem Hostnamen des OpenSearch-Servers und , Ersetzen Sie dies durch Ihre OpenSearch-Zugangsdaten. Mit dem Namen Index.
Firewall- und Netzwerkkonfiguration
Stellen Sie sicher, dass Ihre Firewall-Regeln und Netzwerkeinstellungen den Datenverkehr zwischen Logstash und OpenSearch auf Port 25060 zulassen.
Protokolle
Logstash-bezogene Protokolle finden Sie unter /var/log/logstash/logstash-plain.log.
Ergebnis
In dieser Anleitung haben wir Logstash eingerichtet, um Apache-Logs zu sammeln und an OpenSearch zu senden. Hier eine kurze Zusammenfassung der behandelten Themen:
Installation von Logstash: Wir haben erklärt, wie man je nach Linux-Distribution den Paketmanager APT oder YUM verwendet, um Logstash auf dem Droplet zu installieren.
Logstash-Konfiguration: Wir haben die Logstash-Konfigurationsdatei erstellt und konfiguriert, um sicherzustellen, dass Apache-Logs ordnungsgemäß analysiert und an OpenSearch gesendet werden.
Überprüfung in OpenSearch: Wir haben eine Auflistungsvorlage in den OpenSearch-Dashboards eingerichtet, um zu überprüfen, ob Ihre Berichte ordnungsgemäß indexiert und für die Analyse sichtbar sind.
Nach Abschluss dieser Schritte sollten Sie nun über eine funktionierende Konfiguration verfügen, in der Logstash Apache-Protokolle sammelt und an OpenSearch sendet.









