Hinzufügen von Logstash-Filtern zur Verbesserung der zentralen Protokollierung (Logstash Forwarder)

Einführung

Logstash ist ein leistungsstarkes Tool zum Zentralisieren und Analysieren von Protokollen, mit dessen Hilfe Sie eine Übersicht über Ihre Umgebung erhalten und Probleme mit Ihren Servern identifizieren können. Eine Möglichkeit, die Effektivität Ihrer Logstash-Einrichtung zu erhöhen, besteht darin, wichtige Anwendungsprotokolle zu sammeln und die Protokolldaten mithilfe von Filtern zu strukturieren, sodass die Daten leicht analysiert und abgefragt werden können. Wir werden unsere Filter um Grok-Muster bauen, die die Daten in den Protokollen in nützliche Informationen zerlegen.

Dieses Handbuch ist eine Fortsetzung des https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5-and-kibana-4-1-elk-stack -on-ubuntu-14-04 [So installieren Sie Elasticsearch 1.7, Logstash 1.5 und Kibana 4.1 (ELK Stack) unter Ubuntu 14.04] und konzentriert sich hauptsächlich auf das Hinzufügen von Filtern für verschiedene gängige Anwendungsprotokolle.

Voraussetzungen

Um diesem Lernprogramm folgen zu können, benötigen Sie einen funktionierenden Logstash-Server und eine Möglichkeit, Ihre Protokolle an Logstash zu senden. Wenn Sie Logstash nicht eingerichtet haben, finden Sie hier ein weiteres Tutorial, mit dem Sie beginnen können: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5 -and-kibana-4-1-elk-stack-on-ubuntu-14-04 [Installieren von Elasticsearch 1.7, Logstash 1.5 und Kibana 4.1 (ELK Stack) unter Ubuntu 14.04].

Annahmen zum Logstash-Server:

  • Logstash wird in + / opt / logstash + installiert

  • Sie erhalten Protokolle von Logstash Forwarder über Port 5000

  • Ihre Logstash-Konfigurationsdateien befinden sich in + / etc / logstash / conf.d +

  • Sie haben eine Eingabedatei mit dem Namen "+ 01-lumberjack-input.conf +"

  • Sie haben eine Ausgabedatei mit dem Namen "+ 30-lumberjack-output.conf +"

Annahmen für Logstash Forwarder:

Wenn Ihr Setup von den von uns angenommenen Einstellungen abweicht, passen Sie dieses Handbuch einfach an Ihre Umgebung an.

Möglicherweise müssen Sie das Verzeichnis "+ patterns +" erstellen, indem Sie diesen Befehl auf Ihrem Logstash-Server ausführen:

sudo mkdir -p /opt/logstash/patterns
sudo chown logstash:logstash /opt/logstash/patterns

Über Grok

Grok analysiert Textmuster mithilfe regulärer Ausdrücke und weist sie einem Bezeichner zu.

Die Syntax für ein Grok-Muster lautet "+% {:} +". Ein Logstash-Filter enthält eine Folge von Grok-Mustern, die mit verschiedenen Bezeichnern übereinstimmen und verschiedene Teile einer Log-Nachricht zuweisen. Auf diese Weise werden die Logs strukturiert.

Um mehr über Grok zu erfahren, besuchen Sie die Logstash grok page und die https://github.com/elasticsearch/logstash/blob/v1.4.2 / patterns / grok-patterns [Liste der Logstash-Standardmuster].

Verwendung dieses Handbuchs

Jeder darauf folgende Hauptabschnitt enthält die zusätzlichen Konfigurationsdetails, die zum Sammeln und Filtern von Protokollen für eine bestimmte Anwendung erforderlich sind. Für jede Anwendung, die Sie protokollieren und filtern möchten, müssen Sie einige Konfigurationsänderungen sowohl auf dem Anwendungsserver als auch auf dem Logstash-Server vornehmen.

Unterabschnitt Logstash Forwarder

