El monitoreo de sistemas en producción requiere una visión clara del estado de los servicios críticos. En entornos basados en Elastic Stack (ELK), donde se procesan y analizan grandes volúmenes de logs, es fundamental asegurar que cada componente —Elasticsearch, Kibana y Logstash— funcione de manera óptima. Esta guía muestra cómo implementar un sistema de supervisión integrado usando Metricbeat para recopilar métricas de rendimiento y salud de cada componente del stack.
Arquitectura general
La arquitectura típica incluye múltiples instancias de Metricbeat instaladas en servidores donde corren los servicios ELK. Cada instancia recolecta métricas a través de endpoints HTTP expuestos por los componentes, luego envía estos datos a Elasticsearch para su almacenamiento y análisis. Finalmente, Kibana permite visualizar las métricas en paneles interactivos, facilitando la detección temprana de fallos o cuellos de botella.
Instalación y configuración de Metricbeat
Descarga Metricbeat desde el sitio oficial de Elastic:
https://www.elastic.co/cn/downloads/past-releases#metricbeat
Recopilación de métricas de Elasticsearch
Activa el módulo específico para Elasticsearch:
./metricbeat modules enable elasticsearch-xpack
Por defecto, Metricbeat intentará conectarse a http://localhost:9200. Si el nodo está en otra ubicación, actualiza el archivo modules.d/elasticsearch-xpack.yml para incluir el host correcto en la sección hosts.
Supervisión de Kibana
Habilita el módulo de Kibana:
./metricbeat modules enable kibana-xpack
Este módulo por defecto apunta a http://localhost:5601. Ajusta el valor de hosts en modules.d/kibana-xpack.yml si el servicio no está en el localhost.
Monitoreo de Logstash
Activar el módulo correspondiente:
./metricbeat modules enable logstash-xpack
Los datos se obtienen por defecto desde http://localhost:9600. Modifica modules.d/logstash-xpack.yml para ajustar la dirección si es necesario.
Supervisión de Beats (como Filebeat)
Para que Metricbeat pueda monitorear otros Beats, primero deben exponer un endpoint HTTP.
Configuración del endpoint HTTP en Filebeat
Agrega al archivo filebeat.yml:
http:
enabled: true
host: 0.0.0.0
port: 5066
Habilitar el módulo Beat en Metricbeat
./metricbeat modules enable beat-xpack
El módulo por defecto accede a http://localhost:5066. Cambia el valor de hosts en modules.d/beat-xpack.yml si el Beat está en otro servidor o puerto.
Configuración de salida de datos
Define el destino donde Metricbeat enviará las métricas. Edita metricbeat.yml:
output.elasticsearch:
hosts: ["http://localhost:9200"]
# protocol: "https"
# username: "elastic"
# password: "changeme"
Reemplaza los valores según tu entorno real, especialmente si usas autenticación o HTTPS.
Iniciar Metricbeat
./metricbeat -e
El flag -e activa el registro detallado en consola, útil durante pruebas.
Recopilación de logs de Elasticsearch mediante Filebeat
Además de métricas, es clave monitorizar los logs internos de Elasticsearch para detectar errores, advertencias o comportamientos inusuales.
Habilitar el módulo Elasticsearch en Filebeat
./filebeat modules enable elasticsearch
Configurar rutas de logs
Edita modules.d/elasticsearch.yml:
- module: elasticsearch
server:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_server.json
gc:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/gc.log.[0-9]*
- /app/elk/elasticsearch/logs/gc.log
audit:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_audit.json
slowlog:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_index_search_slowlog.json
- /app/elk/elasticsearch/logs/*_index_indexing_slowlog.json
deprecation:
enabled: true
var.paths:
- /app/elk/elasticsearch/logs/*_deprecation.json
Asegúrate de ajustar las rutas de archivos según la estructura de tus directorios.
Configurar salida a Elasticsearch
En filebeat.yml:
output.elasticsearch:
hosts: ["localhost:9200"]
# protocol: "https"
# username: "elastic"
# password: "changeme"
Iniciar Filebeat
./filebeat -c filebeat.yml -e
Visualización en Kibana
Accede a Kibana y navega hasta el menú Stack Monitoring. Allí podrás ver gráficos en tiempo real sobre uso de CPU, memoria, latencia de búsqueda, cola de eventos, entre otros indicadores clave para cada componente del stack.