Tutorial de Kibana: análisis de datos con Elasticsearch

El motor de búsqueda y análisis Elasticsearch es una de las mejores soluciones de código abierto para indexar y estructurar grandes bases de datos. Sin embargo, para extraer conclusiones valiosas de su análisis, a menudo es necesario presentarlos de forma clara y comprensible. La herramienta de visualización Kibana se ha desarrollado especialmente para la presentación de datos obtenidos con ElasticSearch. ¿Cómo usar Kibana?

¿Qué es Kibana?

Kibana es una interfaz web escalable para la representación visual de datos. Junto con Elasticsearch y la herramienta de procesamiento de datos Logstash, forma la llamada “pila ELK” (también llamada Elastic Stack). Esta suite de código abierto permite a los usuarios recoger, organizar y preparar datos con fines analíticos desde diferentes servidores (y en cualquier formato). Además de la capacidad de visualizar los datos procesados por Logstash y Elasticsearch, Kibana también ofrece análisis automáticos en tiempo real, un algoritmo de búsqueda muy flexible y diferentes tipos de vistas (histogramas, gráficos, diagramas circulares, etc.) para los datos. En el panel de control (dashboard), las diversas visualizaciones interactivas pueden combinarse para formar una imagen general dinámica que permita su filtrado y examen.

Para mostrar este video, se requieren cookies de terceros. Puede acceder y cambiar sus ajustes de cookies aquí.

Al ser una aplicación web escrita en JavaScript, Kibana puede utilizarse en todas las plataformas. Solo se incurrirá en gastos si se utiliza el servicio de hosting Elastic Cloud, ofrecido por el desarrollador. Este servicio de pago permite implementar y organizar un clúster seguro Kibana-Elasticsearch en Amazon o Google sin tener que proporcionar recursos propios.

Tutorial de Kibana: primeros pasos con la herramienta de visualización

Kibana ofrece una amplia gama de funciones para presentar gráficamente bases de datos preparadas. Sin embargo, antes de que la herramienta esté lista para filtrar y visualizar la información en el dashboard, de tal manera que permita identificar, analizar y evaluar los valores clave, hay un largo trabajo previo. Con este manual de Kibana, te facilitamos la puesta en marcha de esta competente interfaz web porque aprenderás cómo instalar Kibana correctamente, cómo crear tu primer panel de control y cómo incorporar bases de datos ya existentes a la herramienta de visualización.

Paso 1: poner en marcha Kibana

Dado que Kibana está diseñado para mostrar datos que se han indexado usando Elasticsearch, el primer paso será instalar el motor de búsqueda y análisis. Los paquetes correspondientes para Windows, macOS y Linux se encuentran en el centro de descargas de Elasticsearch. Requiere un entorno de ejecución Java actual (64 bits).

Kibana también está disponible como software multiplataforma para Windows, macOS y Linux (RPM, DEB). Dado que la aplicación está basada en el entorno de ejecución de JavaScript Node.js, los distintos paquetes de instalación también contienen los archivos binarios de Node.js necesarios para ejecutar la herramienta de visualización (no es compatible con versiones independientes). Los diferentes paquetes (ZIP) también se descargan, como Elasticsearch, desde la página principal de Elastic.

Nota

Los usuarios de Linux y Mac también pueden instalar Kibana desde el repositorio Elastic usando los gestores de paquetes apt y yum. En los manuales online de Kibana encontrarás instrucciones detalladas al respecto.

Una vez descomprimido el paquete Kibana, ejecuta el archivo bin/kibana (macOS, Linux) o bin\kibana.bat (Windows) para poner en marcha el servidor Kibana.

Abre, a continuación, el backend de Kibana a través de la dirección 'http://localhost:5601' en el navegador (Elasticsearch ya debe estar ejecutándose).

Paso 2: nutrir a Kibana con datos

Para poder explorar el panel de control de Kibana y sus funciones con más detalle, primero ha de disponer de datos. En la página web de Elastic hay tres bases de datos de muestra descargables gratuitamente que son las que utilizaremos aquí para realizar pruebas. Se trata de las bases de datos “shakespeare.json” (base de datos de las obras completas de William Shakespeare), “accounts.zip” (conjunto de cuentas ficticias) y “logs.jsonl.gz” (conjunto de archivos de registro generados al azar).

Descarga y descomprime los tres archivos y guárdalos en una ubicación de tu elección.

Antes de introducir los datos en la herramienta, es necesario crear una imagen (mapping) de los campos de las bases de datos shakespeare y server logs. Estas clasificaciones subdividen los documentos en el índice en grupos lógicos y especifican las propiedades de los campos (hasta qué punto pueden buscarse, por ejemplo). La herramienta adecuada para configurar el mapeo es la consola, que se encuentra en el menú “Dev Tool” > “Console” en la interfaz de Kibana.

Ahora inserta por orden los siguientes mappings utilizando una petición PUT:

PUT /shakespeare
{
 "mappings": {
  "doc": {
   "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
   }
  }
 }
}
PUT /logstash-2015.05.18
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.19
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.20
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}

Utiliza ahora la API Bulk de Elasticsearch para cargar con Curl los registros (datos) a través de la terminal. En Windows, utiliza la PowerShell con el Invoke-RestMethod (ejemplo de código a continuación):

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"
Nota

En función de la potencia de cálculo del equipo, la carga de los datos puede durar más o menos.

Vuelve a la consola de Kibana y verifica el éxito de la transferencia con la siguiente petición GET:

GET /_cat/indices?v

Si los datos se han cargado como debían, la salida debería ser:

Paso 3: definir un primer patrón de índice

