Docker Swarm: Crear entorno ElasticSearch (ELK)
Hoy día, cuando hablas de recopilar logs en una infraestructura, sale en la ecuación ELK o ElasticSearch.
ELK es el acrónimo para referirse a tres proyectos open source que suelen ir unidos, como son ElasticSearch, Logstash y Kibana.
- ELASTICSEARCH: Es el motor de búsqueda y analítica
- LOGSTASH: Pipeline (permite la integración continua) de procesamiento de datos
- KIBANA: Visualizador de datos
- Url proyecto: https://www.elastic.co/es/what-is/elk-stack
Lo que vamos a hacer es montar esta solución sobre contenedores Docker. Para ello voy a usar mi clúster Docker Swarm.
Instalar Docker ElasticSearch
El primer container que tendremos que generar es el de ElasticSeach. Lo lanzamos de la siguiente manera:
1 |
docker run -p 9200:9200 -p 9300:9300 -it -h elasticsearch --name=elasticsearch -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.12.0 |
Comprobamos que funciona con:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
curl http://localhost:9200/ root@swarm00:~# curl http://localhost:9200/ { "name" : "elasticsearch", "cluster_name" : "docker-cluster", "cluster_uuid" : "MZmp2WqEQUajyOBEqEP-1A", "version" : { "number" : "7.12.0", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a", "build_date" : "2021-03-18T06:17:15.410153305Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } |
Una vez validado, ahora instalaremos Kibana.
Instalar Docker Kibana
Lanzamos el siguiente comando:
1 |
docker run -d -p 5601:5601 -h kibana --name kibana --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:7.12.0 |
Podéis comprobar el puerto 5601 que accedéis vía web:
Y por último, Logstash
Instalar Docker Logstash
Aquí vamos a generar un fichero logstash.conf al que vamos a referenciar en la generación del contenedor:
1 2 3 4 5 6 7 8 9 |
logstash.conf input { stdin {} } output { elasticsearch { hosts => ["elasticsearch:9200"] } } |
Comando docker logstash:
1 |
docker run -h logstash --link elasticsearch:elasticsearch -it --rm -v "$PWD":/config-dir docker.elastic.co/logstash/logstash:7.12.0 -f /config-dir/losgstash.conf |
Con esto ya tenemos ELK sobre Docker
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?