So installieren Sie Elasticsearch, Logstash und Kibana (ELK Stack) unter CentOS 7

Einführung

In diesem Tutorial werden wir die Installation des Elasticsearch ELK-Stacks unter CentOS 7, Elasticsearch 2.2.x, Logstash 2.2.x und Kibana 4.4.x, durchgehen. Wir zeigen Ihnen auch, wie Sie es konfigurieren, um mithilfe von Filebeat 1.1.x die Syslogs Ihrer Systeme an einem zentralen Ort zu erfassen und zu visualisieren. Logstash ist ein Open Source-Tool zum Sammeln, Parsen und Speichern von Protokollen für die zukünftige Verwendung. Kibana ist eine Webschnittstelle, mit der die von Logstash indizierten Protokolle durchsucht und angezeigt werden können. Beide Tools basieren auf Elasticsearch, das zum Speichern von Protokollen verwendet wird.

Die zentrale Protokollierung kann sehr nützlich sein, wenn Sie versuchen, Probleme mit Ihren Servern oder Anwendungen zu identifizieren, da Sie alle Ihre Protokolle an einem einzigen Ort durchsuchen können. Dies ist auch nützlich, da Sie Probleme identifizieren können, die sich über mehrere Server erstrecken, indem Sie deren Protokolle während eines bestimmten Zeitraums korrelieren.

Es ist möglich, Logstash zum Sammeln von Protokollen aller Art zu verwenden. Wir beschränken den Umfang dieses Lernprogramms jedoch auf das Sammeln von Syslogs.

Unser Ziel

Das Lernprogramm hat zum Ziel, Logstash so einzurichten, dass Syslogs mehrerer Server erfasst werden, und Kibana so einzurichten, dass die erfassten Protokolle angezeigt werden.

Unser ELK-Stack-Setup besteht aus vier Hauptkomponenten:

  • * Logstash *: Die Serverkomponente von Logstash, die eingehende Protokolle verarbeitet

  • * Elasticsearch *: Speichert alle Protokolle

  • * Kibana *: Weboberfläche zum Durchsuchen und Visualisieren von Protokollen, die über Nginx weitergeleitet werden

  • * Filebeat *: Auf Client-Servern installiert, die ihre Protokolle an Logstash senden, dient Filebeat als Protokollversand-Agent, der das Netzwerkprotokoll lumberjack für die Kommunikation mit Logstash verwendet

Wir werden die ersten drei Komponenten auf einem einzigen Server installieren, den wir als unseren * ELK-Server * bezeichnen. Filebeat wird auf allen Client-Servern installiert, für die wir Protokolle erfassen möchten, die wir zusammen als unsere * Client-Server * bezeichnen.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie Root-Zugriff auf ein CentOS 7 VPS. Anweisungen zum Einrichten finden Sie hier (Schritte 3 und 4): Initial Server Setup with CentOS 7.

Wenn Sie lieber Ubuntu verwenden möchten, lesen Sie dieses Tutorial: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu- 14-04 [So installieren Sie ELK unter Ubuntu 14.04].

Die Menge an CPU, RAM und Speicher, die Ihr ELK-Server benötigt, hängt von der Menge an Protokollen ab, die Sie sammeln möchten. In diesem Tutorial verwenden wir einen VPS mit den folgenden Spezifikationen für unseren ELK-Server:

  • Betriebssystem: CentOS 7

  • RAM: 4 GB

  • CPU: 2

Zusätzlich zu Ihrem ELK-Server benötigen Sie einige andere Server, von denen Sie Protokolle erfassen.

Beginnen wir mit der Einrichtung unseres ELK-Servers!

Installieren Sie Java 8

Elasticsearch und Logstash benötigen Java, das werden wir jetzt installieren. Wir werden eine neuere Version von Oracle Java 8 installieren, da dies von Elasticsearch empfohlen wird. Es sollte jedoch gut mit OpenJDK funktionieren, wenn Sie sich für diesen Weg entscheiden. Das Befolgen der Schritte in diesem Abschnitt bedeutet, dass Sie die Oracle Binary License Agreement for Java SE akzeptieren.

