Ingeniería

Monitoreo de tiempo de actividad con Heartbeat y el Elastic Stack

Nos complace anunciar que a partir de la versión 6.5 del Elastic Stack, Heartbeat está disponible al público en general. Heartbeat, que se presentó por primera vez en versión beta en enero de 2017, es un agente ligero (similar al resto de los Beats: Metricbeat, Filebeat, Winlogbeat, etc.), pero está diseñado para el monitoreo de tiempo de actividad.

Heartbeat puede operar desde adentro o afuera de tu red. Todo lo que necesita es el acceso de red al endpoint HTTP, TCP o ICMP deseado. Para la configuración, simplemente debes proporcionar a Heartbeat la lista de las URL que deseas monitorear. Heartbeat ejecuta comprobaciones periódicas para verificar si el endpoint está activo o inactivo, y después reporta esta información, junto con otras métricas útiles, a Elasticsearch. Esta información se muestra automáticamente en dashboards de Kibana prediseñados para el monitoreo de tiempo de actividad preconfigurado.

Veamos en más detalle cómo configurar y usar Heartbeat con el Elastic Stack.

Instalación de Heartbeat

Para instalar Heartbeat, necesitarás descargar y extraer un ejecutable prediseñado para tu plataforma. En este ejemplo usaremos macOS; sin embargo, ofrecemos soporte para muchos otros sistemas operativos, por lo que debes usar los comandos que funcionen en tu sistema.

Descarga y extrae la versión más reciente de Heartbeat:

curl -l -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-6.5.0-darwin-x86_64.tar.gz
tar xzvf heartbeat-6.5.0-darwin-x86_64.tar.gz

Configuración de monitores de tiempo de actividad

Para que Heartbeat sepa qué servicio comprobar, necesita una lista de las URL. Esta configuración se especifica en el archivo heartbeat.yml en la carpeta /heartbeat. Este es un ejemplo de varias comprobaciones HTTP con Heartbeat, que se ejecutan cada 10 segundos:

# Configure monitors
heartbeat.monitors:
- type: http
  # List or urls to query
  urls:
        - "https://www.elastic.co"
        - "https://discuss.elastic.co"
  # Configure task schedule
  schedule: '@every 10s'

Además de los monitores HTTP/S, Heartbeat puede realizar comprobaciones TCP e ICMP para que obtengas mejor información sobre las diferentes capas de tus servicios. En Heartbeat, también podemos definir capas adicionales de comprobaciones; por ejemplo, podemos usar monitores HTTP/S para comprobar el código, cuerpo y encabezado de respuesta. Podemos definir comprobaciones de puertos y de texto mediante monitores TCP.

heartbeat.monitors:
- type: http
# List or urls to query
  urls: ["http://localhost:9200"]
  # request details:
  check.request:
       method: GET
  check.response:
       body: "You Know, for Search"
# Configure task schedule
  schedule: '@every 10s'

Este es un ejemplo de una comprobación de cuerpo HTTP en la que Heartbeat busca el texto “You Know, for Search” en http://localhost:9200 (la única URL especificada en la configuración).

En todos los monitores Heartbeat, podemos definir parámetros adicionales como name, timeout y schedule. Puedes encontrar las instrucciones de configuración completas en la documentación Configuring Heartbeat (Configuración de Heartbeat).

El paso final de la configuración es ajustar las salidas de Heartbeat (adónde enviar los datos). Entre las salidas soportadas se encuentran el cluster autogestionado de Elasticsearch, Elastic Cloud, Logstash y más. En este ejemplo, enviamos datos de Heartbeat a la instancia de Elasticsearch local (“localhost:9200”):

output.elasticsearch:
# Array of hosts to connect to.
  hosts: ["localhost:9200"]
 # Optional protocol and basic auth credentials.
 #protocol: "https"
 username: "elastic"
  password: "changeme"

Puedes encontrar un archivo de ejemplo con la configuración completa en el archivo heartbeat.reference.yml.

Inicio de Heartbeat por primera vez

Heartbeat incluye dashboards prediseñados que proporcionan mucho valor desde el primer momento. Configura los dashboards y ejecuta Heartbeat con estos comandos:

Para configurar los dashboards de Heartbeat en Kibana: (opcional, solo es necesario ejecutarlo una vez)

./heartbeat setup --dashboards

Para ejecutar Heartbeat:

./heartbeat -e

Tan pronto como Heartbeat comienza a ejecutarse, comprobará la lista de las URL que configuraste, enviará la información de regreso al Elastic Stack y llenará previamente los dashboards de Kibana.

Visualización de datos de tiempo de actividad en Kibana

Cuando abres Kibana, verás la información de Heartbeat en la pestaña Discover (Descubrir) cuando seleccionas el índice de Heartbeat (heartbeat-* de forma predeterminada):

