ELK Stack est la plateforme de gestion de journaux la plus populaire au monde. Il s'agit d'une collection de produits open source comprenant Elasticsearch, Logstash et Kibana. Tous ces 3 produits sont développés, gérés et maintenus par Elastic.
ELK Stack est une plate-forme puissante et open source capable de gérer une quantité massive de données enregistrées. Le journal des entrées provient généralement d'une interface Web graphique (GUI).
- Elasticsearch est un moteur de recherche et d'analyse basé sur JSON conçu pour une évolutivité horizontale et une gestion simplifiée.
- Logstash est une interface de traitement de données côté serveur qui a la capacité de collecter simultanément des données provenant de plusieurs sources. Il le transforme ensuite, puis envoie les données à la réserve souhaitée. Il s'agit d'une application open source.
- Kibana est utilisé pour visualiser vos données et naviguer dans la Suite Elastic. C'est aussi un outil open source.
Installer et configurer ELK Stack sur Ubuntu
Dans ce tutoriel, nous allons utiliser filebeat pour envoyer les données du journal à Logstash. Les Beats sont des expéditeurs de données légers et pour commencer, nous devrions installer l'agent sur les serveurs.
Étape 1) Installation de Java 8
ElasticSearch prend en charge Java 8 et 9, mais le problème est que Logstash n'est compatible qu'avec Java 8. Java 9 n'est pas encore pris en charge. Par conséquent, nous allons installer Oracle Java 8.
Lancez le terminal et ajoutez le référentiel Oracle Java 8, suivi d'une mise à jour du système et de l'installation proprement dite.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-set-default
Faites attention au terminal. Vous devrez accepter les fenêtres du contrat de licence et sélectionner "oui" pour continuer. Une fois l'installation terminée, vous pouvez vérifier la version Java en utilisant les commandes suivantes :
.sudo java -version
sudo echo $JAVA_HOME
Étape 2) Installer et configurer Elasticsearch
Commençons par wget commande pour télécharger Elasticsearch suivie de la clé de signature publique :
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key ajouter -
Deuxièmement, installez le paquet apt-transport-https (les distributions basées sur Debian en ont besoin).
sudo apt-get install apt-transport-https
Ajouter le référentiel :
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Mettez à jour la liste des dépôts et installez le package :
sudo apt-get update
sudo apt-get install elasticsearch
Modifions le fichier "elasticsearch.yml":
sudo vim /etc/elasticsearch/elasticsearch.yml
Décommentez "network.host" et "http.port". La configuration suivante doit être ajoutée :
network.host :localhosthttp.port :9200
Ensuite, enregistrez et fermez le fichier.
Pour vous assurer qu'ElasticSearch fonctionne de manière transparente, activez-le au démarrage et démarrez ElasticSearch.
sudo systemctl activer elasticsearch.service
sudo systemctl démarrer elasticsearch.service
Vérifier l'installation :
sudo curl -XGET 'localhost:9200/?pretty'
Étape 3) Installer Kibana
Commençons maintenant à installer Kibana et modifions les paramètres de Kibana :
sudo apt-get install kibana
sudo vim /etc/kibana/kibana.yml
Décommentez les lignes suivantes :
server.port :5601server.host :"localhost"elasticsearch.url :"http://localhost:9200"
Enregistrez et quittez le fichier.
Activez-le au démarrage et démarrez le service Kibana :
sudo systemctl enable kibana.service
sudo systemctl start kibana.service
Étape 4) Configuration de Nginx en tant que proxy inverse pour Kibana
Dans les lignes similaires, installons Nginx, configurons-le et démarrons le service. Utilisez les commandes suivantes une par une :
sudo apt-get install nginx apache2-utils
Configurer l'hôte virtuel :
sudo vim /etc/nginx/sites-available/elk
Ajoutez la configuration suivante au fichier :
serveur { écouter 80 ; nom_serveur elk.fosslinux.com ; auth_basic "Accès restreint" ; auth_basic_user_file /etc/nginx/.elkusersecret ; emplacement / { proxy_pass http://localhost:5601; proxy_http_version 1.1 ; proxy_set_header Mettre à jour $http_upgrade ; proxy_set_header Connexion 'mise à niveau' ; proxy_set_header Hôte $hôte ; proxy_cache_bypass $http_upgrade ; }}
Créez un fichier d'utilisateur et de mot de passe pour l'authentification du navigateur Web :
sudo htpasswd -c /etc/nginx/.elkusersecret elkusr
Entrez le mot de passe et répétez. Vérifiez les configurations Nginx :
sudo nginx -t
Activez Nginx au démarrage du système et redémarrez le service :
sudo systemctl enable nginx.service
sudo systemctl redémarrer nginx.service
Étape 5) Installer et configurer Logstash
Installer Logstash :
sudo apt-get install logstash
Ici, nous allons générer une clé de certificat SSL pour sécuriser le transfert de journaux à partir du client file beat. Modifiez le fichier "hosts" avant de créer le certificat SSL.
sudo vim /etc/hosts
Ajoutez la ligne suivante au fichier. Assurez-vous de changer l'IP et le nom du serveur pour le vôtre.
172.31.31.158 elk-server elk-server
Une fois terminé, enregistrez et quittez le fichier.
Changez maintenant de répertoire pour Logstash.
sudo cd /etc/logstash/
Créez un dossier pour SSL :
sudo mkdir ssl
Générer un certificat SSL. Remplacez elk-server par le nom de votre serveur dans la commande ci-dessous.
sudo openssl req -subj '/CN=elk-server/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crtCréez les fichiers suivants dans "/etc/logstash/conf.d".
sudo cd /etc/logstash/conf.d/créer un fichier filebeat-input en utilisant vim.
sudo vim filebeat-input.confAjoutez-y les lignes suivantes.
input { beats { port => 5443 type => syslog ssl => true ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt" ssl_key => "/etc/logstash/ssl/logstash-forwarder .key" }}Enregistrez et fermez le fichier et créez un nouveau fichier de configuration.
sudo vim syslog-filter.confAjoutez-y le contenu suivant.
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}" ] } date { match => [ "syslog_timestamp", "MMM j HH:mm:ss", "MMM jj HH:mm:ss" ] } }}Enregistrez et quittez le fichier. Créer elasticsearch fichier de sortie.
sudo vim output-elasticsearch.confAjoutez-y les lignes suivantes.
output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM .dd}" document_type => "%{[@metadata][type]}" }}Activons Logstash au démarrage et démarrons le service :
sudo systemctl enable logstash.servicesudo systemctl démarrer logstash.serviceÉtape 6) Installation et configuration de Filebeat sur les serveurs clients
Commencez par modifier les hôtes fichier pour ajouter des entrées d'hôte elk. Assurez-vous de remplacer l'adresse IP et le nom par les vôtres.
sudo vim /etc/hosts172.31.31.158 serveur elkEnregistrez et quittez le fichier.
Téléchargez et installez la clé de signature publique :
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key ajouter -Installez "apt-transport-https" et ajoutez le dépôt.
sudo apt-get install apt-transport-httpssudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.listMettez à jour le dépôt et installez Filebeat.
sudo apt-get updatesudo apt-get install filebeatModifier les configurations Filebeat.
sudo vim /etc/filebeat/filebeat.ymlTrouvez la ligne suivante et modifiez la valeur en "true".
activé :vraiIci, nous ne modifions pas le chemin du journal et Filebeat transmettra tous les journaux dans le dossier "var/log"
chemins :- /var/log/*.logDécommentez les lignes suivantes :
output.logstash :# Les hôtes Logstash hébergent :["elk-server:5443"] ssl.certificate_authorities :["/etc/filebeat/logstash-forwarder.crt"]Commentaire Elasticsearch :
#output.elasticsearch :# tableau d'hôtes auxquels se connecter. # hôtes :["localhost:9200"]Enregistrez et quittez le fichier.
Allez maintenant sur le serveur ELK et obtenez le contenu de "logstash-forwarder.crt"
sudo cat /etc/logstash/ssl/logstash-forwarder.crtcopiez la sortie, puis accédez au client-serveur Elk.
Créer un fichier de certificat
sudo vim /etc/filebeat/logstash-forwarder.crtinsérez la sortie copiée et enregistrez et quittez.
Activer filebeat au démarrage du système Lancer filebeat services.
sudo systemctl enable filebeat.servicesudo systemctl start filebeat.serviceÉtape 7) Parcourir le tableau de bord Kibana
Lancez votre navigateur Web préféré et entrez le nom de domaine suivi du nom d'utilisateur et du mot de passe.
http://elk.fosslinux.comEntrez le nom d'utilisateur et le mot de passe créés. Vous devriez voir la page d'accueil de Kibana. Cliquez sur le bouton "Explorer le mien".
Vous devriez être redirigé vers la page d'accueil de Kibana.
Cliquez sur "Découvrir" sur le côté gauche. Cliquez sur "Créer un modèle d'index".
Définissez ensuite le modèle d'index "filebeat-*".
Cliquez sur suivant et choisissez @horodatage", puis cliquez sur "Créer un modèle d'index".
Le modèle d'index devrait être créé.
Cliquez sur le menu "Découvrir" pour voir les journaux du serveur.
Les journaux seront affichés selon l'horodatage. Cliquez sur n'importe quel horodatage pour le développer et voir le contenu du fichier journal et ses détails.
Si vous êtes arrivé ici, cela signifie que vous avez installé et configuré avec succès la pile ELK avec filebeat. Vous avez des problèmes ? N'hésitez pas à nous le faire savoir dans les commentaires ci-dessous.