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

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 Ihres ELK-Stack-Setups (Elasticsearch, Logstash und Kibana) zu erhöhen, besteht darin, wichtige Anwendungsprotokolle zu sammeln und die Protokolldaten mithilfe von Filtern zu strukturieren, sodass die Daten problemlos 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 der Anleitung von Elasticsearch, Logstash und Kibana 4 unter Ubuntu 14.04 und konzentriert sich hauptsächlich auf das Hinzufügen von Logstash-Filtern für verschiedene gängige Anwendungsprotokolle.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie einen funktionierenden Logstash-Server, der Protokolle von einem Versender wie Filebeat empfängt. Wenn Sie Logstash nicht für den Empfang von Protokollen eingerichtet haben, finden Sie hier das Tutorial, mit dem Sie beginnen können: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana- 4-on-Ubuntu-14-04 [So installieren Sie Elasticsearch, Logstash und Kibana 4 unter Ubuntu 14.04].

ELK Server Annahmen

  • Logstash wird in + / opt / logstash + installiert

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

  • Sie haben eine Eingabedatei mit dem Namen "+ 02-beats-input.conf +"

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

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: /opt/logstash/patterns

Client-Server-Annahmen

Wenn sich Ihre Einstellungen unterscheiden, passen Sie diese Anleitung einfach an Ihre Umgebung an.

Ü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/logstash -plugins / logstash-patterns-core / blob / master / 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 Client-Server (Filebeat) als auch auf dem Logstash-Server vornehmen.

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-Dienst nach dem Hinzufügen eines neuen Filters neu zu starten, um Ihre Änderungen zu laden.

Filebeat Prospector-Unterabschnitt

Filebeat Prospectors geben an, welche Protokolle an Logstash gesendet werden sollen. Zusätzliche Prospector-Konfigurationen sollten der Datei "+ /etc/filebeat/filebeat.yml " direkt nach den vorhandenen Prospectors im Abschnitt " prospectors +" hinzugefügt werden:

Prospektor Beispiele

filebeat:
 # List of prospectors to fetch data.
 prospectors:
   -
     - /var/log/secure
     - /var/log/messages
     document_type: syslog




...

Im obigen Beispiel stellen die rot hervorgehobenen Linien einen Prospector dar, der alle "+ .log " - Dateien in " / var / log / app / " mit dem Typ " app-access +" an Logstash sendet. Nachdem Änderungen vorgenommen wurden, muss Filebeat neu geladen werden, damit die Änderungen wirksam werden.

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-Muster: Nginx

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

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

sudo vi /opt/logstash/patterns/nginx

Dann fügen Sie folgende Zeilen ein:

Nginx Grok-Muster

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 Muster "+ NGINXACCESS " 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: /opt/logstash/patterns/nginx

Logstash-Filter: Nginx

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

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

Fügen Sie dann den folgenden Filter hinzu:

Nginx Filter

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 Muster "+ NGINX ACCESS" abzugleichen.

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

sudo service logstash restart

Filebeat Prospector: Nginx

Öffnen Sie auf Ihren * Nginx-Servern * die Konfigurationsdatei + filebeat.yml + zum Bearbeiten:

sudo vi /etc/filebeat/filebeat.yml

Fügen Sie im Abschnitt "+ filebeat " den folgenden Prospector hinzu, um die Nginx-Zugriffsprotokolle als Typ " nginx-access +" an Ihren Logstash-Server zu senden:

Nginx Prospector

   -
     paths:
       - /var/log/nginx/access.log
     document_type: nginx-access

Speichern und schließen. Laden Sie Filebeat neu, damit die Änderungen wirksam werden:

sudo service filebeat 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.

Logstash-Filter: Apache

Erstellen Sie auf Ihrem * ELK-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:

Apache Filter

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 Muster "+ COMBINEDAPACHELOG" abzugleichen, einem der Standard-Logstash-Muster.

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

sudo service logstash restart

Filebeat Prospector: Apache

Öffnen Sie auf Ihren * Apache-Servern * die Konfigurationsdatei + filebeat.yml + zum Bearbeiten:

sudo vi /etc/filebeat/filebeat.yml

Fügen Sie im Abschnitt "+ filebeat " den folgenden Prospector hinzu, um die Apache-Protokolle als Typ " apache-access +" an Ihren Logstash-Server zu senden:

Apache Prospector

   -
     paths:
       - /var/log/apache2/access.log
     document_type: apache-access

Speichern und schließen. Laden Sie Filebeat neu, damit die Änderungen wirksam werden:

sudo service filebeat 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 folgende Tutorial: How To Use Kibana Visualizations and Dashboards .