Qu'est-ce que la pile ELK ?
ELK est un acronyme qui signifie Elasticsearch Logstash Kibana. Chaque terme de l'abréviation ELK représente un logiciel open source individuel et tous ces logiciels sont utilisés collectivement pour l'analyse des journaux. L'analyse des journaux est la science qui consiste à donner un sens aux enregistrements générés par ordinateur. Les journaux sont émis par les périphériques réseau, les systèmes d'exploitation, les applications et toutes sortes de périphériques intelligents ou programmables. Un flux de messages en séquence temporelle comprend souvent un journal. Les journaux peuvent être dirigés vers des fichiers et stockés sur disque, ou dirigés sous forme de flux réseau vers un collecteur de journaux.
Apprenons brièvement à connaître les tâches effectuées par chacun des logiciels de la pile ELK.
Elasticsearch : Il stocke les journaux et agit également comme un moteur de recherche.
Logstash : Identifie les journaux du réseau et les envoie à la recherche élastique.
Kibana : Il s'agit d'un logiciel de visualisation de données qui affiche les données de la base de données elasticsearch de manière interactive.
Procédure d'installation
Maintenant que vous avez une idée de base de la pile ELK, installons successivement chaque module ou logiciel. Mais avant cela, nous devons installer JAVA sur le serveur.
Installation JAVA
Téléchargez le dernier package JAVA ou utilisez la commande suivante pour ajouter le package JAVA 8 au référentiel
sudo add-apt-repository -y ppa:webupd8team/java
Mettez ensuite à jour le référentiel à l'aide de la commande
sudo apt-get update
Utilisez successivement les commandes suivantes pour installer JAVA avec succès
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections sudo apt-get -y install oracle-java8-installer
Pour vérifier si le package a été installé correctement, tapez ce qui suit dans le terminal
java -version
Si le package a été installé avec succès, vous recevrez un message comme celui-ci
java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Installer Elasticsearch
Utilisez les commandes suivantes une par une pour télécharger et installer Elasticsearch sur votre serveur
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list sudo apt-get update && sudo apt-get install elasticsearch
Exécutez maintenant la commande suivante pour démarrer elasticsearch au démarrage
sudo update-rc.d elasticsearch defaults 95 10
La commande donnera le résultat suivant
Adding system startup for /etc/init.d/elasticsearch ... /etc/rc0.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc1.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc6.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc2.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc3.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc4.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc5.d/S95elasticsearch -> ../init.d/elasticsearch
Il est maintenant temps de le démarrer et de voir s'il fonctionne correctement.
sudo /etc/init.d/elasticsearch start curl 'http://localhost:9200'
S'il est installé et exécuté avec succès, vous devriez recevoir un résultat textuel semblable au suivant
root@ELKTest:~# curl 'http://localhost:9200' { "name" : "Termagaira", "cluster_name" : "elasticsearch", "cluster_uuid" : "72XGxcHjSjaaXDdtmIio0g", "version" : { "number" : "2.4.3", "build_hash" : "d38a34e7b75af4e17ead16f156feffa432b22be3", "build_timestamp" : "2016-12-07T16:28:56Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
Vous devez maintenant modifier le fichier de configuration pour restreindre l'accès extérieur à vos journaux elasticsearch.
sudo vi /etc/elasticsearch/elasticsearch.yml
Maintenant, trouvez la ligne network.host, décommentez-la en supprimant # avant la ligne et remplacez le contenu de cette ligne par localhost ou 127.0.0.1 . Pour cet exemple, nous utiliserons localhost
network.host: localhost
Redémarrez elasticsearch
sudo service elasticsearch restart
Installation de Logstash
L'installation de logstash est très similaire à l'installation d'Elasticsearch, tout comme Kibana. Utilisez les commandes suivantes pour importer et installer le package logstash.
echo "deb https://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install logstash
Exécutez maintenant la commande ci-dessous pour démarrer logstash au démarrage.
sudo update-rc.d logstash defaults 95 10
Result: Adding system startup for /etc/init.d/logstash ... /etc/rc0.d/K10logstash -> ../init.d/logstash /etc/rc1.d/K10logstash -> ../init.d/logstash /etc/rc6.d/K10logstash -> ../init.d/logstash /etc/rc2.d/S95logstash -> ../init.d/logstash /etc/rc3.d/S95logstash -> ../init.d/logstash /etc/rc4.d/S95logstash -> ../init.d/logstash /etc/rc5.d/S95logstash -> ../init.d/logstash
Démarrez enfin logstash
sudo /etc/init.d/logstash start
Installer Kibana
Utilisez successivement les commandes suivantes pour importer et installer kibana
echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install kibana
Configurez maintenant kibana pour démarrer au démarrage en utilisant
sudo update-rc.d kibana defaults 95 10
Result: Adding system startup for /etc/init.d/kibana ... /etc/rc0.d/K10kibana -> ../init.d/kibana /etc/rc1.d/K10kibana -> ../init.d/kibana /etc/rc6.d/K10kibana -> ../init.d/kibana /etc/rc2.d/S95kibana -> ../init.d/kibana /etc/rc3.d/S95kibana -> ../init.d/kibana /etc/rc4.d/S95kibana -> ../init.d/kibana /etc/rc5.d/S95kibana -> ../init.d/kibana
Configurez le fichier kibana afin que vous seul ayez accès à l'interface.
sudo vi /opt/kibana/config/kibana.yml
Dans le fichier de configuration de Kibana, recherchez la ligne server.host et remplacez "0.0.0.0" par "localhost" :puis enregistrez et quittez le fichier de configuration.
server.host: "localhost"
Redémarrez maintenant le service
sudo service kibana restart
Installation de NGINX
Avant de pouvoir utiliser l'interface Web de Kibana, vous devez installer un proxy inverse. Installez donc NGINX à l'aide de la commande suivante.
sudo apt-get install nginx apache2-utils
En exécutant la commande suivante, vous devez configurer le nom d'utilisateur et le mot de passe pour l'interface Web de Kibana
sudo htpasswd -c /etc/nginx/htpasswd.users kibadmin
Vous pouvez utiliser n'importe quel nom de votre choix à la place de kibadmin. Une invite apparaîtra demandant d'entrer un nouveau mot de passe. Entrez le mot de passe de votre compte kibana et terminez le processus.
Apportez maintenant des modifications au bloc de serveur par défaut de Nginx en utilisant ce qui suit
sudo vim /etc/nginx/sites-available/default
Supprimez le contenu du fichier et collez le code suivant dans le fichier, puis enregistrez et quittez.
server { listen 80; server_name yourdomain; 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; } }
Assurez-vous de remplacer votre domaine par votre nom de domaine correspondant. Redémarrez ensuite le serveur Web en exécutant la commande ci-dessous.
sudo service nginx restart
La pile ELK est maintenant installée avec succès sur le serveur
Génération de certificat SSL
Générez un certificat SSL en suivant les étapes fournies dans le lien en cliquant ici.
Lorsque vous avez une clé et un certificat, mettez-les dans /etc/nginx/cert.key et /etc/nginx/cert.pem puis créez un fichier /etc/nginx/sites-available/nsm avec le contenu suivant :
server { listen 80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name hostname; <-- edit this to match your hostname root html; index index.html index.htm; ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5601; include proxy_params; } }
Supprimez le fichier de configuration Nginx par défaut et activez le nouveau à l'aide de la commande suivante, puis redémarrez le serveur Web.
$ sudo rm /etc/nginx/sites-enabled/default && sudo ln -s /etc/nginx/sites-available/nsm /etc/nginx/sites-enabled/nsm $ sudo /etc/init.d/nginx restart
Si tout est exécuté correctement, l'infrastructure de recherche principale est en place et elle devrait être accessible à l'adresse https://