Kibana es una interfaz de usuario gratuita y abierta que te permite visualizar los datos de Elasticsearch y navegar
en el Elastic Stack. Realiza lo que desees, desde rastrear la carga de búsqueda hasta comprender
la forma en que las solicitudes fluyen por tus apps (https://www.elastic.co/es/kibana)
Kibana es el interface que usamos para visualizar los datos (como por ejemplo logs) que Elasticsearch ingesta de
diferentes fuentes.
Un uso típico puede ser el ver de forma centralizada todos los logs que va generando un stack de servicios de tal
forma que podamos dar un contexto único a los mismos, realizar búsquedas complejas e incluso diseñar diagramas
explotando dichos datos. Así en el post logs-metricas.html contaba cómo hacer una
anotación para servicios Grails tal que añadieran información en el contexto del log sobre la duración del método
junto con los parámetros recibidos en el mismo. Esta meta-información puede llegar al Kibana de tal forma que no sólo
puedas realizar búsquedas en el texto sino en esta meta-información.
Visualmente, esto sería un ejemplo de una línea de log en la consola web de Kibana junto con su meta-información:
t @containerId rm26xpdn3qyx4i0ugphtplq8o/43b08f1b4da4
t @id 35625187335574879357932181753924573842110613149578166277
t @log_group docker-logs
t @log_stream service_1.2.rm26xpdn3qyx4i0ugphtplq8o/43b08f1b4da4
t @message {"timestamp":"2020-08-15T10:50:49.748+0000","level":"INFO","thread":"http-apr-8080-exec-4","logger":"{...}"}
t @owner 602122916959
t @payload.className com.puravida.service.HelloController
# @payload.duration 1,680
t @payload.methodName hello
t @replica 2
t @service service_1
@timestamp Aug 15, 2020 @ 10:50:49.748
t _id 35625187335574879357932181753924573842110613149578166277
t _index cwl-2020.08.15
# _score -
t _type docker-logs-production
t context default
t correlationId 8f9b465a-d08c-4d95-b65b-82398d3dc127
t level INFO
t logger com.puravida.service.HelloController
t message com.puravida.service.HelloController.hello: duration=1680 ms;
t thread http-apr-8080-exec-4
timestamp Aug 15, 2020 @ 10:50:49.748
t userId - not logged -
Como puedes ver en este registro de Elasticsearch no sólo tenemos el message
generado sino una serie de meta-campos
extras como el @payload generado por nuestra anotación.
Gracias al motor de búsqueda de Elasticsearch desde Kibana puedes filtrar logs que contengan un valor de interés en
estos metacampos, por ejemplo puedes filtrar:
@payload.className:HelloController
y obtener todos los logs generados por este controller y extraer de ellos el campo @payload.duration
Realizar gráficas que usen este campo junto, en un intervalo de tiempo definido en @timestamp es cuestión de minutos.