Recopilando metricas de Windows en Elasticsearch con Metricbeat y visualizando con Grafana

En este post veremos otro de los maravillosos componentes de Elasticsearch, dentro de los paquetes de Beats también nos encontraremos una utilidad que nos servirá para tratar y recoleccionar métricas de nuestros equipos Windows o Linux, conocida como Metricbeat. Veremos cómo exportar dichas métricas a Logstash para tratarlas y almacenarlas en Elasticsearch para posteriormente visualizarlas con Kibana o Grafana!

 

 

Bien, debemos dejar el agente liviano Metricbeat instalado y corriendo en las máquinas de las que queremos absorber sus métricas, sea un equipo con SO Windows, Linux o Mac OS. Descargamos Metricbeat de https://www.elastic.co/downloads/beats/metricbeat, lo descomprimiremos y , (por ejemplo) lo dejamos en ‘ C:\Program Files\metricbeat\’. Tendremos su fichero de configuración llamado ‘metricbeat.yml’ y otro fichero de referencia con todas las opciones que podremos utilizar, llamado ‘metricbeat.reference.yml’. En este ejemplo veremos sobre una máquina Windows cómo recopilar métricas básicas como son la CPU, Memoria, Disco o Red, pero que opcionalmente si corre algún servicio interesante le habilitaremos el módulo correspondiente para recopilar también dichos datos. Descargaremos Metricbeat, lo configuraremos y lo instalaremos como servicio.

 

Configurando Metricbeat,

Bueno, antes de comenzar a tocar el fichero de configuración de Metricbeat; en la carpeta ‘modules.dtendremos todos los módulos adicionales de los que podremos además obtener métricas, sean servicios de servicios web, bases de datos, plataformas virtuales, como por ejemplo apache, mongodb, mysql, vsphere, PostgreSQLEn cada módulo podremos habilitar que se obtengan más o menos métricas.

En este ejemplo, en ‘system.ymlveremos que redireccionará cada 10 segundos las métricas de CPU, Memoria, Red o información de los procesos entre otros, podremos comentar o descomentar lo que necesitemos, podremos definir este módulo o el que nos interese especificando la info que nos interese recopilar. Más adelante veremos como habilitar los módulos que nos interese, ya que si no tendrán la extensión ‘.disabled’.

[sourcecode]- module: system
period: 10s
metricsets:
cpu
#- load
memory
network
process
process_summary
#- core
#- diskio
#- socket
process.include_top_n:
by_cpu: 5 # include top 5 processes by CPU
by_memory: 5 # include top 5 processes by memory

module: system
period: 1m
metricsets:
filesystem
fsstat
processors:
drop_event.when.regexp:
system.filesystem.mount_point: ‘^/(sys|cgroup|proc|dev|etc|host|lib)($|/)’

module: system
period: 15m
metricsets:
uptime[/sourcecode]

 

Después, en el fichero de configuración ‘metricbeat.ymlrealizaremos el resto de configuración, en la sección de ===== General ===== podremos añadir tags o campos adicionales por si nos interesaría asociar este Metricbeat del equipo a distintas palabras claves, para luego poder usarlas en distintas búsquedas, como indicar si es un Servidor, es un servidor de BBDD o web, o tiene IIS, su SO…

[sourcecode]tags: ["Servidor", "Windows 2016 R2", "OS-DC-01"]

fields:
globo_environment: Produccion[/sourcecode]

 

En la sección del Output, podremos enviar directamente a Elasticsearch los datos, pero como en otros posts, particularmente prefiero enviar los datos a Logstash para tratarlos. Así que comentaremos toda la parte de Output contra Elasticsearch y configuramos contra el servidor de Logstash y su puerto, que en un anterior documento vimos en la parte deConfigurando Logstashel fichero a crear. Lo dicho tocamos el output dejando algo así:

[sourcecode]#——— Logstash output ———
output.logstash:
# The Logstash hosts
#hosts: ["localhost:5044"]
hosts: ["DIRECCION_IP_LOGSTASH:5044"][/sourcecode]

 

