Elasticsearch, Fluentd et Kibana: recherche et visualisation de journaux Open Source

Un article de Fluentd

Vue d’ensemble

Elasticsearch, Fluentd et Kibana (EFK) vous permettent de collecter, d’indexer, de rechercher et de visualiser les données du journal. C’est une excellente alternative au logiciel propriétaire Splunk, qui vous permet de vous lancer gratuitement, mais nécessite une licence payante lorsque le volume de données augmente.

Ce tutoriel explique comment créer une solution de journalisation à l’aide de trois composants logiciels open source: http://www.elasticsearch.org [Elasticsearch], Fluentd et http: // www. kibana.org [Kibana].

Conditions préalables

  • Droplet avec * Ubuntu 14.04 *

  • Utilisateur avec les privilèges sudo

Installer et configurer Elasticsearch

Obtenir Java

Elasticsearch nécessite Java. La première étape consiste donc à installer Java.

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

Vérifiez que Java a bien été installé. Run:

java -version

La sortie devrait être comme suit:

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)

Obtenir Elasticsearch

Ensuite, téléchargez et installez le paquet deb Elasticsearch comme suit.

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

Sécuriser Elasticsearch

Jusqu’à la version 1.2, la fonctionnalité de script dynamique d’Elasticsearch était activée par défaut. Depuis que ce tutoriel configure le tableau de bord Kibana pour qu’il soit accessible depuis l’Internet public, désactivons le script dynamique en ajoutant la ligne suivante à la fin de + / etc / elasticsearch / elasticsearch.yml +:

script.disable_dynamic: true

Démarrer Elasticsearch

Commencez à exécuter Elasticsearch avec la commande suivante.

sudo service elasticsearch start

Installation et configuration de Kibana

Obtenir Kibana

Déplacer vers votre répertoire personnel:

cd ~

Nous allons télécharger Kibana comme suit:

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/

Configuration de Kibana

Étant donné que Kibana utilisera le port 80 pour communiquer avec Elasticsearch, par opposition au port par défaut 9200, le fichier + config.js + de Kibana doit être mis à jour.

Ouvrez + / usr / share / kibana-3.1.0 / config.js + et cherchez la ligne suivante:

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

et remplacez-le par la ligne suivante:

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

Installation et configuration de Nginx (Proxy Server)

Nous utiliserons Nginx en tant que serveur proxy pour permettre l’accès au tableau de bord à partir de l’Internet public (avec une authentification de base).

Installez Nginx comme suit:

sudo apt-get install nginx --yes

Kibana fournit un bon fichier par défaut nginx.conf, que nous modifierons légèrement.

Tout d’abord, installez le fichier de configuration comme suit:

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

Remarque: le fichier d’origine provient de ce référentiel Kibana GitHub.

Ensuite, éditez + / etc / nginx / sites-available / default + comme suit (modifications marquées en rouge):

#
# 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;
}

Enfin, redémarrez nginx comme suit:

$ sudo service nginx restart

Vous devriez maintenant pouvoir voir le tableau de bord générique Kibana à l’adresse IP ou au domaine de votre serveur, à l’aide de votre navigateur favori.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_welcome.png [Bienvenue à Kibana]

Installation et configuration de Fluentd

Enfin, installons https://www.fluentd.org [Fluentd]. Nous allons utiliser td-agent, la version fournie de Fluentd, construite et maintenue par http://www.treasuredata.com [Treasure Data].

Installation de Fluentd via le package td-agent

Installez Fluentd avec les commandes suivantes:

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

Installer des plugins

Nous avons besoin de quelques plugins:

  1. out_elasticsearch: ce plugin permet à Fluentd de diffuser des données en continu vers Elasticsearch.

  2. outrecordreformer: ce plugin nous permet de traiter les données dans un format plus utile.

Les commandes suivantes installent les deux plugins (le premier apt-get est pour out_elasticsearch: il nécessite + make + et + + 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

Ensuite, nous configurons Fluentd pour écouter les messages syslog et les envoyer à Elasticsearch. Ouvrez + / etc / td-agent / td-agent.conf + et ajoutez les lignes suivantes en haut du fichier:

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

Démarrer Fluentd

Démarrez Fluentd avec la commande suivante:

sudo service td-agent start

Transfert du trafic rsyslog vers Fluentd

Ubuntu 14.04 est livré avec rsyslogd. Il doit être reconfiguré pour transférer les événements syslog sur le port que Fluentd écoute (le port 5140 dans cet exemple).

Ouvrez + / etc / rsyslog.conf + (vous devez + + sudo +) et ajoutez la ligne suivante en haut

*.* @127.0.0.1:5140

Après avoir sauvegardé et quitté l’éditeur, redémarrez rsyslogd comme suit:

sudo service rsyslog restart

Configuration des panneaux de tableau de bord Kibana

Les panneaux par défaut de Kibana sont très génériques, il est donc recommandé de les personnaliser. Ici, nous montrons deux méthodes.

Méthode 1: Utiliser un modèle

L’équipe Fluentd propose une autre configuration Kibana qui fonctionne mieux avec cette configuration que celle par défaut. Pour utiliser cette configuration alternative, exécutez la commande suivante:

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

Remarque: le fichier de configuration d’origine provient de l’adresse GitHub de l’auteur.

Si vous actualisez votre page d’accueil de tableau de bord Kibana à l’URL de votre serveur, Kibana doit maintenant être configuré pour afficher les histogrammes par gravité et installation, ainsi que les lignes de journal récentes d’un tableau.

Méthode 2: configuration manuelle

Accédez à l’adresse IP ou au domaine de votre serveur pour afficher le tableau de bord Kibana.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_welcome.png [Bienvenue à Kibana]

Il existe quelques modèles de départ, mais choisissons le modèle vierge appelé * Tableau de bord vide: je suis à l’aise pour configurer seul *, comme indiqué au bas du texte de bienvenue.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_blank.png [Modèle vierge de Kibana]

Ensuite, cliquez sur le bouton * + AJOUTER UNE LIGNE * sur le côté droit du tableau de bord. Un écran de configuration pour une nouvelle ligne (une * ligne * consiste en un ou plusieurs panneaux) devrait apparaître. Entrez un titre, appuyez sur le bouton * Créer une ligne *, puis sur * Enregistrer *. Cela crée une ligne.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_row.png [Rangée Kibana]

Lorsqu’une ligne vide est créée, Kibana affiche l’invite * Ajouter un panneau à la ligne vide * à gauche. Cliquez sur ce bouton. Cela vous amène à l’écran de configuration pour ajouter un nouveau panneau. Choisissez * histogramme * dans le menu déroulant. Un histogramme est un diagramme de temps; pour plus d’informations, voir Kibana’s documentation.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_histogram.png [Histogramme de Kibana]

Il existe de nombreux paramètres à configurer pour un nouvel histogramme, mais vous pouvez simplement faire défiler l’écran et appuyer sur le bouton * Enregistrer *. Cela crée un nouveau panneau.

image: https: //assets.digitalocean.com/articles/fluentd/kibana_histogram_details.png [Détails de l’histogramme Kibana]

Informations complémentaires

Pour plus d’informations sur la configuration de Kibana, veuillez consulter la Kibana page de documentation.