GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment exécuter la pile ELK sur Docker Container

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,

  1. Comment installer la pile ELK sur Ubuntu 16.04
  2. 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

  1. Comment installer Docker sur Ubuntu 16.04 / 15.10 / 14.04
  2. Comment configurer Docker sur CentOS 7/RHEL 7
  3. Comment installer Docker sur Fedora 24/23
  4. 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.

  1. Comment installer et configurer Filebeat sur Ubuntu / Debian
  2. Comment installer et configurer Filebeat sur CentOS 7/RHEL 7
Vous n'avez pas besoin d'utiliser le certificat logstash pour envoyer des journaux, ne mettez pas d'entrée de chemin de certificat logstash dans le fichier de configuration filebeat.

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.


Cent OS
  1. Comment exécuter un programme dans un conteneur Docker ?

  2. Comment exécuter MySQL dans un conteneur Docker

  3. Comment envoyer un signal au programme exécuté dans un conteneur Docker ?

  4. Comment ajouter des utilisateurs au conteneur Docker ?

  5. Comment exécuter une tâche cron dans un conteneur docker

Comment installer la pile ELK sur CentOS 7

Comment installer la pile ELK sur CentOS 8

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment exécuter des conteneurs Docker

Comment installer la pile ELK sur Debian 8