La pile ELK est abrégée en pile Elasticsearch, Logstash et Kibana, une pile d'analyse open source complète qui aide à analyser toutes les données de la machine. Il est utilisé comme alternative à d'autres logiciels commerciaux d'analyse de données tels que Splunk.
J'espère que vous n'avez pas besoin d'une introduction à la pile ELK si vous en avez encore besoin ; J'ai écrit de nombreux tutoriels sur la configuration de la pile ELK sur les systèmes d'exploitation Linux.
Vous pouvez suivre les tutoriels ci-dessous pour comprendre ce qu'est ELK,
- Comment installer la pile ELK sur Ubuntu 16.04
- Comment installer la pile ELK sur CentOS 7/RHEL 7
Dans ce didacticiel, nous verrons comment exécuter la pile ELK sur le conteneur Docker au lieu de les installer sur le système d'exploitation hôte.
Nous pouvons exécuter la pile ELK à l'aide de Docker Native CLI ou de Docker Compose.
Prérequis :
Tout ce dont vous avez besoin est le dernier Docker installé sur votre système. Assurez-vous que la version de docker est 1.6 et ultérieure, mais certaines images, par ex. elasticsearch n'est officiellement pris en charge que sur la version 1.12.1 de Docker
- Comment installer Docker sur Ubuntu 16.04 / 15.10 / 14.04
- Comment configurer Docker sur CentOS 7/RHEL 7
- Comment installer Docker sur Fedora 24/23
Comment installer Docker sur openSUSE
Les images Docker que nous utilisons ici sont les images officielles d'Elastic
Elasticsearch :
Pour commencer, nous allons exécuter un conteneur Elastisearch. L'image Elasticsearch est configurée avec un volume sur /usr/share/elasticsearch/data pour conserver les données d'index persistantes. Utilisez donc ce chemin si vous souhaitez enregistrer les données dans un volume monté qui est /esdata.
Créer un /esdata répertoire sur l'hôte Docker.
mkdir /esdata
Exécutez la commande suivante pour créer le conteneur Elasticsearch Docker. Le chemin de l'hôte vient toujours en premier dans la ligne de commande et le :, puis le volume interne du conteneur.
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v /esdata:/usr/share/elasticsearch/data elasticsearch
Utilisez le CURL pour obtenir la réponse d'Elasticsearch.
curl -X GET http://localhost:9200 { "name" : "Red Skull", "cluster_name" : "elasticsearch", "version" : { "number" : "2.3.5", "build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4", "build_timestamp" : "2016-07-27T10:36:52Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }
Logstash :
Une fois qu'Elasticsearch est opérationnel, nous sommes maintenant prêts à exécuter le conteneur Logstash. Avant de démarrer le conteneur Logstash, créez un fichier de configuration pour recevoir les logs des beats.
Créez le répertoire et le fichier de configuration sur l'hôte Docker.
mkdir /logstash vi /logstash/logstash.conf
Le fichier de configuration ci-dessous doit recevoir les journaux avec le type de journal "syslog " sur le port " 5044 "et envoyez-les à Elasticsearch pour indexation.
input { beats { port => 5044 } } filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Dans le fichier de configuration ci-dessus, si vous voyez la section output ; l'hôte elasticsearch est défini comme elasticsearch:9200 . Vous pourriez penser que la façon dont Logstash résoudra cet hôte pour envoyer des journaux, ne vous inquiétez pas; Liaison Docker (–link ) s'en chargera.
cd /logstash/
Créez un conteneur Logstash en lançant la commande suivante.
Où,
–link elasticsearch-container-name:hostname-in-config-file
docker run -d --name logstash -p 5044:5044 --link elasticsearch:elasticsearch -v "$PWD":/logstash logstash -f /logstash/logstash.conf
Kibana :
Le conteneur Kibana ne nécessite aucune configuration, il vous suffit de lier le conteneur Kibana Docker au conteneur Elasticsearch.
docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana
Vérifier :
Utilisateur docker ps commande pour vérifier si tous les conteneurs sont en cours d'exécution ou non.
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 824dc7ee3c9f kibana "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5601->5601/tcp kibana 4fa8a72c96a2 logstash "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5044->5044/tcp logstash 4ea93b1d838b elasticsearch "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
Installation et configuration de Beats :
Les beats sont ceux qui collectent et envoient les logs à Logstash. L'installation et la configuration des beats sont hors de portée.
- Comment installer et configurer Filebeat sur Ubuntu / Debian
- Comment installer et configurer Filebeat sur CentOS 7/RHEL 7
Accéder à l'interface Kibana :
Si tous les conteneurs fonctionnent comme prévu, visitez l'URL suivante pour accéder à l'interface Web.
http://votre-adresse-ip:5601/Configurez un index de battement pour commencer la recherche de données à l'aide de Kibana.
Cliquez sur Découvrir pour commencer à rechercher les derniers journaux du filebeat.
C'est tout, pour l'instant.