
El uso que se puede dar a este fantástico motor de búsqueda es muy variado. En esta primera entrada hablaré del proceso de instalación de los componentes: elasticsearch, kibana y filebeat.
Hay que reconocerle al creador del producto el esmero que presenta en su documentación y en sus webs para explicar que se puede obtener de su producto. Dejo un enlace que explica de manera muy sencilla las utilidades de este producto.
En esta entrada explico el proceso de instalación del stack de elasticsearch 7.8.0. Durante casi dos años he trabajado con la versión 6 del producto. He instalado el producto en una distribución Ubuntu 18.04.
Se van a instalar como se ha comentado anteriormente 3 productos. El orden de instalación es importante:
- Elasticsearch: el motor de búsqueda con los datos que se van guardando en él.
- Kibana: aplicación web gráfica para mostrar la información que contiene elasticsearch.
- filebeat: aplicación que va a pasar los datos de logs del sistema y/o servidores web hacia el motor elasticsearch.
Es necesario disponer de al menos la version 11 de Java (SDK) instalada en el sistema.
Instalación Elasticsearch
Para realizar la instalación de manera correcta se va a añadir el repositorio de elasticsearch en versión 7. Es necesario lanzar los siguientes comandos en la consola de ubuntu:
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list sudo apt-get update
Ahora se pasa a instalar el paquete lanzando:
sudo apt-get install elasticsearch
Una vez que se ha instalado se edita el fichero de configuración de elasticsearch (elasticsearch.yml). Para ello se lanza:
sudo nano /etc/elasticsearch/elasticsearch.yml
Me gusta que visualmente en kibana se tenga un nombre de cluster adecuado así que una vez abierto el fichero hay que descomentar la propiedad cluster.name y se escribe en ella el nombre que se desee. En mi caso he puesto juanonlab-cluster.
# Use a descriptive name for your cluster: # cluster.name: juanonlab-cluster #
En la siguiente captura se puede observar como queda en Kibana este nombre (una vez que se instale).

