Ingeniería

UI de Infrastructure y Logs: Nuevas formas para que las operaciones interactúen con Elasticsearch

Con la versión 6.5 del Elastic Stack, lanzamos dos formas nuevas de interactuar con tus datos: las UI de Infrastructure y Logs. Ambas se encuentran en etapa beta en la versión 6.5, pero hablaremos más al respecto luego y te pediremos tu opinión. Quisiéramos hablar un poco sobre la motivación, la experiencia del usuario y la configuración de cada una de estas UI. Comencemos por la UI de Logs.

UI de Logs

Motivación

Es frecuente escuchar lo siguiente: “Solo dame los logs, no necesito nada sofisticado, todo lo que necesito saber está en los logs, solo quiero leerlos”. Te entendemos. La decisión es tuya:

Una experiencia tail -f mejorada con lo más reciente en la parte inferior; una experiencia visual con tablas, gráficos, nubes de etiquetas, etc.; o una vista tabular. Deberías poder trabajar del modo que mejor se adapte a tus necesidades, y la apertura del Elastic Stack soporta que así sea.

Logs-small.jpg visuals-small.jpg discover-small.jpg

Experiencia del usuario

Usar la UI de Logs es similar a hacer el seguimiento de un archivo de log, pero con todos los logs de todos tus sistemas disponibles en una consola. Los logs ingresan, y en la parte inferior de la vista se encuentra el registro más reciente, como en tail -f. De forma predeterminada, la UI de Logs te muestra todos los registros de todos los logs que cumplen con los criterios de configuración (veremos más sobre esto en la sección siguiente). Cuando estás trabajando sobre un problema y decides que no quieres todos los logs, de todos los servicios, todo junto (transmitiéndose más rápido de lo que alguien podría leer), simplemente debes cambiar la interacción escribiendo en la barra de búsqueda superior. Por ejemplo, si solo deseamos ver los errores 404 de los pods httpd de Apache con el nivel de etiquetas de Kubernetes = “frontend”, comenzaremos a escribir en la barra de búsqueda y dejaremos que la característica autocompletar nos ayude a encontrar los logs correctos:

Compara esto con abrir una terminal, autenticar con tu proveedor de k8s, determinar cuáles pods deseas y ejecutar kubectl logs -f … | grep 404 (o encontrar en un universo sin contenedores los nombres de host, usar SSH para iniciar sesión, hacer un seguimiento de los logs, etc.). Queremos facilitarte la vida y proporcionarte los datos de la forma que deseas verlos.

Configuración

Los documentos de la UI de Logs se encuentran en el lugar habitual, pero aquí destacaremos algunas opciones de configuración. Esta es la configuración predeterminada en la que puedes pegarlos en config/kibana.yml, y luego modificarlos desde los valores predeterminados:

xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.fields.timestamp: "@timestamp"
xpack.infra.sources.default.fields.message: ['message', '@message']

La configuración es bastante simple, desde el principio las líneas que se muestran en la UI de Logs son el campo message de cada índice que coincide con el alias filebeat-*. ¿Y si deseas agregar todos tus índices de Logstash? Simplemente modifica xpack.infra.sources.default.logAlias en la entrada config/kibana.yml y reinicia Kibana:

#xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.logAlias: "filebeat-*,logstash-*"

No olvides reiniciar Kibana. Vuelve a abrir la UI de Logs y haz clic en Stream Live (Transmitir en vivo), deberías ver todos los logs de Logstash y Filebeat transmitiéndose a la UI de Logs.

Nota: Si prefieres usar alias de Elasticsearch, simplemente configura xpack.infra.sources.default.logAlias con el nombre de alias y después actualiza el alias según lo necesites. Esta es la opción equivalente usando un alias de logs.

Crea el alias:

curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "indices" : ["logstash-*", "filebeat-*"], "alias" : "logs" } }
]
}
'

Actualiza config/kibana.yml:

#xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.logAlias: "logs"

UI de Infrastructure

Motivación

Vemos tres niveles de madurez básicos para gestionar la infraestructura:

  1. Descubrir que algo no funciona, luego abrir un sistema de monitoreo para profundizar.
  2. Representar indicadores clave para todos los sistemas en un dashboard grande y observarlo, luego profundizar en los problemas.
  3. Automatizar las operaciones con Machine Learning que descubra el comportamiento normal, detecte problemas emergentes y alerte operaciones.

La UI de Infrastructure está diseñada para que las operaciones lleguen a la etapa “representar indicadores clave en un dashboard grande”. En realidad todos necesitamos llegar a la “etapa de automatización con Machine Learning”; puedes leer más sobre Machine Learning de Elastic, y si ves el video al final de este blog, verás un flujo de trabajo que comienza con una alerta de una tarea de Machine Learning y avanza desde allí por el APM y el rastreo distribuido, la UI de Infrastructure y de Logs. Tener todos los logs, métricas, APM y rastreo distribuido juntos en Elasticsearch te permite usar todas las herramientas de análisis y visualización en todos tus datos.

Echemos un vistazo a la UI de Infrastructure, y luego profundizaremos. En esta vista, observamos los pods de Kubernetes agrupados por espacio de nombre. Estamos viendo el tráfico de red entrante. Si hacemos clic con el botón secundario sobre uno de los pods, podemos saltar a los logs de dicho pod o a un dashboard de métricas seleccionadas de dicho pod.