Wechseln Sie in Ihr Ausgangsverzeichnis und laden Sie das Oracle Java 8-JDK-RPM (Update 73, das zum Zeitpunkt der Erstellung dieses Dokuments aktuell ist) mit den folgenden Befehlen herunter:

cd ~
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

Installieren Sie dann das RPM mit diesem yum-Befehl (wenn Sie eine andere Version heruntergeladen haben, ersetzen Sie den Dateinamen hier):

sudo yum -y localinstall jdk-8u73-linux-x64.rpm

Jetzt sollte Java unter + / usr / java / jdk1.8.0_73 / jre / bin / java + installiert und über + / usr / bin / java + verlinkt werden.

Sie können die zuvor heruntergeladene Archivdatei löschen:

rm ~/jdk-8u*-linux-x64.rpm

Nachdem Java 8 installiert ist, installieren wir ElasticSearch.

Installieren Sie Elasticsearch

Elasticsearch kann mit einem Paket-Manager installiert werden, indem das Paket-Repository von Elastic hinzugefügt wird.

Führen Sie den folgenden Befehl aus, um den öffentlichen GPG-Schlüssel von Elasticsearch in rpm zu importieren:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Erstellen Sie eine neue yum-Repository-Datei für Elasticsearch. Beachten Sie, dass dies ein einzelner Befehl ist:

echo '[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
' | sudo tee /etc/yum.repos.d/elasticsearch.repo

Installieren Sie Elasticsearch mit diesem Befehl:

sudo yum -y install elasticsearch

Elasticsearch ist jetzt installiert. Bearbeiten wir die Konfiguration:

sudo vi /etc/elasticsearch/elasticsearch.yml

Sie möchten den externen Zugriff auf Ihre Elasticsearch-Instanz (Port 9200) einschränken, damit Außenstehende Ihre Daten nicht lesen oder Ihren Elasticsearch-Cluster über die HTTP-API herunterfahren können. Suchen Sie die Zeile, die "+ network.host +" angibt, entfernen Sie das Kommentarzeichen und ersetzen Sie den Wert durch "localhost".

elasticsearch.yml Auszug (aktualisiert)

network.host: localhost

Speichern und beenden Sie "+ elasticsearch.yml +".

Starten Sie jetzt Elasticsearch:

sudo systemctl start elasticsearch

Führen Sie dann den folgenden Befehl aus, um Elasticsearch beim Booten automatisch zu starten:

sudo systemctl enable elasticsearch

Nachdem Elasticsearch nun ausgeführt wird, können Sie Kibana installieren.

Installieren Sie Kibana

Das Kibana-Paket hat denselben GPG-Schlüssel wie Elasticsearch und wir haben diesen öffentlichen Schlüssel bereits installiert.

Erstellen und bearbeiten Sie eine neue yum-Repository-Datei für Kibana:

sudo vi /etc/yum.repos.d/kibana.repo

Fügen Sie die folgende Repository-Konfiguration hinzu:

/etc/yum.repos.d/kibana.repo

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

Speichern und schließen.

Installieren Sie Kibana mit diesem Befehl:

sudo yum -y install kibana

Öffnen Sie die Kibana-Konfigurationsdatei zum Bearbeiten:

sudo vi /opt/kibana/config/kibana.yml

Suchen Sie in der Kibana-Konfigurationsdatei die Zeile, die "+ server.host +" angibt, und ersetzen Sie die IP-Adresse (standardmäßig "0.0.0.0") durch "localhost":

kibana.yml Auszug (aktualisiert)

server.host: "localhost"

Speichern und schließen. Diese Einstellung macht es so, dass Kibana nur für den lokalen Host zugänglich ist. Dies ist in Ordnung, da wir einen Nginx-Reverseproxy auf demselben Server installieren, um den externen Zugriff zu ermöglichen.

Starten Sie nun den Kibana-Dienst und aktivieren Sie ihn:

sudo systemctl start kibana
sudo chkconfig kibana on

Bevor wir die Kibana-Weboberfläche verwenden können, müssen wir einen Reverse-Proxy einrichten. Machen wir das jetzt mit Nginx.

