So installieren Sie Elasticsearch, Logstash und Kibana (ELK Stack) unter Ubuntu 14.04

Einführung

In diesem Tutorial werden wir die Installation des Elasticsearch ELK-Stacks unter Ubuntu 14.04 durchgehen - Elasticsearch 2.2.x, Logstash 2.2.x und Kibana 4.5.x. 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 deshalb nützlich, weil 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: Webschnittstelle zum Suchen und Visualisieren von Protokollen, die über Nginx übertragen werden

  • Filebeat: Filebeat wird auf Client-Servern installiert, die ihre Protokolle an Logstash senden. Es dient als Protokollversandagent, der das Netzwerkprotokoll vonlumberjackfür die Kommunikation mit Logstash verwendet

ELK Infrastructure

Wir werden die ersten drei Komponenten auf einem einzelnen Server installieren, den wir alsELK Server bezeichnen. Filebeat wird auf allen Client-Servern installiert, für die wir Protokolle sammeln möchten, die wir zusammen alsClient Serversbezeichnen.

Voraussetzungen

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

Wenn Sie stattdessen lieber CentOS verwenden möchten, lesen Sie dieses Tutorial:How To Install ELK on CentOS 7.

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: Ubuntu 14.04

  • 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.

Fügen Sie den Oracle Java PPA zu apt hinzu:

sudo add-apt-repository -y ppa:webupd8team/java

Aktualisieren Sie Ihre apt-Paketdatenbank:

sudo apt-get update

Installieren Sie die neueste stabile Version von Oracle Java 8 mit diesem Befehl (und akzeptieren Sie die Lizenzvereinbarung, die angezeigt wird):

sudo apt-get -y install oracle-java8-installer

Nachdem Java 8 installiert ist, installieren wir ElasticSearch.

Installieren Sie Elasticsearch

Elasticsearch kann mit einem Paketmanager installiert werden, indem die Paketquellenliste von Elastic hinzugefügt wird.

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

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Wenn Ihre Eingabeaufforderung nur dort hängt, wartet sie wahrscheinlich auf das Kennwort Ihres Benutzers (um den Befehlsudozu autorisieren). In diesem Fall geben Sie Ihr Passwort ein.

Erstellen Sie das Elasticsearch-Orderbuch:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

Aktualisieren Sie Ihre apt-Paketdatenbank:

sudo apt-get update

Installieren Sie Elasticsearch mit diesem Befehl:

sudo apt-get -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, dienetwork.host angibt, kommentieren Sie sie aus und ersetzen Sie ihren Wert durch "localhost", sodass er folgendermaßen aussieht:

elasticsearch.yml excerpt (updated)

network.host: localhost

Speichern und beenden Sieelasticsearch.yml.

Starten Sie jetzt Elasticsearch:

sudo service elasticsearch restart

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

sudo update-rc.d elasticsearch defaults 95 10

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

Installieren Sie Kibana

Kibana kann mit einem Paketmanager installiert werden, indem die Paketquellenliste von Elastic hinzugefügt wird.

Erstellen Sie die Kibana-Quellenliste:

echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.5.x.list

Aktualisieren Sie Ihre apt-Paketdatenbank:

sudo apt-get update

Installieren Sie Kibana mit diesem Befehl:

sudo apt-get -y install kibana

Kibana ist jetzt installiert.

Öffnen Sie die Kibana-Konfigurationsdatei zum Bearbeiten:

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

Suchen Sie in der Kibana-Konfigurationsdatei die Zeile, in derserver.host angegeben ist, und ersetzen Sie die IP-Adresse (standardmäßig „0.0.0.0“) durch „localhost“:

kibana.yml excerpt (updated)

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-Reverse-Proxy verwenden, um den externen Zugriff zu ermöglichen.

Aktivieren Sie nun den Kibana-Dienst und starten Sie ihn:

sudo update-rc.d kibana defaults 96 9
sudo service kibana start

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 eslocalhost abhört, müssen wir einen Reverse-Proxy einrichten, um externen Zugriff darauf zu ermöglichen. Wir werden Nginx für diesen Zweck verwenden.

Note: Wenn Sie bereits eine Nginx-Instanz haben, die Sie verwenden möchten, können Sie diese stattdessen verwenden. Stellen Sie einfach sicher, dass Sie Kibana so konfigurieren, dass es von Ihrem Nginx-Server erreicht werden kann (Sie möchten wahrscheinlich den Wert vonhostin/opt/kibana/config/kibana.yml in die private IP-Adresse oder den Hostnamen Ihres Kibana-Servers ändern). Außerdem wird empfohlen, SSL / TLS zu aktivieren.