Experiencia del usuario

Actualmente se soportan tres tipos de dispositivos: hosts, pods de Kubernetes (k8s) y contenedores docker. El poder de la UI de Infrastructure es que puedes ver el estado de los indicadores clave de una gran cantidad de dispositivos. En un volumen alto, tienes cuadros de colores sin texto hasta que exploras un subconjunto interesante usando la barra de búsqueda o haciendo clic en un grupo. También puedes ingresar a los logs de un dispositivo o mostrar un dashboard de métricas.

Mencionamos “indicadores clave”; en este momento, esta es la lista, y todos provienen de Metricbeat:

Hosts: CPU, Memory (Memoria), Load (Carga), Inbound Traffic (Tráfico entrante), Outbound Traffic (Tráfico saliente) y Log Rate (Tasa de logs)
Kubernetes: CPU, Memory (Memoria), Inbound Traffic (Tráfico entrante), Outbound Traffic (Tráfico saliente)
Docker: CPU, Memory (Memoria), Inbound Traffic (Tráfico entrante), Outbound Traffic (Tráfico saliente)

La agrupación te permite hacer zoom a la lista de dispositivos. Si soportas una aplicación en particular desplegada con Kubernetes, el grupo Namespace (Espacio de nombres) es el indicado en tu caso. Si crees que un problema está relacionado con un nodo en particular que se sobrecarga, quizás quieras subdividir aún más agrupando tanto por Namespace como por Node (Nodo). Esta es la lista de agrupaciones en este momento (y puedes usar hasta dos por tipo de dispositivo):

Hosts: Availability Zone (Zona de disponibilidad), Machine Type (Tipo de máquina), Project ID (ID de proyecto), Cloud Provider (Proveedor Cloud)
Kubernetes: Namespace (Espacio de nombres), Node (Nodo)
Docker: Host, Availability Zone (Zona de disponibilidad), Machine Type (Tipo de máquina), Project ID (ID de proyecto), Provider (Proveedor)

Si ninguna de las agrupaciones anteriores soportan la forma en que deseas interactuar con tus datos, usa la barra de búsqueda. Comienza a escribir y la característica autocompletar del lenguaje de búsqueda de Kibana (KQL) te guiará. Incluimos un ejemplo en el GIF de la UI de Logs arriba, comenzamos a escribir kubernetes y Kibana sugirió labels y tier, y luego proporcionó las opciones posibles según lo indexado en Elasticsearch.

Una vez que agrupas los recursos, puedes explorar un grupo haciendo clic sobre él, esto te permite ver más detalles sobre dicho grupo. Si te interesa algún host, pod o contenedor en particular, explora los logs o las métricas que le corresponden. Este es un fragmento de la vista de métricas de un host:

Configuración

Hay muy pocas configuraciones que realizar en la UI de Infrastructure. Solo despliega Metricbeat y habilita el módulo System (Sistema). Si ejecutas contenedores, habilita también los módulos Kubernetes y Docker.

A menos que hayas modificado el patrón de índice predeterminado (metricbeat-*), ya terminaste. Si necesitas realizar alguna personalización, encontrarás los detalles en los documentos de UI de Infrastructure, incluiremos las opciones clave aquí:

xpack.infra.sources.default.metricAlias: "metricbeat-*"
xpack.infra.sources.default.fields.host: "beat.hostname"
xpack.infra.sources.default.fields.container: "docker.container.name"
xpack.infra.sources.default.fields.pod: "kubernetes.pod.name"

Da tu opinión

Ambas UI son versiones beta, nos gustaría conocer tus comentarios (y seguir recibiéndolos incluso después de que se pongan a disposición del público en general). Cuéntanos cómo prefieres interactuar con tus datos. ¿Son suficientes las agrupaciones en esta versión beta de la UI de Infrastructure para soportar la forma de organización de tu equipo? ¿Qué sería mejor? ¿Contamos con las métricas correctas para controlar los colores? ¿Necesitas alguna forma diferente para filtrar los logs en la UI de Logs? Cuando ingresas en la vista de métricas desde la UI de Infrastructure, ¿ves las métricas que te interesan?

Visita el foro de debate de Kibana y cuéntanos lo que te gusta, lo que no, lo que necesitas, etc. Los desarrolladores leen y responden estos debates, y les encanta conocer tu opinión. También puedes abrir una consulta, enviar una PR o mantenerte atento a estas en GitHub.

Súmate y dale una oportunidad

Nuestro sistema de demostración en vivo tiene logs y métricas en los que puedes realizar búsquedas, que puedes visualizar y con los que puedes interactuar. Dirígete al mosaico Infrastructure y haz clic allí para iniciar la UI de Infrastructure:

JumpIn.jpg

Puedes pasar a las vistas de Kubernetes o Docker, agrupar los objetos usando la UI o limitar la vista con la barra de búsqueda. Haz clic con el botón izquierdo en un host, pod o contenedor para iniciar la UI de Logs de ese objeto. Mientras te encuentres en demo.elastic.co, echa un vistazo a algunos de los dashboards y visualizaciones. Puedes navegar a distintas áreas desde la página de destino.

Ve una demostración

Este video te muestra el flujo de trabajo de estas UI (y también Machine Learning y APM con rastreo distribuido). Nuevamente, muchas gracias por leer el blog y por tus comentarios.