Installieren Sie Nginx

Da wir Kibana so konfiguriert haben, dass es auf "+ localhost +" lauscht, müssen wir einen Reverse-Proxy einrichten, um externen Zugriff darauf zu ermöglichen. Wir werden Nginx für diesen Zweck verwenden.

  • Hinweis: * Wenn Sie bereits eine Nginx-Instanz haben, die Sie verwenden möchten, können Sie diese auch verwenden. Stellen Sie einfach sicher, dass Kibana so konfiguriert ist, dass es von Ihrem Nginx-Server erreicht werden kann (Sie möchten wahrscheinlich den Wert "+ host " in " / opt / kibana / config / kibana.yml +" in die private IP-Adresse Ihres Kibana-Servers ändern). . Außerdem wird empfohlen, SSL / TLS zu aktivieren.

Fügen Sie das EPEL-Repository zu yum hinzu:

sudo yum -y install epel-release

Verwenden Sie nun yum, um Nginx und httpd-tools zu installieren:

sudo yum -y install nginx httpd-tools

Verwenden Sie htpasswd, um einen Administratorbenutzer mit dem Namen "kibanaadmin" (Sie sollten einen anderen Namen verwenden) zu erstellen, der auf die Kibana-Weboberfläche zugreifen kann:

sudo htpasswd -c /etc/nginx/htpasswd.users

Geben Sie an der Eingabeaufforderung ein Passwort ein. Merken Sie sich dieses Login, da Sie es benötigen, um auf die Kibana-Weboberfläche zuzugreifen.

Öffnen Sie nun die Nginx-Konfigurationsdatei in Ihrem bevorzugten Editor. Wir werden vi verwenden:

sudo vi /etc/nginx/nginx.conf