Ahora hay que añadir el siguiente comando para que al reiniciar el servidor arranque de manera automática:
sudo systemctl enable elasticsearch
Para lanzarlo:
sudo systemctl start elasticsearch
Para comprobar su estado:
sudo systemctl status elasticsearch
La salida debe ser parecida a esta:
root@juanonlabserver:~# sudo systemctl status elasticsearch ● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-06-28 12:37:03 CEST; 4h 3min ago Docs: https://www.elastic.co Main PID: 5746 (java) Tasks: 76 (limit: 4915) CGroup: /system.slice/elasticsearch.service ├─5746 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 └─5946 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Otra manera de comprobar que el motor está funcionando es lanzar el comando:
curl -X GET "localhost:9200"
Si todo es correcto se muestra la version, el cluster, el uuid y ciertas propiedades
{ "name" : "juanonlabserver", "cluster_name" : "juanonlab-cluster", "cluster_uuid" : "4Tg7uLcRRiqPRWGCNnXe6Q", "version" : { "number" : "7.8.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65", "build_date" : "2020-06-14T19:35:50.234439Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Instalación Kibana
Kibana nos va a permitir visualizar los datos que se han ido almacenando en elasticsearch.
Para instalar Kibana:
sudo apt install kibana
Antes de lanzar el programa voy a realizar una modificación propia de mi entorno. Yo dispongo de un servidor nginx que realiza la función de proxy inverso y que va a redireccionar hacia Kibana (que se instala como localhost). Si la instalación se va a realizar en local no es necesario realizar este paso ya que kibana queda instalado en localhost:5601.
Habilitar basePath y autenticación básica en nginx (Opcional)
Editar el fichero kibana.yml para cambiar el base path (no necesario si se va a instalar el servidor sólo en local):
sudo nano /etc/kibana/kibana.yml
Dentro del fichero descomentar el base path indicando la ruta que va a tener kibana. En mi caso también se llama kibana.
# Enables you to specify a path to mount Kibana at if you are running behind a proxy. # Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath # from requests it receives, and to prevent a deprecation warning at startup. # This setting cannot end in a slash. server.basePath: "/kibana"
Puedes obtener más información en el hilo de reverse-proxy de kibana.
Si además quieres añadir seguridad a tu servidor nginx cuando redireccione hacia kibana puede consultar esta funcionalidad en la entrada de restricción de acceso de nginx que se encuentra en el propio servidor (restricción básica).
Habilitar en el arranque y lanzar kibana
Para habilitar que kibana arranque cuando se reinicie el servidor linux:
sudo systemctl enable kibana
Para iniciar la aplicación:
sudo systemctl start kibana
Comprobar el estado de kibana
Una vez arrancado kibana tardará un tiempo en conectar con elasticsearch. Una vez que se han esperado unos minutos se puede observar si está funcionando mediante el comando:
curl -XGET 'http://localhost:5601/status'
En la siguiente captura se muestra como se accede a kibana a través de un proxy inverso. Lo tengo protegido con contraseña

Instalación Filebeat
Filebeat es la herramienta que va a permitir el paso de logs del sistema y de los servidores hacia elasticsearch. De manera muy resumida las acciones son:
- Filebeat: envía los logs al motor de elasticsearch
- Elasticsearch: guarda los datos que recibe de filebeat
- Kibana: muestra de manera gráfica los datos que se encuentran alojados en Elasticsearch
Para instalar Filebeat es necesario lanzar el comando:
sudo apt-get install filebeat
A continuación se muestran una serie de órdenes para administrar los módulos que enviarán información a Elasticsearch.
En mi caso tengo 4 módulos habilitados:
- apache2
- kibana
- nginx
- system
Mediante el comando:
filebeat modules list
Se listan los comandos habilitados y los disponibles:
Enabled: apache2 kibana nginx system Disabled: activemq apache auditd aws azure ..
Por ejemplo, para deshabilitar el módulo system:
filebeat modules disable system
Y para habilitarlo:
filebeat modules disable system
Kibana por defecto no dispone informes (llamados dashboards). Para crearlos en kibana basta con lanzar el comando:
filebeat setup --dashboards
Se puede encontrar más información sobre los dashboards en la entrada de carga de dashboards en kibana.
En la siguiente captura se muestran los dos dashboards de nginx disponibles.

Conclusión
Instalar las 3 herramientas lleva un tiempo pero una vez realizado ya se puede hacer uso de este magnífico motor de búsqueda. En la próxima entrada daré un repaso a los dashboards que utilizo para monitorizar mi servidor. Se podrá comprobar la cantidad de intentos de acceso que se realizan a diario hacia mi servidor.
No veo nada mal en la salida
Hola Silvia,
Yo creo que tu Elastic search está bien. Recuerda que es como una especie de api. Es decir, no tiene una pantalla visual para hacer consultas ni nada por el estilo. Por eso necesitas instalar kibana (interfaz gráfica que te permite conectar con ElasticSearch entre otras cosas) te dejo un enlace de kibana para windows: https://www.elastic.co/guide/en/kibana/current/windows.html
Espero que consigas hacerlo funcionar :-)
Un saludo
Hola, apenas tuve una charla de ElasticSearch, no tengo idea del tema. Encontré este artículo googleando porque cuando escribo la dir de elastic en el navegador, en lugar de la página con logo etc, me aparece lo que vos mostrás como salida del comando: curl -X GET "localhost:9200".
Lo estoy haciendo en windows 10, descomprimí en C: el paquete, fui a la consola de comandos y ejecuté el bat del directorio bin, luego cuando escribo http://localhost:9200 me sale esto:
{
"name" : "NOTEBOOK-V330",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "I708gq5vRmanum-DhxZ3MQ",
"version" : {
"number" : "7.9.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "083627f112ba94dffc1232e8b42b73492789ef91",
"build_date" : "2020-09-01T21:22:21.964974Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
ES COMO QUE ME ESTUVIERA FALTANDO ALGO, pero ya te digo que no tengo idea.
Espero respuesta.
Muchas gracias