Présentation
La pile ELK est un ensemble d'outils populaires composé d'Elasticsearch, Logstash et Kibana. Ces trois outils forment une pile logicielle qui peut fonctionner comme un outil extrêmement puissant d'analyse centralisée des données réseau et de visualisation des journaux de serveur. La pile ELK est également conçue pour être très capable d'évoluer sur plusieurs serveurs pour l'équilibrage de charge. Dans ce tutoriel, nous allons installer tous les composants de la pile ELK sur un seul serveur.
Prérequis
- Un serveur exécutant Debian 8. Si vous n'avez pas encore de serveur, Atlantic.net propose des serveurs d'hébergement VPS fiables que vous pouvez lancer en moins de 30 secondes.
D'autres systèmes d'exploitation sont pris en charge, mais cet article se concentre sur Debian 8.
Installation de la pile ELK sur Debian 8
Sudo
Travailler en tant qu'utilisateur root est généralement déconseillé du point de vue de la sécurité. Utilisation de sudo
vous permet d'exécuter des commandes nécessitant des privilèges root d'un utilisateur non root. Par défaut, Debian n'inclut pas le sudo
package, nous allons donc l'installer.
apt-get install sudo
Vous devrez ensuite ajouter le compte utilisateur standard au sudo
groupe que vous souhaitez pouvoir exécuter des commandes de privilège root. Remplacez <username>
avec le nom d'utilisateur du compte.
addusersudo
Déconnectez-vous et reconnectez-vous avec votre nouvel utilisateur, et nous pourrons continuer.
La première fois que vous utilisez
sudo
dans une session vous demandera le mot de passe de l'utilisateur actuel.
Installer Elasticsearch
Commençons le processus en installant Java sur notre serveur.
Elasticsearch, le composant d'indexation et de recherche de données de la pile ELK, nécessite l'exécution de Java. Nous allons installer la version OpenJDK 7, mais vous pouvez installer n'importe quel JRE répertorié dans la matrice de prise en charge d'Elasticsearch.
Tout d'abord, nous devrons mettre à jour les listes de packages sur notre serveur.
sudo apt-get update
Nous pouvons maintenant installer le JRE.
sudo apt-get install openjdk-7-jre
Cette installation peut prendre un certain temps car il y a beaucoup de dépendances à trier par APT.
Une fois cela terminé, nous pouvons installer Elasticsearch. La version d'Elasticsearch dans les dépôts officiels de Debian est très ancienne et n'est pas prise en charge par les nouvelles versions de Kibana, nous allons donc ajouter le dépôt elastic.co à notre serveur et installer Elasticsearch à partir de là.
Téléchargez et installez la clé de signature du référentiel pour elastic.co.
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key ajouter -
Ensuite, nous pouvons ajouter le référentiel au /etc/apt/sources.list.d/
répertoire.
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list
À ce stade, nous devons à nouveau mettre à jour les listes de packages, ce qui ajoutera la nouvelle version d'Elasticsearch du référentiel elastic.co aux listes de packages.
sudo apt-get update
Maintenant, nous pouvons installer Elasticsearch.
sudo apt-get install elasticsearch
Nous devrons également configurer le service Elasticsearch pour qu'il se lance au démarrage du système.
sudo systemctl daemon-reloadsudo systemctl enable elasticsearch.service
C'est ça! Vous pouvez maintenant démarrer le service Elasticsearch.
sudo systemctl démarrer elasticsearch.service
Et assurez-vous qu'il est actif.
statut systemctl elasticsearch.service
Configuration d'Elasticsearch
Dans notre cas, ce n'est pas nécessaire, mais si Kibana et Elasticsearch s'exécutent sur différents serveurs (comme le font de nombreux déploiements ELK), vous devrez modifier le fichier de configuration Elasticsearch, /etc/elasticsearch/elasticsearch.yml
sur le serveur Elasticsearch, et ajoutez les deux lignes suivantes n'importe où dans le fichier :
http.cors.allow-origin :"/.*/"http.cors.enabled :vrai
Dans le même fichier, ajoutez une ligne pour nommer le cluster Elasticsearch. Le nom par défaut est elasticsearch.
cluster.name :elasticcluster
Modification du fichier de configuration Elasticsearch
Assurez-vous de ne pas ajouter de lignes vides ou d'espaces au fichier de configuration, car les fichiers YAML sont sensibles aux espaces.
Et puis redémarrez le démon Elasticsearch.
sudo systemctl redémarre elasticsearch.service
Encore une fois, assurez-vous que le démon s'exécute correctement.
statut systemctl elasticsearch.service
État du service Elasticsearch
Installer Logstash
Nous pouvons installer Logstash, le composant d'envoi et de transformation des journaux de la pile ELK, à peu près de la même manière qu'Elasticsearch.
Si vous avez suivi ce tutoriel, vous aurez déjà ajouté la clé de signature du package Elastic.co. Ainsi, nous pouvons ignorer cette partie et ajouter immédiatement le référentiel logstash Elastic.co à notre /etc/apt/sources.list.d/
.
echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list
Et, bien sûr, mettez à jour les listes de packages.
sudo apt-get update
Ensuite, nous pouvons installer Logstash.
sudo apt-get install logstash
Comme avec Elasticsearch, nous devrons activer Logstash au démarrage du système.
sudo systemctl daemon-reloadsudo systemctl enable logstash.service
Nous pouvons maintenant démarrer Logstash.
sudo systemctl démarrer logstash.service
Et assurez-vous qu'il est en cours d'exécution.
statut systemctl logstash.service
Nous pouvons maintenant passer à sa configuration !
Configuration Logstash
Logstash utilise des fichiers de configuration situés dans /etc/logstash/conf.d
. Nous devrons créer trois nouveaux fichiers dans ce répertoire car il n'y a pas de configuration par défaut.
cd /etc/logstash/conf.dsudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf
Nous allons utiliser le premier fichier, 01-input.conf
, pour spécifier comment Lumberjack écoutera les journaux entrants.
Ouvrez le fichier pour le modifier (en remplaçant l'éditeur de texte que vous préférez, si vous avez une préférence).
éditeur sudo 01-input.conf
Ajoutez le bloc suivant :
input { bûcheron { port => 5000 type => "logs" ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" } }Enregistrez et fermez le fichier.
Ne vous inquiétez pas encore des certificats SSL. Nous les générerons sous peu.
Ensuite, nous devons ajouter une configuration de filtre à
10-syslog.conf
. Un filtre peut correspondre aux messages entrants (logs) et appliquer des transformations aux données avant de les indexer dans Elasticsearch.Ouvrez le fichier dans votre éditeur,
éditeur sudo 10-syslog.confet ajoutez ce qui suit :
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 j HH:mm:ss", "MMM jj HH:mm:ss" ] } }}Ce filtre intercepte tous les journaux entrants qui correspondent au format syslog standard, puis ajoute un champ d'horodatage et de nom d'hôte à chaque message. Il extrait également certaines informations du message de journal, telles que le PID syslog, le programme qui a généré le message, et le message syslog lui-même.
Un nouveau filtre devra être écrit pour chaque nouveau type de journal que vous souhaitez utiliser avec Logstash/Elasticsearch.
Enfin, nous pouvons accéder à notre fichier de configuration de sortie,
30-lumberjack-output.conf
. Ce fichier contiendra un simple bloc de sortie spécifiant que les messages indexés doivent être envoyés à Elasticsearch, ainsi que le nom du cluster.Ouvrez le fichier dans votre éditeur.
éditeur sudo 30-lumberjack-output.confAjoutez le bloc suivant :
sortie { elasticsearch { hosts => ["localhost"] }}Nous allons maintenant générer les certificats SSL pour votre pile ELK.
Générer des certificats SSL
Le protocole Lumberjack utilisé par Logstash pour communiquer les messages de journal est conçu pour être sécurisé de bout en bout, et SSL est une exigence stricte. Ne vous inquiétez pas, cependant, il est assez simple de générer les certificats.
Parce que nous utilisons une adresse IP plutôt qu'un nom d'hôte pour les
servers
directive dans/etc/logstash-forwarder.conf
, nous devrons ajouter un champ IP SAN au certificat SSL généré. Incluez-en un en ajoutant unsubjectAltName
ligne vers le fichier de configuration OpenSSL,/etc/ssl/openssl.cnf
.éditeur sudo /etc/ssl/openssl.cnfLocalisez la ligne contenant
[ v3_ca ]
, et insérez la ligne suivante en dessous. (Remplacez le127.0.0.1
avec l'adresse IP de votre serveur Logstash, si Logstash est installé sur un serveur séparé.)[ v3_ca ]subjectAltName =IP:127.0.0.1Enregistrez et fermez le fichier. Nous pouvons maintenant générer le certificat SSL.
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crtsudo chown logstash:logstash /etc/ ssl/logstash-forwarder.keysudo chmod 600 /etc/ssl/logstash-forwarder.keyMaintenant, redémarrez logstash et vérifiez s'il a démarré correctement.
sudo systemctl redémarre logstash.servicesystemctl status logstash.serviceÉtat du service Logstash
Même s'il a démarré, vérifiez les fichiers journaux dans
/var/log/logstash/logstash.*
et assurez-vous qu'il n'y a pas d'erreurs au démarrage.Installation de Logstash-Forwarder
Maintenant que nous avons installé le composant côté serveur de Logstash, nous devons installer le client Logstash-Forwarder sur chaque serveur dont vous souhaitez surveiller les journaux.
Dans ce didacticiel, nous installerons Logstash-Forwarder sur le même serveur exécutant le reste d'ELK, mais normalement Logstash-Forwarder fonctionnerait sur d'autres serveurs.
Tout d'abord, nous devrons à nouveau ajouter un nouveau référentiel au système.
echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.listEt, encore une fois, mettez à jour les listes de packages.
sudo apt-get updateMaintenant, nous pouvons installer Logstash-Forwarder.
sudo apt-get install logstash-forwarderUne fois l'installation terminée, ouvrez le fichier de configuration de Logstash-Forwarder.
éditeur sudo /etc/logstash-forwarder.confEffacez la configuration par défaut existante et ajoutez le bloc suivant :
{ "network":{ "servers":[ "127.0.0.1:5000" ], "timeout":15, "ssl ca":"/etc/ssl/certs/logstash-forwarder.crt" }, "files":[ { "paths":[ "/var/log/syslog", "/var/log/auth.log" ], "fields":{ "type":"syslog" } } ]}Cette configuration vérifiera
/var/log/syslog
et/var/log/auth.log
pour les nouvelles entrées, puis marquera chaque message sortant de ces fichiers avecsyslog
dans letype
champ.Si vous installez Logstash-Forwarder sur un hôte séparé, assurez-vous de changer les
servers
directive pour inclure l'adresse IP du serveur distant. Assurez-vous également de copier le fichier de certificat SSL à l'emplacement correct sur le serveur distant.Maintenant, nous allons activer Logstash-Forwarder au démarrage.
sudo systemctl daemon-reloadsudo systemctl enable logstash-forwarder.serviceEnfin, nous pouvons redémarrer le service Logstash-Forwarder pour appliquer les modifications de configuration.
sudo systemctl redémarrer logstash-forwarder.serviceSi le démon démarre correctement, nous pouvons passer à la configuration de Kibana et à la mise en place et à l'exécution de la pile ELK complète.
statut systemctl logstash-forwarder.serviceÉtat du service Logstash-forwarder
Pour vérifier si logstash-forwarder fonctionne, regardez le fichier journal pour les événements en cours de traitement.
tail -f /var/log/logstash-forwarder/*Fichiers journaux Logstash-Forwarder
Installer Kibana
Malheureusement, au moment de la rédaction de cet article, elastic.co ne propose aucune version packagée de Kibana, laissant la gestion du démon à l'utilisateur. Nous devrons créer un fichier de service systemd et installer manuellement Kibana.
Accédez au
/opt
répertoire et téléchargez Kibana.cd /optwget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -Nous devrons créer un nouvel utilisateur pour que Kibana s'exécute et définir la propriété du répertoire du programme.
sudo useradd kibanasudo chown kibana:kibana kibana-4.3.0-linux-x64/ -RSuite à cette étape, nous pouvons créer le fichier de service systemd.
sudo touch /usr/lib/systemd/system/kibana.serviceAjoutez la définition de service au fichier.
éditeur sudo /usr/lib/systemd/system/kibana.service[Unit]Description=kibanaDocumentation=http://www.elastic.coWants=network-online.targetAfter=network-online.target[Service]User=kibanaGroup=kibanaExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibanaRestart=alwaysStandardOutput=null# Connecte l'erreur standard à journalStandardError=journal[Install]WantedBy=multi-user.targetNous devons maintenant recharger toutes les unités systemd, puis activer le service Kibana.
sudo systemctl daemon-reloadsudo systemctl enable kibana.serviceMaintenant, nous pouvons démarrer Kibana.
sudo systemctl start kibana.serviceRevérifiez pour vous assurer qu'il fonctionne, et c'est parti !
statut systemctl kibana.serviceÉtat du service Kibana
Configuration Kibana
Le fichier de configuration principal de Kibana sera situé dans
/opt/kibana-4.3.0-linux-x64/config/kibana.yml
. Les options par défaut devraient suffire pour ce tutoriel, mais vous pouvez modifier les paramètres selon les besoins de votre configuration.Accédez à l'adresse IP de votre serveur dans un navigateur Web, au port 5601, pour accéder à la page d'initialisation de Kibana. Kibana vous demandera de configurer un modèle d'index ; sélectionnez
received_at
pour le nom du champ horaire et appuyez surCreate
.Créer un modèle d'index dans Kibana
C'est ça! Les composants de votre pile ELK (Elasticsearch, Logstash et Kibana) sont installés et opérationnels.
Où aller ensuite
Merci d'avoir suivi ce didacticiel sur l'installation de la pile ELK sur Debian 8. Veuillez revenir avec nous pour consulter des articles connexes et tester l'un de nos serveurs VPS ultra-rapides.