Die Unterabschnitte von Logstash Forwarder beziehen sich auf den Anwendungsserver, der seine Protokolle sendet. Die zusätzliche files Konfiguration sollte direkt nach den folgenden Zeilen in die + / etc / logstash-forwarder.conf + Datei eingefügt werden:

 "files": [
   {
     "paths": [
       "/var/log/syslog",
       "/var/log/auth.log"
      ],
     "fields": { "type": "syslog" }
   }

Stellen Sie sicher, dass die zusätzliche Konfiguration vor dem "+] +" steht, mit dem der Abschnitt "Dateien" geschlossen wird. Dies umfasst die richtigen Protokolldateien, die an Logstash gesendet werden sollen, und kennzeichnet sie als einen bestimmten Typ (der von den Logstash-Filtern verwendet wird). Der Logstash Forwarder muss neu geladen werden, damit die Änderungen wirksam werden.

Unterabschnitt Logstash-Muster

Wenn es einen Unterabschnitt Logstash-Muster gibt, enthält dieser Grok-Muster, die einer neuen Datei in "+ / opt / logstash / patterns +" auf dem Logstash-Server hinzugefügt werden können. Auf diese Weise können Sie die neuen Muster in Logstash-Filtern verwenden.

Unterabschnitt "Logstash-Filter"

Die Unterabschnitte des Logstash-Filters enthalten einen Filter, der zu einer neuen Datei zwischen den Eingabe- und Ausgabekonfigurationsdateien in "+ / etc / logstash / conf.d +" auf dem Logstash-Server hinzugefügt werden kann. Der Filter bestimmt, wie der Logstash-Server die relevanten Protokolldateien analysiert. Denken Sie daran, den Logstash-Server nach dem Hinzufügen eines neuen Filters neu zu starten, um Ihre Änderungen zu laden.

Nachdem Sie nun wissen, wie Sie dieses Handbuch verwenden, zeigt Ihnen der Rest des Handbuchs, wie Sie Anwendungsprotokolle sammeln und filtern können!

Anwendung: Nginx

Logstash Forwarder: Nginx

Öffnen Sie auf Ihren * Nginx * -Servern die Konfigurationsdatei + logstash-forwarder.conf + zum Bearbeiten:

sudo vi /etc/logstash-forwarder.conf

Fügen Sie im Abschnitt "Dateien" Folgendes hinzu, um die Nginx-Zugriffsprotokolle als Typ "nginx-access" an Ihren Logstash-Server zu senden:

,
   {
     "paths": [
       "/var/log/nginx/access.log"
      ],
     "fields": { "type": "nginx-access" }
   }

Speichern und schließen. Laden Sie die Logstash Forwarder-Konfiguration neu, damit die Änderungen wirksam werden:

sudo service logstash-forwarder restart

Logstash-Muster: Nginx

Nginx-Protokollmuster sind nicht in den Standardmustern von Logstash enthalten, daher werden wir Nginx-Muster manuell hinzufügen.

Erstellen Sie auf Ihrem * Logstash-Server * eine neue Pattern-Datei mit dem Namen + nginx +:

sudo vi /opt/logstash/patterns/nginx

Dann fügen Sie folgende Zeilen ein:

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

Speichern und schließen. Das NGINXACCESS-Muster analysiert die Daten und weist sie verschiedenen Kennungen zu (z. clientip, ident, auth usw.).

Ändern Sie als nächstes den Eigentümer der Musterdatei in "+ logstash":

sudo chown logstash:logstash /opt/logstash/patterns/nginx

Logstash-Filter: Nginx

Erstellen Sie auf Ihrem * Logstash-Server * eine neue Filterkonfigurationsdatei mit dem Namen + 11-nginx.conf +:

sudo vi /etc/logstash/conf.d/11-nginx.conf

Fügen Sie dann den folgenden Filter hinzu:

filter {
 if [type] == "nginx-access" {
   grok {
     match => { "message" => "%{NGINXACCESS}" }
   }
 }
}

Speichern und schließen. Beachten Sie, dass dieser Filter versucht, Nachrichten vom Typ "nginx-access" mit dem oben definierten NGINXACCESS-Muster abzugleichen.

Starten Sie nun Logstash neu, um die Konfiguration neu zu laden:

sudo service logstash restart

Jetzt werden Ihre Nginx-Protokolle gesammelt und gefiltert!

Anwendung: Apache HTTP Web Server

Die Log-Muster von Apache sind in den Standard-Logstash-Mustern enthalten, so dass es ziemlich einfach ist, einen Filter dafür einzurichten.

  • Hinweis: * Wenn Sie eine RedHat-Variante wie CentOS verwenden, befinden sich die Protokolle unter + / var / log / httpd + anstelle von + / var / log / apache2 +, das in den Beispielen verwendet wird.

Logstash Forwarder

Öffnen Sie auf Ihren * Apache * -Servern die Konfigurationsdatei + logstash-forwarder.conf + zum Bearbeiten:

sudo vi /etc/logstash-forwarder.conf

Fügen Sie im Abschnitt "Dateien" Folgendes hinzu, um die Apache-Zugriffsprotokolle als Typ "Apache-Zugriff" an Ihren Logstash-Server zu senden:

,
   {
     "paths": [
       "/var/log//access.log"
      ],
     "fields": { "type": "apache-access" }
   }

Speichern und schließen. Laden Sie die Logstash Forwarder-Konfiguration neu, damit die Änderungen wirksam werden:

sudo service logstash-forwarder restart

Logstash-Filter: Apache

Erstellen Sie auf Ihrem * Logstash-Server * eine neue Filterkonfigurationsdatei mit dem Namen + 12-apache.conf +:

sudo vi /etc/logstash/conf.d/12-apache.conf

Fügen Sie dann den folgenden Filter hinzu:

filter {
 if [type] == "apache-access" {
   grok {
     match => { "message" => "%{COMBINEDAPACHELOG}" }
   }
 }
}

Speichern und schließen. Beachten Sie, dass dieser Filter versucht, Nachrichten vom Typ "Apache-Zugriff" mit dem COMBINEDAPACHELOG-Muster, einem der Standard-Logstash-Muster, abzugleichen.

Starten Sie nun Logstash neu, um die Konfiguration neu zu laden:

sudo service logstash restart

Jetzt werden Ihre Apache-Protokolle gesammelt und gefiltert!

Fazit

Es ist möglich, Protokolle aller Art zu sammeln und zu analysieren. Versuchen Sie, eigene Filter und Muster für andere Protokolldateien zu erstellen.

Fühlen Sie sich frei, mit Filtern, die Sie sehen möchten, oder mit eigenen Mustern zu kommentieren!

Wenn Sie mit Kibana nicht vertraut sind, lesen Sie das dritte Tutorial in dieser Reihe: https://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations[How To Use Kibana Visualisierungen und Dashboards.