Elasticsearch, Fluentd und Kibana: Open Source Log Search und Visualisierung

Ein Artikel von Fluentd

Überblick

Mit Elasticsearch, Fluentd und Kibana (EFK) können Sie Protokolldaten erfassen, indizieren, suchen und visualisieren. Dies ist eine großartige Alternative zur proprietären Software Splunk, mit der Sie kostenlos loslegen können, für die jedoch eine kostenpflichtige Lizenz erforderlich ist, sobald sich das Datenvolumen erhöht.

Dieses Tutorial zeigt Ihnen, wie Sie eine Protokolllösung mit drei Open-Source-Softwarekomponenten erstellen: http://www.elasticsearch.org [Elasticsearch], Fluentd und http: // www. kibana.org [Kibana].

Voraussetzungen

  • Tröpfchen mit * Ubuntu 14.04 *

  • Benutzer mit den Berechtigungen sudo

Installieren und Konfigurieren von Elasticsearch

Java bekommen

Elasticsearch erfordert Java. Der erste Schritt ist die Installation von Java.

sudo apt-get update
sudo apt-get install openjdk-7-jre-headless --yes

Überprüfen Sie, ob Java tatsächlich installiert wurde. Run:

java -version

Die Ausgabe sollte wie folgt aussehen:

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

Elasticsearch bekommen

Laden Sie anschließend das Deb-Paket von Elasticsearch wie folgt herunter und installieren Sie es.

sudo wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.2.deb
sudo dpkg -i elasticsearch-1.2.2.deb

Elasticsearch absichern

Bis Version 1.2 war die dynamische Skriptfunktion von Elasticsearch standardmäßig aktiviert. Da in diesem Tutorial das Kibana-Dashboard für den Zugriff über das öffentliche Internet eingerichtet ist, deaktivieren Sie dynamisches Scripting, indem Sie die folgende Zeile am Ende von "+ /etc/elasticsearch/elasticsearch.yml +" anhängen:

script.disable_dynamic: true

Elasticsearch starten

Starten Sie Elasticsearch mit dem folgenden Befehl.

sudo service elasticsearch start

Kibana installieren und konfigurieren

Kibana bekommen

Wechseln Sie in Ihr Home-Verzeichnis:

cd ~

Wir werden Kibana wie folgt herunterladen:

curl -L https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz | tar xzf -
sudo cp -r kibana-3.1.0 /usr/share/

Kibana konfigurieren

Da Kibana anstelle des Standard-Ports 9200 Port 80 für die Kommunikation mit Elasticsearch verwendet, muss die Datei + config.js + von Kibana aktualisiert werden.

Öffnen Sie + / usr / share / kibana-3.1.0 / config.js + und suchen Sie nach der folgenden Zeile:

elasticsearch: "http://"+window.location.hostname+":",

und ersetzen Sie es durch die folgende Zeile:

elasticsearch: "http://"+window.location.hostname+":",

Installieren und Konfigurieren von Nginx (Proxy Server)

Wir werden Nginx als Proxy-Server verwenden, um den Zugriff auf das Dashboard aus dem öffentlichen Internet (mit grundlegender Authentifizierung) zu ermöglichen.

Installieren Sie Nginx wie folgt:

sudo apt-get install nginx --yes

Kibana stellt eine gute Standard-nginx.conf bereit, die wir leicht modifizieren werden.

Installieren Sie zunächst die Konfigurationsdatei wie folgt:

wget https://assets.digitalocean.com/articles/fluentd/nginx.conf
sudo cp nginx.conf /etc/nginx/sites-available/default

Hinweis: Die Originaldatei stammt aus diesem Kibana GitHub-Repository.

Bearbeiten Sie dann + / etc / nginx / sites-available / default + wie folgt (Änderungen sind rot markiert):