Para que Kibana sepa qué datos ha de procesar, hay que crear los patrones para los índices “Shakespeare”, “bank” y “logstash”. Para definir el primero haremos lo siguiente:

  1. Abre el menú “Management” (Administración) y clica en “Index Patterns” (Patrones de índice). Con el primer patrón de índice, la página “Create index pattern” (Crear patrón de índice) se abre automáticamente, aunque también puede abrirse con el botón del mismo nombre.
  2. Escribe “shakes*” en el campo “Index pattern” y, a continuación, pincha en “Next step” (Paso siguiente).
  3. Dado que no se requiere ninguna configuración especial para este patrón, omite el siguiente paso y completa la creación del patrón haciendo clic en “Create index pattern”.

Repite los pasos para el modelo “ba*”, que se asigna automáticamente al índice “bank”.

Finalmente, define también un patrón de índice con el nombre “logstash*” para los tres índices de registros del servidor (server logs). Con este patrón no se salta el menú de configuración, sino que se selecciona la entrada “@timestamp” en el menú desplegable “Time Filter field name” (Nombre de campo de filtro de tiempo), ya que estos registros contienen datos de secuencias cronológicas. A continuación, clica en “Create index pattern” como en los dos patrones anteriores.

Paso 4: explorar los registros que se han incorporado a Kibana

Una vez tu servidor Kibana cuenta con registros, puedes iniciar una consulta de búsqueda con Elasticsearch para examinarlos y filtrar los resultados. Para ello, en Kibana ve al menú “Discover” y selecciona el patrón de índice para su búsqueda utilizando el símbolo del triángulo pequeño en la barra de menú de la izquierda. Para nuestro tutorial de Kibana Dashboard, nos hemos decantado por el registro de cuentas (ba*):

Como prueba, filtra ahora el registro de cuentas bancarias para ver solo las cuentas que cumplen con determinados criterios. Por ejemplo, para buscar específicamente cuentas que tengan un saldo superior a 47 500 euros y pertenezcan a personas mayores de 38 años, escribe el siguiente comando en el cuadro de búsqueda:

balance:>47500 AND age:>38

Discover devuelve como respuesta cuatro cuentas (97, 177, 878 y 916) que se corresponden con las propiedades seleccionadas.

Puedes guardar tus búsquedas haciendo clic en el botón “Save” en la barra de menú superior.

Paso 5: visualizar los datos

Si has seguido los pasos explicados hasta ahora en este tutorial de Kibana, ya estás en situación de visualizar los datos implementados para dar vida a tu panel de control. Como ejemplo, crearemos un gráfico circular que representará la base de datos de cuentas bancarias. Este diagrama deberá mostrar, por un lado, qué porción del total de las 1000 cuentas cae dentro de ciertos rangos de saldo de cuenta y, por otro lado, cómo resulta la distribución por edades dentro de estas divisiones.

Abre en un primer paso el menú “Visualize” (Visualizar) y haz clic en “Create a visualization” (Crear una visualización) para obtener una lista de los tipos de gráficos disponibles. Selecciona la opción “Pie” (Pastel).

En un primer paso, solo verás un círculo que aglutina todas las entradas de la base de datos, ya que todavía no se han definido categorías. Estas se llaman “Buckets” (Cubos) en Kibana y se crean en el punto homónimo del menú.

Para definir los diferentes rangos para los saldos, pincha en “Split Slices” (Separar porciones) y selecciona “Range” (Rango) en el menú desplegable “Aggregation” (Agregación):

En “Field” (Campo) busca la entrada “balance”(saldo) y pincha en ella, para después pinchar cuatro veces en el botón “Add Range” (Añadir rango), con lo que definirás seis categorías para saldos de cuentas:

0 999
1000 2999
3000 6999
7000 14999
15000 30999
31000 50000

Pincha, a continuación, en “Apply changes”(Aplicar cambios) y el gráfico circular mostrará la distribución de las cuentas según los rangos de saldos que has definido.

En un segundo paso, se añade otro anillo al diagrama que visualiza la distribución de los rangos de edad en correspondencia con las áreas de saldo de cuenta. Para ello, pincha en “Add sub-buckets” (Añadir subcategorías), luego de nuevo en “Split Slices” y finalmente selecciona “Terms” (Condiciones) en el menú desplegable. Busca en “Field” la entrada “age” (edad) y acepta los cambios pinchando en “Apply changes”.

Ahora puedes guardar la visualización utilizando el botón "Guardar" situado en la barra de menú superior.

Paso 6: organizar el Dashboard

Finalmente, nos detendremos brevemente el Dashboard de Kibana. Para ello será necesario crear un primer panel de control de prueba utilizando la búsqueda y la visualización que se guardaron en los pasos anteriores 4 y 5. Selecciona en primer lugar el panel de control en la navegación de la página y clica en “Create new dashboard” (Crear nuevo panel de control) y, a continuación, en “Add” (Añadir). Kibana listará entonces automáticamente todas las visualizaciones o búsquedas guardadas:

Haciendo clic con el botón izquierdo del ratón se añade al panel de control la visualización del saldo de la cuenta y el resultado de la búsqueda, permitiendo la presentación en paralelo.

Ahora puedes modificar los paneles cambiando su tamaño o su posición, por ejemplo. También es posible mostrar un resultado de visualización o búsqueda en toda la pantalla o eliminarlo del panel de control. Mediante “Inspect” (Inspeccionar), puedes visualizar información adicional sobre los datos y consultas subyacentes de muchas visualizaciones.

Nota

Si quitas un panel del Dashboard de Kibana, la visualización o búsqueda guardada no se pierde.