Una vez configurado Metricbeat, para instalar Metricbeat como un servicio ejecutamos:

[sourcecode].\install-service-metricbeat.ps1[/sourcecode]

 

Y lo dicho, podemos habilitar módulos especificos si queremos monitorización adicional en nuestra máquina, en este servidor dispongo de un MySQL y un Apache, debería habilitarlos:

[sourcecode].\metricbeat.exe modules enable apache mysql[/sourcecode]

 

Como siempre, la primera vez que añadamos en Elasticsearch métricas de Metricbeat, debemos cargar la plantilla para que nos genere los índices con los campos de manera correcta:

.\metricbeat.exe setuptemplate -E output.logstash.enabled=false -E ‘output.elasticsearch.hosts=[“SERVIDOR_ELASTICSEARCH:9200”]’

 

Podremos probar si tenemos bien configurado los ficheros de configuración, desde un PowerShell con privilegios de administrador, vamos al path donde tenemos Metricbeats, y ejecutamos:

[sourcecode].\metricbeat.exe test config -c .\metricbeat.yml -e[/sourcecode]

 

E iniciamos el servicio y si queremos, podemos ver el estado de la conexión de Metricbeats con Logstash o Elasticsearch (depende lo que escogimos):

[sourcecode]Start-Service metricbeat
Get-Content .\logs\metricbeat -Wait[/sourcecode]

 

Y listo! Ya deberemos tener Metricbeat recoleccionando métricas! Ahora vamos a visualizarlasviene la mágia!

 

Desde Kibana,

Si queremos visualizar las métricas con Kibana, primero crearemos el patrón del índice, después verificaremos que llegan datos y luego ya nos podríamos poner a pintar!

 

Abrimos Kibana, vamos aManagement” > “Index Patterns” > “Create Index Patterne indicamos ‘metricbeat-*como patrón, pulsamos enNext step”,

 

Seleccionamos@timestampcomo columna de tiempo y creamos el patrón desdeCreate index pattern”.

 

Y desdeDiscover”, seleccionando el patrón que acabamos de crear ya podremos apreciar que nos están llegando datos, como siempre, podemos desde aquí ver qué nos llega, jugar a añadir columnas y hacer filtros para luego crear las visualizaciones desdeVisualizey ver las métricas que estamos monitorizando en tiempo real pero en formato de gráficas, tablas, columnas, quesos

 

Desde Grafana,

Antes de poder visualizar los datos, recordar que debemos de dar de alta el origen de datos y conectar Grafana con los índices de Metricbeat en Elasticsearch!

 

Abrimos Grafana, vamos a “Configuración” > “Data Sources”, indicaremos un nombre a la conexión, en la URL debemos indicar la URL de nuestro Elasticsearch ‘http://DIRECCION_IP_ELASTIC:9200. Seleccionamos ‘metricbeat-*’ para usar como nombre para los índices, indicamos el campo @timestamp para el campo de tiempo y seleccionamos la versión de Elasticsearch, pulsamos en “Save & Test”,

 

Y ya podremos en un Dashboard añadir paneles para visualizar las métricas que generan las máquinas que tienen Metricbeat instalado! En un Panel de ejemplo, en este caso será una gráfica de líneas, donde visualizaremos todos las métricas que generan un par de máquinas. Seleccionamos nuestro conector contra los índices de Metricbeat en Elasticsearch, y podemos usar consultas Lucene desde aquí para visualizar lo que nos interese.

 

Y nada, en un ratito podremos analizar que datos nos están llegando y cómo presentarlos y dibujarlos con Grafana, ya veréis como no resulta tán complicado y podemos visualizar de una manera muy agradable cualquier información que recopilemos, espero os haya resultado interesante!

 

Posts recomendados

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir ;) . Disfrutar de los documentos!!!

Libro: VMware por vExperts

11 de April de 2019