#
# Nginx proxy for Elasticsearch + Kibana
#
# In this setup, we are password protecting the saving of dashboards. You may
# wish to extend the password protection to all paths.
#
# Even though these paths are being called as the result of an ajax request, the
# browser will prompt for a username/password on the first request
#
# If you use this, you'll want to point config.js at http://FQDN:80/ instead of
# http://FQDN:9200
#
server {
listen                *:80 ;
server_name           ;
access_log            ;
location / {
  root  /usr/share/;
  index  index.html  index.htm;
}

Starten Sie nginx abschließend wie folgt neu:

$ sudo service nginx restart

Jetzt sollten Sie das generische Kibana-Dashboard unter der IP-Adresse oder Domäne Ihres Servers mit Ihrem bevorzugten Browser anzeigen können.

Installation und Konfiguration von Fluentd

Lassen Sie uns abschließend https://www.fluentd.org [Fluentd] installieren. Wir werden td-agent verwenden, die Paketversion von Fluentd, die von http://www.treasuredata.com [Treasure Data] erstellt und verwaltet wird.

Installation von Fluentd über das td-agent-Paket

Installieren Sie Fluentd mit den folgenden Befehlen:

wget http://packages.treasuredata.com/2/ubuntu/trusty/pool/contrib/t/td-agent/td-agent_2.0.4-0_amd64.deb
sudo dpkg -i td-agent_2.0.4-0_amd64.deb

Plugins installieren

Wir brauchen ein paar Plugins:

  1. out_elasticsearch: Mit diesem Plugin kann Fluentd Daten an Elasticsearch streamen.

  2. outrecordreformer: Mit diesem Plugin können wir Daten in einem nützlicheren Format verarbeiten.

Die folgenden Befehle installieren beide Plugins (das erste apt-get ist für out_elasticsearch: es erfordert + make + und + libcurl +)

sudo apt-get install make libcurl4-gnutls-dev --yes
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer

Als Nächstes konfigurieren wir Fluentd so, dass Syslog-Nachrichten abgehört und an Elasticsearch gesendet werden. Öffnen Sie + / etc / td-agent / td-agent.conf + und fügen Sie die folgenden Zeilen oben in die Datei ein:

<source>
type syslog
port 5140
tag  system
</source>
<match system.*.*>
type record_reformer
tag elasticsearch
facility ${tag_parts[1]}
severity ${tag_parts[2]}
</match>
<match elasticsearch>
type copy
<store>
  type stdout
</store>
<store>
type elasticsearch
logstash_format true
flush_interval 5s #debug
</store>
</match>

Fluentd starten

Starten Sie Fluentd mit folgendem Befehl:

sudo service td-agent start

Weiterleitung des rsyslog-Verkehrs an Fluentd

Ubuntu 14.04 wird mit rsyslogd ausgeliefert. Es muss neu konfiguriert werden, um Syslog-Ereignisse an den Port weiterzuleiten, den Fluentd überwacht (in diesem Beispiel Port 5140).

Öffnen Sie "+ / etc / rsyslog.conf " (Sie müssen " sudo +" verwenden) und fügen Sie die folgende Zeile oben hinzu

*.* @127.0.0.1:5140

Starten Sie rsyslogd nach dem Speichern und Verlassen des Editors wie folgt neu:

sudo service rsyslog restart

Einrichten von Kibana Dashboard-Bedienfeldern

Die Standardanzeigen von Kibana sind sehr allgemein gehalten. Es wird daher empfohlen, sie anzupassen. Hier zeigen wir zwei Methoden.

Methode 1: Verwenden einer Vorlage

Das Fluentd-Team bietet eine alternative Kibana-Konfiguration an, die mit diesem Setup besser funktioniert als die Standardkonfiguration. Führen Sie den folgenden Befehl aus, um diese alternative Konfiguration zu verwenden:

wget -O default.json https://assets.digitalocean.com/articles/fluentd/default.json
sudo cp default.json /usr/share/kibana-3.1.0/app/dashboards/default.json

Hinweis: Die ursprüngliche Konfigurationsdatei stammt vom GitHub gist des Autors.

Wenn Sie Ihre Kibana-Dashboard-Homepage unter der URL Ihres Servers aktualisieren, sollte Kibana jetzt so konfiguriert sein, dass Histogramme nach Syslog-Schweregrad und -Einrichtung sowie aktuelle Protokollzeilen in einer Tabelle angezeigt werden.

Methode 2: Manuelles Konfigurieren

Rufen Sie die IP-Adresse oder Domäne Ihres Servers auf, um das Kibana-Dashboard anzuzeigen.

Es gibt einige Starter-Vorlagen. Wählen Sie jedoch die leere Vorlage mit dem Namen "* Leeres Dashboard: Ich kann sie problemlos selbst konfigurieren *", die unten im Begrüßungstext angezeigt wird.

Klicken Sie anschließend rechts im Dashboard auf die Schaltfläche * + ADD A ROW *. Ein Konfigurationsbildschirm für eine neue Zeile (eine * Zeile * besteht aus einem oder mehreren Feldern) sollte angezeigt werden. Geben Sie einen Titel ein, klicken Sie auf die Schaltfläche * Zeile erstellen * und anschließend auf * Speichern *. Dies erzeugt eine Reihe.

Wenn eine leere Zeile erstellt wird, zeigt Kibana auf der linken Seite die Eingabeaufforderung * Panel zur leeren Zeile hinzufügen * an. Klicken Sie auf diese Schaltfläche. Sie gelangen zum Konfigurationsbildschirm, in dem Sie ein neues Panel hinzufügen können. Wählen Sie * Histogramm * aus dem Dropdown-Menü. Ein Histogramm ist ein Zeitdiagramm. Weitere Informationen finden Sie unter Kibanas Dokumentation.

Es gibt viele Parameter, die für ein neues Histogramm konfiguriert werden müssen, aber Sie können einfach nach unten scrollen und die Taste * Speichern * drücken. Dadurch wird ein neues Panel erstellt.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_histogram_details.png [Kibana Histogram Details]

Weitere Informationen

Weitere Informationen zum Konfigurieren von Kibana finden Sie auf der Kibana-Dokumentationsseite.