Recopilant metriques de Windows a Elasticsearch amb Metricbeat i visualitzant amb 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!

 

 

Bé, 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 , (per exemple) 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, Memòria, 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,

Bo, 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 dades, 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 aquest exemple, en ‘system.ymlveremos que redireccionará cada 10 segundos las métricas de CPU, Memòria, 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]

 

Despré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, per després poder usar-les en diferents recerques, com indicar si és un Servidor, es un servidor de BBDD o web, o té IIS, su SO…

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

fidelds:
globo_environment: Produccion[/sourcecode]

 

A la secció de l' 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 de “Configurant Logstash” el 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]

 

I el dit, 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]

 

Com sempre, 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 setup –template -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]

 

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

 

Des de 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, anem a “Management” > “Index Patterns” > “Create Index Pattern” e indicamos ‘metricbeat-*como patrón, posem en “Next step”,

 

Seleccionem ‘@timestampcomo columna de tiempo y creamos el patrón desde “Create index pattern”.

 

I des de “Discover”, seleccionando el patrón que acabamos de crear ya podremos apreciar que nos están llegando datos, com sempre, podemos desde aquí ver qué nos llega, jugar a añadir columnas y hacer filtros para luego crear las visualizaciones desde “Visualize” y ver las métricas que estamos monitorizando en tiempo real pero en formato de gráficas, taules, columnes, quesos

 

Des de 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, a la URL hem d'indicar la URL del nostre Elasticsearch 'http://DIRECCION_IP_ELASTIC:9200’. Seleccionamos ‘metricbeat-*’ para usar como nombre para los índices, indiquem el camp @timestamp per al camp de temps i seleccionem la versió d'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.

 

I res, 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 recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!

Llibre: VMware por vExperts

11 d' April de 2019