El motor de búsqueda y análisis Ela­s­ti­c­sea­r­ch es una de las mejores so­lu­cio­nes de código abierto para indexar y es­tru­c­tu­rar grandes bases de datos. Sin embargo, para extraer co­n­clu­sio­nes valiosas de su análisis, a menudo es necesario pre­se­n­tar­los de forma clara y co­m­pre­n­si­ble. La he­rra­mie­n­ta de vi­sua­li­za­ción Kibana se ha de­sa­rro­lla­do es­pe­cia­l­me­n­te para la pre­se­n­ta­ción de datos obtenidos con Ela­s­ti­c­Sea­r­ch. ¿Cómo usar Kibana?

¿Qué es Kibana?

Kibana es una interfaz web escalable para la re­pre­se­n­ta­ción visual de datos. Junto con Ela­s­ti­c­sea­r­ch y la he­rra­mie­n­ta de pro­ce­sa­mie­n­to 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 ana­lí­ti­cos desde di­fe­re­n­tes se­r­vi­do­res (y en cualquier formato). Además de la capacidad de vi­sua­li­zar los datos pro­ce­sa­dos por Logstash y Ela­s­ti­c­sea­r­ch, Kibana también ofrece análisis au­to­má­ti­cos en tiempo real, un algoritmo de búsqueda muy flexible y di­fe­re­n­tes tipos de vistas (hi­s­to­gra­mas, gráficos, diagramas ci­r­cu­la­res, etc.) para los datos. En el panel de control (dashboard), las diversas vi­sua­li­za­cio­nes in­ter­ac­ti­vas pueden co­m­bi­nar­se para formar una imagen general dinámica que permita su filtrado y examen.

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

Al ser una apli­ca­ción web escrita en Ja­va­S­cri­pt, Kibana puede uti­li­zar­se en todas las pla­ta­fo­r­mas. Solo se incurrirá en gastos si se utiliza el servicio de hosting Elastic Cloud, ofrecido por el de­sa­rro­lla­dor. Este servicio de pago permite im­ple­me­n­tar y organizar un clúster seguro Kibana-Ela­s­ti­c­sea­r­ch en Amazon o Google sin tener que pro­po­r­cio­nar recursos propios.

Tutorial de Kibana: primeros pasos con la he­rra­mie­n­ta de vi­sua­li­za­ción

Kibana ofrece una amplia gama de funciones para presentar grá­fi­ca­me­n­te bases de datos pre­pa­ra­das. Sin embargo, antes de que la he­rra­mie­n­ta esté lista para filtrar y vi­sua­li­zar la in­fo­r­ma­ción en el dashboard, de tal manera que permita ide­n­ti­fi­car, analizar y evaluar los valores clave, hay un largo trabajo previo. Con este manual de Kibana, te fa­ci­li­ta­mos la puesta en marcha de esta co­m­pe­te­n­te interfaz web porque apre­n­de­rás cómo instalar Kibana co­rre­c­ta­me­n­te, cómo crear tu primer panel de control y cómo in­co­r­po­rar bases de datos ya exi­s­te­n­tes a la he­rra­mie­n­ta de vi­sua­li­za­ción.

Paso 1: poner en marcha Kibana

Dado que Kibana está diseñado para mostrar datos que se han indexado usando Ela­s­ti­c­sea­r­ch, el primer paso será instalar el motor de búsqueda y análisis. Los paquetes co­rre­s­po­n­die­n­tes para Windows, macOS y Linux se en­cue­n­tran en el centro de descargas de Ela­s­ti­c­sea­r­ch. Requiere un entorno de ejecución Java actual (64 bits).

Kibana también está di­s­po­ni­ble como software mu­l­ti­pla­ta­fo­r­ma para Windows, macOS y Linux (RPM, DEB). Dado que la apli­ca­ción está basada en el entorno de ejecución de Ja­va­S­cri­pt Node.js, los distintos paquetes de in­s­ta­la­ción también contienen los archivos binarios de Node.js ne­ce­sa­rios para ejecutar la he­rra­mie­n­ta de vi­sua­li­za­ción (no es co­m­pa­ti­ble con versiones in­de­pe­n­die­n­tes). Los di­fe­re­n­tes paquetes (ZIP) también se descargan, como Ela­s­ti­c­sea­r­ch, desde la página principal de Elastic.