Entre los dashboards, encontrarás el dashboard “Heartbeat HTTP monitoring” (Monitoreo HTTP de Heartbeat) completo con toda la información que Heartbeat envió:

Este es el dashboard de Heartbeat predeterminado:

En la esquina superior izquierda, verás una tabla con una lista de todos los endpoints monitoreados por Heartbeat, junto con los tiempos de respuesta. En la esquina superior derecha, verás el resumen de los códigos de estado del monitor y debajo encontrarás grafos adicionales que representan el porcentaje de monitores activos o inactivos, el tiempo de respuesta a lo largo del tiempo y la cantidad de comprobaciones a lo largo del tiempo.

Los dashboards de Heartbeat son interactivos. Con el dashboard predeterminado de Heartbeat, puedes detectar fácilmente si un endpoint específico está activo o inactivo; para ello, debes hacer clic en la sección de monitores inactivos (la porción roja del gráfico circular de estado de monitores HTTP ubicado en la esquina superior derecha). Al hacer clic, aplicarás un filtro en el dashboard que mostrará solo los monitores inactivos.

Puedes personalizar las visualizaciones y los dashboards de Kibana en Heartbeat para satisfacer tus necesidades. Para comenzar, haz clic en el botón “Edit” (Editar) arriba a la derecha en el dashboard, haz clic en el engranaje de una visualización individual y selecciona “Edit Visualization” (Editar visualización). También puedes crear visualizaciones nuevas basadas en datos de Heartbeat, combinar métricas de Heartbeat con otros logs, métricas y fuentes de datos de APM, y agregarlas a cualquier dashboard operativo que desees.

Combinación de datos de Heartbeat con otras fuentes de datos operativos

Combinar los datos de Heartbeat con más fuentes de datos, como Metricbeat, Filebeat y APM, puede proporcionar información importante al momento de priorizar una interrupción. Heartbeat te notificará cuando un servicio específico esté inactivo, Metricbeat y APM pueden proporcionarte los posibles sospechosos; puede mejorar significativamente el MTTR y hará que todos se enfoquen en el lugar indicado, en lugar de echarse la culpa unos a otros como suele suceder en las salas de operaciones típicas.

Visita nuestra página de soluciones para más información sobre nuestras soluciones de logging, métricas y APM.

Este es un ejemplo de un dashboard de Kibana que reúne métricas de Heartbeat (los dos paneles superiores) y Metricbeat (los dos paneles inferiores).

  • A la izquierda, puedes ver que cada vez que Heartbeat detectó que nuestro endpoint estaba inactivo, Metricbeat detectó una mayor cantidad de errores a través del módulo Nginx.
  • A la derecha, podemos ver claramente que cada vez que aumenta el tiempo de ping de HTTP, Metricbeat detecta una tasa de solicitudes alta en el servidor NGINX.

Al observar esta coincidencia, podemos concluir que un gran aumento repentino en la tasa de solicitudes desencadena errores de Nginx; lo que, a su vez, provoca errores en las comprobaciones de Heartbeat:

Alerta y detección de anomalías

Puedes usar las capacidades de alerta para recibir alertas y notificaciones sobre una interrupción o una degradación del rendimiento basadas en los datos del monitor de Heartbeat. También puedes usar las capacidades de Machine Learning del Elastic Stack para detectar cualquier anomalía basada en las analíticas temporales de los datos de Heartbeat. Encontrarás más información al respecto en nuestro próximo blog sobre Heartbeat.

Resumen

El monitoreo puede ser una tarea difícil. Debes identificar, alertar y resolver los problemas con rapidez. Es probable que te resulte más difícil si actualmente usas varias herramientas separadas para obtener visibilidad de tus aplicaciones e infraestructura.

Heartbeat agrega una funcionalidad de monitoreo de tiempo de actividad efectiva además de las características existentes de logs, métricas y APM en el Elastic Stack. Puedes usarlo de forma independiente o combinarlo con otras fuentes de datos operativos en Elasticsearch, ¡para no perderte ni un Beat!

Recursos de Heartbeat

Eso es todo. Esperamos que esta visión general te haya resultado útil. Para comenzar, descarga Heartbeat y lee la documentación para ver una explicación más detallada de la funcionalidad. Una de las formas más rápidas de experimentar Heartbeat es enviar los datos de tiempo de actividad al Elasticsearch Service en Elastic Cloud, la oferta hospedada de Elasticsearch y Kibana de los creadores de estos proyectos.

Si tienes preguntas, comunícate con nosotros a través del foro de discusión de Heartbeat, y si tienes problemas o te gustaría hacer una solicitud de mejora, hazlo en Github.