Suchen Sie den Standard-Serverblock (beginnt mit + server {+), den letzten Konfigurationsblock in der Datei, und löschen Sie ihn. Wenn Sie fertig sind, sollten die letzten beiden Zeilen in der Datei folgendermaßen aussehen:

nginx.conf Auszug

   include /etc/nginx/conf.d/*.conf;
}

Speichern und schließen.

Jetzt erstellen wir einen Nginx-Serverblock in einer neuen Datei:

sudo vi /etc/nginx/conf.d/kibana.conf

Fügen Sie den folgenden Codeblock in die Datei ein. Stellen Sie sicher, dass das "+ Servername +" mit dem Namen Ihres Servers übereinstimmt:

/etc/nginx/conf.d/kibana.conf

server {
   listen 80;

   server_name ;

   auth_basic "Restricted Access";
   auth_basic_user_file /etc/nginx/htpasswd.users;

   location / {
       proxy_pass http://localhost:5601;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
}

Speichern und schließen. Dadurch wird Nginx so konfiguriert, dass der HTTP-Datenverkehr Ihres Servers an die Kibana-Anwendung geleitet wird, die + localhost: 5601 + abhört. Außerdem verwendet Nginx die Datei + htpasswd.users +, die wir zuvor erstellt haben, und erfordert eine grundlegende Authentifizierung.

Starten Sie nun Nginx und aktivieren Sie es, damit unsere Änderungen wirksam werden:

sudo systemctl start nginx
sudo systemctl enable nginx

Kibana ist jetzt über Ihren FQDN oder die öffentliche IP-Adresse Ihres ELK-Servers erreichbar, d. H. http: // elk% 5C_server% 5C_public% 5C_ip / [http: // elk \ _server \ _public \ _ip /]. Wenn Sie in einem Webbrowser dorthin gehen, sollten Sie nach Eingabe der "kibanaadmin" -Anmeldeinformationen eine Kibana-Begrüßungsseite sehen, auf der Sie aufgefordert werden, ein Indexmuster zu konfigurieren. Lassen Sie uns später darauf zurückkommen, nachdem wir alle anderen Komponenten installiert haben.

Installieren Sie Logstash

Das Logstash-Paket verwendet denselben GPG-Schlüssel wie Elasticsearch. Wir haben diesen öffentlichen Schlüssel bereits installiert. Erstellen und bearbeiten Sie daher eine neue Yum-Repository-Datei für Logstash:

sudo vi /etc/yum.repos.d/logstash.repo

Fügen Sie die folgende Repository-Konfiguration hinzu:

/etc/yum.repos.d/logstash.repo

[logstash-2.2]
name=logstash repository for 2.2 packages
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

Speichern und schließen.

Installieren Sie Logstash mit diesem Befehl:

sudo yum -y install logstash

Logstash ist installiert, aber noch nicht konfiguriert.

Generieren Sie SSL-Zertifikate

Da wir Filebeat verwenden, um Protokolle von unseren Client-Servern an unseren ELK-Server zu senden, müssen wir ein SSL-Zertifikat und ein Schlüsselpaar erstellen. Das Zertifikat wird von Filebeat verwendet, um die Identität von ELK Server zu überprüfen. Erstellen Sie mit den folgenden Befehlen die Verzeichnisse, in denen das Zertifikat und der private Schlüssel gespeichert werden:

Jetzt haben Sie zwei Möglichkeiten, Ihre SSL-Zertifikate zu generieren. Wenn Sie ein DNS-Setup haben, mit dem Ihre Client-Server die IP-Adresse des ELK-Servers auflösen können, verwenden Sie * Option 2 *. Andernfalls können Sie mit * Option 1 * IP-Adressen verwenden.

Option 1: IP-Adresse

Wenn Sie kein DNS-Setup haben, das es Ihren Servern ermöglicht, Protokolle zu sammeln, um die IP-Adresse Ihres ELK-Servers aufzulösen, müssen Sie die private IP-Adresse Ihres ELK-Servers zum "+ subjectAltName +" hinzufügen (SAN) -Feld des zu generierenden SSL-Zertifikats. Öffnen Sie dazu die OpenSSL-Konfigurationsdatei:

sudo vi /etc/pki/tls/openssl.cnf

Suchen Sie den Abschnitt "+ [v3_ca] +" in der Datei und fügen Sie diese Zeile darunter ein (ersetzen Sie die private IP-Adresse des ELK-Servers):

openssl.cnf Auszug

subjectAltName = IP:

Speichern und schließen.

Generieren Sie nun das SSL-Zertifikat und den privaten Schlüssel an den entsprechenden Speicherorten (/ etc / pki / tls /) mit den folgenden Befehlen:

cd /etc/pki/tls
sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Die Datei logstash-forwarder.crt wird auf alle Server kopiert, die Protokolle an Logstash senden. Dies erfolgt jedoch etwas später. Vervollständigen wir unsere Logstash-Konfiguration. Wenn Sie diese Option gewählt haben, überspringen Sie Option 2 und fahren Sie mit * Logstash konfigurieren * fort.

Option 2: FQDN (DNS)

Wenn Sie ein DNS-Setup für Ihr privates Netzwerk haben, sollten Sie einen A-Eintrag erstellen, der die private IP-Adresse des ELK-Servers enthält. Dieser Domänenname wird im nächsten Befehl zum Generieren des SSL-Zertifikats verwendet. Alternativ können Sie einen Datensatz verwenden, der auf die öffentliche IP-Adresse des Servers verweist. Stellen Sie einfach sicher, dass Ihre Server (die Server, von denen Sie Protokolle sammeln) den Domänennamen in Ihren ELK-Server auflösen können.

Generieren Sie nun das SSL-Zertifikat und den privaten Schlüssel an den entsprechenden Speicherorten (/ etc / pki / tls /…) mit dem folgenden Befehl (Ersatz im FQDN des ELK-Servers):

cd /etc/pki/tls
sudo openssl req -subj '/CN=/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Die Datei logstash-forwarder.crt wird auf alle Server kopiert, die Protokolle an Logstash senden. Dies erfolgt jedoch etwas später. Vervollständigen wir unsere Logstash-Konfiguration.

Logstash konfigurieren

Logstash-Konfigurationsdateien haben das JSON-Format und befinden sich in /etc/logstash/conf.d. Die Konfiguration besteht aus drei Abschnitten: Eingaben, Filter und Ausgaben.

Erstellen wir eine Konfigurationsdatei mit dem Namen "+ 02-beats-input.conf +" und richten Sie unseren "Filebeat" -Eingang ein:

sudo vi /etc/logstash/conf.d/02-beats-input.conf

Fügen Sie die folgende * Eingabe * -Konfiguration ein:

02-beats-input.conf

input {
 beats {
   port => 5044
   ssl => true
   ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
   ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
 }
}

Speichern und Beenden. Dies spezifiziert einen "+ beats " - Eingang, der den TCP-Port " 5044 +" überwacht und das SSL-Zertifikat und den privaten Schlüssel verwendet, die wir zuvor erstellt haben.

Jetzt erstellen wir eine Konfigurationsdatei mit dem Namen "+ 10-syslog-filter.conf +", in der wir einen Filter für Syslog-Nachrichten hinzufügen:

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

Fügen Sie die folgende Syslog * Filter * Konfiguration ein:

10-syslog-filter.conf

filter {
 if [type] == "syslog" {
   grok {
     match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
     add_field => [ "received_at", "%{@timestamp}" ]
     add_field => [ "received_from", "%{host}" ]
   }
   syslog_pri { }
   date {
     match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
   }
 }
}

Speichern und Beenden. Dieser Filter sucht nach Protokollen, die als "syslog" -Typ (von Filebeat) gekennzeichnet sind, und versucht, eingehende Syslog-Protokolle mit "+ grok +" zu analysieren, um sie strukturiert und abfragbar zu machen.

Zuletzt erstellen wir eine Konfigurationsdatei mit dem Namen + 30-elasticsearch-output.conf +:

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Fügen Sie die folgende * Ausgabe * -Konfiguration ein:

/etc/logstash/conf.d/30-elasticsearch-output.conf

output {
 elasticsearch {
   hosts => ["localhost:9200"]
   sniffing => true
   manage_template => false
   index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
   document_type => "%{[@metadata][type]}"
 }
}

Speichern und schließen. Diese Ausgabe konfiguriert Logstash im Wesentlichen so, dass die Beats-Daten in Elasticsearch gespeichert werden, das unter + localhost: 9200 + in einem Index ausgeführt wird, der nach dem verwendeten Beat benannt ist (in unserem Fall Filebeat).

Wenn Sie Filter für andere Anwendungen hinzufügen möchten, die die Filebeat-Eingabe verwenden, müssen Sie die Dateien so benennen, dass sie zwischen der Eingabe- und der Ausgabekonfiguration sortiert sind (d. H. zwischen 02- und 30-).

Testen Sie Ihre Logstash-Konfiguration mit diesem Befehl:

sudo service logstash configtest

Es sollte "+ Konfiguration OK" angezeigt werden, wenn keine Syntaxfehler vorliegen. Versuchen Sie andernfalls, die Fehlerausgabe zu lesen, um festzustellen, was mit Ihrer Logstash-Konfiguration nicht stimmt.

Starten Sie Logstash neu und aktivieren Sie es, damit die Konfigurationsänderungen wirksam werden:

sudo systemctl restart logstash
sudo chkconfig logstash on

Als Nächstes laden wir die Kibana-Beispiel-Dashboards.

Laden Sie Kibana Dashboards

Elastic bietet verschiedene Beispiele für Kibana-Dashboards und Beats-Indexmuster, die Ihnen den Einstieg in Kibana erleichtern. Obwohl wir die Dashboards in diesem Lernprogramm nicht verwenden, werden sie trotzdem geladen, damit wir das darin enthaltene Filebeat-Indexmuster verwenden können.

Laden Sie zunächst das Beispiel-Dashboard-Archiv in Ihr Ausgangsverzeichnis herunter:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

Installiere das + unzip + Paket mit diesem Befehl:

sudo yum -y install unzip

Als nächstes extrahieren Sie den Inhalt des Archivs:

unzip beats-dashboards-*.zip

Laden Sie die Beispiel-Dashboards, Visualisierungen und Beats-Indexmuster mit den folgenden Befehlen in Elasticsearch:

cd beats-dashboards-*
./load.sh

Dies sind die Indexmuster, die wir gerade geladen haben:

  • [packetbeat-] YYYY.MM.DD

  • [topbeat-] YYYY.MM.DD

  • [filebeat-] YYYY.MM.DD

  • [winlogbeat-] YYYY.MM.DD

Wenn wir mit der Verwendung von Kibana beginnen, wählen wir das Filebeat-Indexmuster als Standard aus.

Laden Sie die Filebeat-Index-Vorlage in Elasticsearch

Da wir Filebeat zum Versenden von Protokollen an Elasticsearch verwenden möchten, sollten wir eine Filebeat-Indexvorlage laden. In der Indexvorlage wird Elasticsearch so konfiguriert, dass eingehende Filebeat-Felder auf intelligente Weise analysiert werden.

Laden Sie zunächst die Filebeat-Indexvorlage in Ihr Ausgangsverzeichnis herunter:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

Laden Sie dann die Vorlage mit diesem Befehl:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' [email protected]

Wenn die Vorlage ordnungsgemäß geladen wurde, sollte eine Meldung wie die folgende angezeigt werden:

Output:{
 "acknowledged" : true
}

Nachdem unser ELK-Server nun zum Empfang von Filebeat-Daten bereit ist, richten wir Filebeat auf jedem Client-Server ein.

Einrichten von Filebeat (Hinzufügen von Client-Servern)

Führen Sie diese Schritte für jeden * CentOS- oder RHEL 7 * -Server aus, den Sie an Ihren ELK-Server senden möchten. Anweisungen zum Installieren von Filebeat auf Debian-basierten Linux-Distributionen (z. Ubuntu, Debian usw.) finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat (Client-Server hinzufügen) [Abschnitt Einrichten von Filebeat (Client-Server hinzufügen)] in der Ubuntu-Variante dieses Tutorials.

Kopieren Sie das SSL-Zertifikat

Kopieren Sie auf Ihrem * ELK-Server * das im vorausgesetzten Lernprogramm erstellte SSL-Zertifikat auf Ihren * Client-Server * (ersetzen Sie die Adresse des Client-Servers und Ihr eigenes Login):

scp /etc/pki/tls/certs/logstash-forwarder.crt @:/tmp

Stellen Sie nach der Eingabe Ihrer Anmeldeinformationen sicher, dass die Zertifikatkopie erfolgreich war. Es wird für die Kommunikation zwischen den Client-Servern und dem ELK-Server benötigt.

Kopieren Sie nun auf Ihrem * Client Server * das SSL-Zertifikat des ELK Servers an den entsprechenden Speicherort (/ etc / pki / tls / certs):

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Jetzt installieren wir das Topbeat-Paket.

Installieren Sie das Filebeat-Paket

Führen Sie auf * Client Server * den folgenden Befehl aus, um den öffentlichen GPG-Schlüssel von Elasticsearch in rpm zu importieren:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Erstellen und bearbeiten Sie eine neue yum-Repository-Datei für Filebeat:

sudo vi /etc/yum.repos.d/elastic-beats.repo

Fügen Sie die folgende Repository-Konfiguration hinzu:

/etc/yum.repos.d/elastic-beats.repo

[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

Speichern und schließen.

Installieren Sie Filebeat mit diesem Befehl:

sudo yum -y install filebeat

Filebeat ist installiert, aber noch nicht konfiguriert.

Konfigurieren Sie Filebeat

Jetzt konfigurieren wir Filebeat so, dass eine Verbindung zu Logstash auf unserem ELK-Server hergestellt wird. In diesem Abschnitt erfahren Sie, wie Sie die mit Filebeat gelieferte Beispielkonfigurationsdatei ändern. Wenn Sie die Schritte ausführen, sollten Sie eine Datei haben, die ungefähr so ​​aussieht wie this.

Erstellen und bearbeiten Sie auf * Client Server * die Filebeat-Konfigurationsdatei:

sudo vi /etc/filebeat/filebeat.yml

Oben in der Datei sehen Sie den Abschnitt "+ prospectors ", in dem Sie * prospectors * definieren können, die angeben, welche Protokolldateien versendet und wie sie behandelt werden sollen. Jeder Prospektor wird durch das Zeichen " - +" gekennzeichnet.

Wir werden den vorhandenen Prospektor so ändern, dass er sichere und Nachrichten an Logstash sendet. Kommentieren Sie unter + path + die Datei + - / var / log / *. Log + aus. Dies verhindert, dass Filebeat alle "+ .log " in diesem Verzeichnis an Logstash sendet. Fügen Sie dann neue Einträge für " syslog" und "+ auth.log" hinzu. Es sollte ungefähr so ​​aussehen, wenn Sie fertig sind:

filebeat.yml Auszug 1 von 5

...
     paths:


       - /var/log/*.log
...

Suchen Sie dann die Zeile, die "+ document_type: +" angibt, kommentieren Sie sie aus und ändern Sie ihren Wert in "syslog". Nach der Änderung sollte es so aussehen:

filebeat.yml Auszug 2 von 5

...
     document_type:
...

Dies gibt an, dass die Protokolle in diesem Prospektor vom Typ * syslog * sind (nach diesem Typ sucht unser Logstash-Filter).

Wenn Sie andere Dateien an Ihren ELK-Server senden oder Änderungen an der Art und Weise vornehmen möchten, in der Filebeat Ihre Protokolle verarbeitet, können Sie Prospector-Einträge ändern oder hinzufügen.

Suchen Sie als nächstes im Abschnitt "+ output " die Zeile " elasticsearch: ", die den Elasticsearch-Ausgabeabschnitt angibt (den wir nicht verwenden werden). * Löschen Sie den gesamten Elasticsearch-Ausgabebereich * oder kommentieren Sie ihn aus (bis zur Zeile " logstash: +").

Suchen Sie den auskommentierten Logstash-Ausgabebereich, der durch die Zeile "+ # logstash: " gekennzeichnet ist, und entfernen Sie das Kommentarzeichen, indem Sie das vorangegangene " # " löschen. Kommentieren Sie in diesem Abschnitt die Zeile ` hosts: [" localhost: 5044 "] ` aus. Ändern Sie ` localhost +` in die private IP-Adresse (oder den Hostnamen, falls Sie diese Option gewählt haben) Ihres ELK-Servers:

filebeat.yml Auszug 3 von 5

 ### Logstash as output
 logstash:
   # The Logstash hosts
   hosts: [":5044"]

Dadurch wird Filebeat so konfiguriert, dass eine Verbindung zu Logstash auf Ihrem ELK-Server an Port 5044 (dem Port, für den wir zuvor einen Eingang angegeben haben) hergestellt wird.

Fügen Sie direkt unter dem Eintrag "+ hosts +" und mit demselben Einzug die folgende Zeile hinzu:

filebeat.yml Auszug 4 von 5

   bulk_max_size: 1024

Suchen Sie als Nächstes den Abschnitt "+ tls " und kommentieren Sie ihn aus. Deaktivieren Sie dann die Zeile, die " certificate_authorities " angibt, und ändern Sie ihren Wert in " [" /etc/pki/tls/certs/logstash-forwarder.crt "] +". Es sollte ungefähr so ​​aussehen:

filebeat.yml Auszug 5 von 5

...

     # List of root certificates for HTTPS server verifications

Dadurch wird Filebeat so konfiguriert, dass das auf dem ELK-Server erstellte SSL-Zertifikat verwendet wird.

Speichern und Beenden.

Starten Sie nun Filebeat und aktivieren Sie es, um unsere Änderungen zu übernehmen:

sudo systemctl start filebeat
sudo systemctl enable filebeat

Wenn Sie sich nicht sicher sind, ob Ihre Filebeat-Konfiguration korrekt ist, vergleichen Sie sie mit diesem example.

Jetzt sendet Filebeat Ihre syslog + messages + und + secure + Dateien an Ihren ELK Server! Wiederholen Sie diesen Abschnitt für alle anderen Server, für die Sie Protokolle erfassen möchten.

Testen Sie die Filebeat-Installation

Wenn Ihr ELK-Stack ordnungsgemäß eingerichtet ist, sollte Filebeat (auf Ihrem Client-Server) Ihre Protokolle an Logstash auf Ihrem ELK-Server senden. Logstash sollte die Filebeat-Daten in einem mit einem Datumsstempel versehenen Index (+ filebeat-YYYY.MM.DD +) in Elasticsearch laden.

Stellen Sie auf Ihrem * ELK Server * sicher, dass Elasticsearch die Daten tatsächlich empfängt, indem Sie den Filebeat-Index mit folgendem Befehl abfragen:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Sie sollten eine Reihe von Ausgaben sehen, die so aussehen:

Sample Output:...
{
     "_index" : "filebeat-2016.01.29",
     "_type" : "log",
     "_id" : "AVKO98yuaHvsHQLa53HE",
     "_score" : 1.0,
     "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
   }
...

Wenn Ihre Ausgabe 0 Treffer insgesamt anzeigt, lädt Elasticsearch keine Protokolle unter dem von Ihnen gesuchten Index und Sie sollten Ihr Setup auf Fehler überprüfen. Wenn Sie die erwartete Ausgabe erhalten haben, fahren Sie mit dem nächsten Schritt fort.

Stellen Sie eine Verbindung zu Kibana her

Wenn Sie mit dem Einrichten von Filebeat auf allen Servern fertig sind, für die Sie Protokolle erfassen möchten, schauen wir uns Kibana an, die Weboberfläche, die wir zuvor installiert haben.

Rufen Sie in einem Webbrowser den FQDN oder die öffentliche IP-Adresse Ihres ELK-Servers auf. Nach der Eingabe der Anmeldeinformationen für "kibanaadmin" sollte eine Seite angezeigt werden, auf der Sie aufgefordert werden, ein Standardindexmuster zu konfigurieren:

Wählen Sie im Menü "Indexmuster" (links) die Option "* [filebeat] -YYY.MM.DD " und klicken Sie auf die Schaltfläche " Star (Als Standardindex festlegen)", um den Filebeat-Index als Standard festzulegen.

Klicken Sie nun in der oberen Navigationsleiste auf den Link * Entdecken *. Standardmäßig werden Ihnen alle Protokolldaten der letzten 15 Minuten angezeigt. Sie sollten ein Histogramm mit Protokollereignissen und folgenden Protokollmeldungen sehen:

Im Moment ist nicht viel drin, da Sie nur Syslogs von Ihren Client-Servern sammeln. Hier können Sie Ihre Protokolle durchsuchen und durchsuchen. Sie können Ihr Dashboard auch anpassen.

Probieren Sie folgende Dinge aus:

  • Suchen Sie nach "root", um festzustellen, ob jemand versucht, sich als root bei Ihren Servern anzumelden

  • Suche nach einem bestimmten Hostnamen (suche nach + host:" "+)

  • Ändern Sie den Zeitrahmen, indem Sie einen Bereich im Histogramm oder im Menü oben auswählen

  • Klicken Sie auf Meldungen unter dem Histogramm, um zu sehen, wie die Daten gefiltert werden

Kibana hat viele andere Funktionen, wie z. B. Grafik und Filter.

Fazit

Nachdem Ihre Syslogs nun über Elasticsearch und Logstash zentralisiert sind und Sie sie mit Kibana visualisieren können, sollten Sie mit der Zentralisierung aller Ihrer wichtigen Logs gut beginnen. Denken Sie daran, dass Sie so ziemlich jede Art von Protokoll oder indizierten Daten an Logstash senden können, aber die Daten werden noch nützlicher, wenn sie mit grok analysiert und strukturiert werden.

Um Ihren neuen ELK-Stack zu verbessern, sollten Sie sich mit dem Sammeln und Filtern Ihrer anderen Protokolle mit Logstash und creating befassen Kibana-Dashboards. Möglicherweise möchten Sie auch gather system metrics using Topbeat mit deinem ELK Stack. Alle diese Themen werden in den anderen Tutorials dieser Reihe behandelt.

Viel Glück!