Nota

Los usuarios de Linux y Mac también pueden instalar Kibana desde el re­po­si­to­rio Elastic usando los gestores de paquetes apt y yum. En los manuales online de Kibana en­co­n­tra­rás in­s­tru­c­cio­nes de­ta­lla­das al respecto.

Una vez de­s­co­m­pri­mi­do el paquete Kibana, ejecuta el archivo bin/kibana (macOS, Linux) o bin\kibana.bat (Windows) para poner en marcha el servidor Kibana.

Abre, a co­n­ti­nua­ción, el backend de Kibana a través de la dirección 'http://localhost:5601' en el navegador (Ela­s­ti­c­sea­r­ch ya debe estar eje­cu­tá­n­do­se).

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 de­s­ca­r­ga­bles gra­tui­ta­me­n­te que son las que uti­li­za­re­mos aquí para realizar pruebas. Se trata de las bases de datos “sha­ke­s­pea­re.json” (base de datos de las obras completas de William Sha­ke­s­pea­re), “accounts.zip” (conjunto de cuentas ficticias) y “logs.jsonl.gz” (conjunto de archivos de registro generados al azar).

Descarga y de­s­co­m­pri­me los tres archivos y guárdalos en una ubicación de tu elección.

Antes de in­tro­du­cir los datos en la he­rra­mie­n­ta, es necesario crear una imagen (mapping) de los campos de las bases de datos sha­ke­s­pea­re y server logs. Estas cla­si­fi­ca­cio­nes su­b­di­vi­den los do­cu­me­n­tos en el índice en grupos lógicos y es­pe­ci­fi­can las pro­pie­da­des de los campos (hasta qué punto pueden buscarse, por ejemplo). La he­rra­mie­n­ta adecuada para co­n­fi­gu­rar el mapeo es la consola, que se encuentra en el menú “Dev Tool” > “Console” en la interfaz de Kibana.