Verwenden Sie apt, um die Nginx- und Apache2-Utils zu installieren:

sudo apt-get install nginx apache2-utils

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 kibanaadmin

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 den Nginx-Standardserverblock in Ihrem bevorzugten Editor. Wir werden vi verwenden:

sudo vi /etc/nginx/sites-available/default

Löschen Sie den Inhalt der Datei und fügen Sie den folgenden Codeblock in die Datei ein. Stellen Sie sicher, dass Sieserver_nameo aktualisieren, dass sie mit dem Namen Ihres Servers übereinstimmen:

/etc/nginx/sites-available/default

server {
    listen 80;

    server_name example.com;

    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-Verkehr Ihres Servers an die Kibana-Anwendung geleitet wird, dielocalhost:5601 überwacht. Außerdem verwendet Nginx die zuvor erstelltehtpasswd.users-Datei und erfordert eine grundlegende Authentifizierung.

Starten Sie nun Nginx neu, damit die Änderungen wirksam werden:

sudo service nginx restart

Kibana ist jetzt über Ihren FQDN oder die öffentliche IP-Adresse Ihres ELK-Servers erreichbar, d. H. 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 ist im selben Repository wie Elasticsearch verfügbar. Wir haben diesen öffentlichen Schlüssel bereits installiert. Erstellen wir also die Logstash-Quellliste:

echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list

Aktualisieren Sie Ihre apt-Paketdatenbank:

sudo apt-get update

Installieren Sie Logstash mit diesem Befehl:

sudo apt-get 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:

sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private

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

Option 1: IP-Adresse

Wenn Sie kein DNS-Setup haben, mit dem Ihre Server, von denen Sie Protokolle sammeln, die IP-Adresse Ihres ELK-Servers auflösen können, müssen Sie die private IP-Adresse Ihres ELK-Servers zusubjectAltNamehinzufügen. s (SAN) -Feld des SSL-Zertifikats, das wir generieren möchten. Öffnen Sie dazu die OpenSSL-Konfigurationsdatei:

sudo vi /etc/ssl/openssl.cnf

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

openssl.cnf excerpt (updated)

subjectAltName = IP: ELK_server_private_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/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Dielogstash-forwarder.crt-Datei wird auf alle Server kopiert, die Protokolle an Logstash senden, aber das werden wir etwas später tun. Vervollständigen wir unsere Logstash-Konfiguration. Wenn Sie diese Option gewählt haben, überspringen Sie Option 2 und fahren Sie mitConfigure Logstash fort.

Option 2: FQDN (DNS)

Wenn Sie über ein DNS-Setup für Ihr privates Netzwerk verfügen, 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=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Dielogstash-forwarder.crt-Datei wird auf alle Server kopiert, die Protokolle an Logstash senden, aber das werden wir etwas später tun. 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.

Lassen Sie uns eine Konfigurationsdatei mit dem Namen02-beats-input.conf erstellen und unsere Eingabe "filebeat" einrichten:

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

Fügen Sie die folgende Konfiguration voninputein:

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 gibt einebeats-Eingabe an, die den TCP-Port5044 überwacht, und verwendet das zuvor erstellte SSL-Zertifikat und den privaten Schlüssel.

Erstellen wir nun eine Konfigurationsdatei mit dem Namen10-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 Konfiguration von syslogfilterein:

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 (von Filebeat) als "Syslog" -Typ gekennzeichnet sind, und versucht,grok zu verwenden, um eingehende Syslog-Protokolle zu analysieren, um sie strukturiert und abfragefähig zu machen.

Zuletzt erstellen wir eine Konfigurationsdatei mit dem Namen30-elasticsearch-output.conf:

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

Fügen Sie die folgende Konfiguration vonoutputein:

/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 grundsätzlich so, dass die Beats-Daten in Elasticsearch, das mitlocalhost:9200 ausgeführt wird, in einem Index gespeichert werden, 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 sollteConfiguration OK anzeigen, 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 service logstash restart
sudo update-rc.d logstash defaults 96 9

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

Installieren Sie dasunzip-Paket mit diesem Befehl:

sudo apt-get -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 Ubuntu- oder Debian-Server aus, den Sie an Logstash auf Ihrem ELK-Server senden möchten. Anweisungen zum Installieren von Filebeat auf Red Hat-basierten Linux-Distributionen (z. RHEL, CentOS usw.) beziehen sich aufSet Up Filebeat (Add Client Servers) section der CentOS-Variante dieses Lernprogramms.

Kopieren Sie das SSL-Zertifikat

Kopieren Sie auf IhrenELK Server das im vorausgesetzten Lernprogramm erstellte SSL-Zertifikat in IhreClient Server (ersetzen Sie die Adresse des Client-Servers und Ihr eigenes Login):

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/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 IhrenClient 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

Erstellen Sie aufClient Server die Beats-Quellliste:

echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list

Es wird auch derselbe GPG-Schlüssel wie für Elasticsearch verwendet, der mit dem folgenden Befehl installiert werden kann:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Dann installieren Sie das Filebeat-Paket:

sudo apt-get update
sudo apt-get 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 wiethis aussieht.

Erstellen und bearbeiten Sie unterClient Server die Filebeat-Konfigurationsdatei:

sudo vi /etc/filebeat/filebeat.yml

[.note] #Note: Die Konfigurationsdatei von Filebeat ist im YAML-Format, was bedeutet, dass das Einrücken sehr wichtig ist! Stellen Sie sicher, dass Sie die gleiche Anzahl von Leerzeichen verwenden, die in dieser Anleitung angegeben sind.
#

Oben in der Datei sehen Sie den Abschnittprospectors, in dem Sieprospectors definieren können, die angeben, welche Protokolldateien versendet werden sollen und wie sie behandelt werden sollen. Jeder Prospektor wird durch das Zeichen-angezeigt.

Wir werden den vorhandenen Prospektor so ändern, dasssyslog undauth.log an Logstash gesendet werden. Kommentieren Sie unterpaths die Datei- /var/log/*.log aus. Dadurch wird verhindert, dass Filebeat alle.log in diesem Verzeichnis an Logstash sendet. Fügen Sie dann neue Einträge fürsyslog undauth.log hinzu. Es sollte ungefähr so ​​aussehen, wenn Sie fertig sind:

filebeat.yml excerpt 1 of 5

...
      paths:
        - /var/log/auth.log
        - /var/log/syslog
#        - /var/log/*.log
...

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

filebeat.yml excerpt 2 of 5

...
      document_type: syslog
...

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

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 Abschnittoutput die Zeileelasticsearch:, die den Elasticsearch-Ausgabeabschnitt angibt (den wir nicht verwenden werden). Delete or comment out the entire Elasticsearch output section (bis zu der Zeile#logstash:).

Suchen Sie den auskommentierten Logstash-Ausgabeabschnitt, der durch die Zeile#logstash: gekennzeichnet ist, und kommentieren Sie ihn aus, indem Sie die vorhergehenden# löschen. Kommentieren Sie in diesem Abschnitt die Zeilehosts: ["localhost:5044"]aus. Ändern Sielocalhost in die private IP-Adresse (oder den Hostnamen, falls Sie diese Option gewählt haben) Ihres ELK-Servers:

filebeat.yml excerpt 3 of 5

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

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

Fügen Sie direkt unter dem Eintraghostsund mit demselben Einzug diese Zeile hinzu:

filebeat.yml excerpt 4 of 5

    bulk_max_size: 1024

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

filebeat.yml excerpt 5 of 5

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

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

Speichern und Beenden.

Starten Sie nun Filebeat neu, um die Änderungen zu übernehmen:

sudo service filebeat restart
sudo update-rc.d filebeat defaults 95 10

Wenn Sie nicht sicher sind, ob Ihre Filebeat-Konfiguration korrekt ist, vergleichen Sie sie mit diesenexample Filebeat configuration.

Jetzt sendet Filebeatsyslog undauth.log an Logstash auf Ihrem 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 Index mit Datumsstempel,filebeat-YYYY.MM.DD, in Elasticsearch laden.

Stellen Sie auf IhrenELK Server sicher, dass Elasticsearch die Daten tatsächlich empfängt, indem Sie mit dem folgenden Befehl nach dem Filebeat-Index 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 Index, nach dem Sie gesucht haben, 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:

Create index

Wählen Sie[filebeat]-YYY.MM.DD aus dem Menü Indexmuster (linke Seite) aus und klicken Sie dann auf die SchaltflächeStar (Set as default index), um den Filebeat-Index als Standard festzulegen.

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

Discover page

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 nachhost: "hostname")

  • Ä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-Stapel zu verbessern, sollten Sie Ihre anderen Protokolle mit Logstash undcreating Kibana dashboards erfassen und filtern. Möglicherweise möchten Sie auchgather system metrics by using Topbeat mit Ihrem ELK-Stapel. Alle diese Themen werden in den anderen Tutorials dieser Reihe behandelt.

Viel Glück!

Related