Ahora inserta por orden los si­guie­n­tes mappings uti­li­za­n­do 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 Ela­s­ti­c­sea­r­ch para cargar con Curl los registros (datos) a través de la terminal. En Windows, utiliza la Po­we­r­She­ll con el Invoke-Re­s­t­Me­thod (ejemplo de código a co­n­ti­nua­ció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 tra­n­s­fe­re­n­cia 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 “Sha­ke­s­pea­re”, “bank” y “logstash”. Para definir el primero haremos lo siguiente:

  1. Abre el menú “Ma­na­ge­me­nt” (Ad­mi­ni­s­tra­ció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 au­to­má­ti­ca­me­n­te, aunque también puede abrirse con el botón del mismo nombre.
  2. Escribe “shakes*” en el campo “Index pattern” y, a co­n­ti­nua­ción, pincha en “Next step” (Paso siguiente).
  3. Dado que no se requiere ninguna co­n­fi­gu­ra­ció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 au­to­má­ti­ca­me­n­te al índice “bank”.

Fi­na­l­me­n­te, 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 co­n­fi­gu­ra­ción, sino que se se­le­c­cio­na la entrada “@timestamp” en el menú de­s­ple­ga­ble “Time Filter field name” (Nombre de campo de filtro de tiempo), ya que estos registros contienen datos de se­cue­n­cias cro­no­ló­gi­cas. A co­n­ti­nua­ción, clica en “Create index pattern” como en los dos patrones an­te­rio­res.

Paso 4: explorar los registros que se han in­co­r­po­ra­do a Kibana

Una vez tu servidor Kibana cuenta con registros, puedes iniciar una consulta de búsqueda con Ela­s­ti­c­sea­r­ch para exa­mi­nar­los y filtrar los re­su­l­ta­dos. Para ello, en Kibana ve al menú “Discover” y se­le­c­cio­na el patrón de índice para su búsqueda uti­li­za­n­do 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 de­te­r­mi­na­dos criterios. Por ejemplo, para buscar es­pe­cí­fi­ca­me­n­te cuentas que tengan un saldo superior a 47 500 euros y pe­r­te­ne­z­can 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 co­rre­s­po­n­den con las pro­pie­da­des se­le­c­cio­na­das.

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

Paso 5: vi­sua­li­zar los datos

Si has seguido los pasos ex­pli­ca­dos hasta ahora en este tutorial de Kibana, ya estás en situación de vi­sua­li­zar los datos im­ple­me­n­ta­dos para dar vida a tu panel de control. Como ejemplo, crearemos un gráfico circular que re­pre­se­n­ta­rá 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 di­s­tri­bu­ción por edades dentro de estas di­vi­sio­nes.

Abre en un primer paso el menú “Visualize” (Vi­sua­li­zar) y haz clic en “Create a vi­sua­li­za­tion” (Crear una vi­sua­li­za­ción) para obtener una lista de los tipos de gráficos di­s­po­ni­bles. Se­le­c­cio­na 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 ca­te­go­rías. Estas se llaman “Buckets” (Cubos) en Kibana y se crean en el punto homónimo del menú.

Para definir los di­fe­re­n­tes rangos para los saldos, pincha en “Split Slices” (Separar porciones) y se­le­c­cio­na “Range” (Rango) en el menú de­s­ple­ga­ble “Ag­gre­ga­tion” (Agre­ga­ció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 ca­te­go­rías para saldos de cuentas:

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

Pincha, a co­n­ti­nua­ción, en “Apply changes”(Aplicar cambios) y el gráfico circular mostrará la di­s­tri­bu­ció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 di­s­tri­bu­ción de los rangos de edad en co­rre­s­po­n­de­n­cia con las áreas de saldo de cuenta. Para ello, pincha en “Add sub-buckets” (Añadir su­b­ca­te­go­rías), luego de nuevo en “Split Slices” y fi­na­l­me­n­te se­le­c­cio­na “Terms” (Co­n­di­cio­nes) en el menú de­s­ple­ga­ble. Busca en “Field” la entrada “age” (edad) y acepta los cambios pinchando en “Apply changes”.

Ahora puedes guardar la vi­sua­li­za­ción uti­li­za­n­do el botón "Guardar" situado en la barra de menú superior.

Paso 6: organizar el Dashboard

Fi­na­l­me­n­te, nos de­te­n­dre­mos bre­ve­me­n­te el Dashboard de Kibana. Para ello será necesario crear un primer panel de control de prueba uti­li­za­n­do la búsqueda y la vi­sua­li­za­ción que se guardaron en los pasos an­te­rio­res 4 y 5. Se­le­c­cio­na en primer lugar el panel de control en la na­ve­ga­ción de la página y clica en “Create new dashboard” (Crear nuevo panel de control) y, a co­n­ti­nua­ción, en “Add” (Añadir). Kibana listará entonces au­to­má­ti­ca­me­n­te todas las vi­sua­li­za­cio­nes o búsquedas guardadas:

Haciendo clic con el botón izquierdo del ratón se añade al panel de control la vi­sua­li­za­ción del saldo de la cuenta y el resultado de la búsqueda, pe­r­mi­tie­n­do la pre­se­n­ta­ció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 vi­sua­li­za­ción o búsqueda en toda la pantalla o eli­mi­nar­lo del panel de control. Mediante “Inspect” (In­s­pe­c­cio­nar), puedes vi­sua­li­zar in­fo­r­ma­ción adicional sobre los datos y consultas su­b­ya­ce­n­tes de muchas vi­sua­li­za­cio­nes.

Nota

Si quitas un panel del Dashboard de Kibana, la vi­sua­li­za­ción o búsqueda guardada no se pierde.

Ir al menú principal