Recopilant metriques de Windows a Elasticsearch amb Metricbeat i visualitzant amb Grafana

En este post veremos otro de los maravillosos components de Elasticsearch, dentro de los paquets de Beats també ens trobarem una utilitat que ens servirà per tratar i recoleccionar mètriques dels nostres equips Windows o Linux, conocida como Metricbeat. Veremos cómo exportar dichas métricas a Logstash para tratarlas y almacenarlas en Elasticsearch para posteriorment visualizarlas con Kibana o Grafana!

 

 

Bé, hem de deixar l'agent liviano Metricbeat instalado y corriendo en les màquines de les que volem absorber sus mètriques, 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 totes les opcions que podrem utilitzar, llamado 'metricbeat.reference.yml'. En aquest exemple veremos sobre una màquina Windows cómo recopilar mètriques bàsiques com son la CPU, Memòria, Disco o Red, però que opcionalment si corre algun servei interessant le habilitaremos el mòdul correspondiente para recopilar també dichos datos. Descargaremos Metricbeat, el configurarem i el instal·larem com a servei.

 

Configurant Metricbeat,

Bo, abans de començar a tocar el fitxer de configuració de Metricbeat; a la carpeta ‘modules.d’ tindrem tots els mòduls addicionals dels quals podrem a més obtenir mètriques, siguin serveis de serveis web, bases de dades, plataformes virtuals, com per exemple apache, mongodb, mysql, vsphere, PostgreSQL… En cada mòdul podrem habilitar que s'obtinguin més o menys mètriques.

En aquest exemple, a ‘system.yml’ veurem que redirigirà cada 10 segons les mètriques de CPU, Memòria, Xarxa o informació dels processos entre altres, podrem comentar o descomentar el que necessitem, podrem definir aquest mòdul o el que ens interessi especificant la informació que ens interessi recopilar. Més endavant veurem com habilitar els mòduls que ens interessin, ja que si no tindran l'extensió ‘.disabled’.

[sourcecode]- module: sistema
punt: 10s
metricsets:
– cpu
#- load
– memory
– network
– process
– process_summary
#- core
#- diskio
#- socket
process.include_top_n:
per_cpu: 5 # incloure top 5 processos per CPU
per_memòria: 5 # incloure top 5 processos per memòria

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

– module: sistema
punt: 15m
metricsets:
– uptime[/sourcecode]

 

Després, al fitxer de configuració ‘metricbeat.yml’ realitzarem la resta de configuració, a la secció de ===== General ===== podrem afegir tags o camps addicionals per si ens interessés associar aquest Metricbeat de l'equip a diferents paraules clau, 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, el seu SO…

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

fidelds:
globo_environment: Produccion[/sourcecode]

 

A la secció de l' Output, podrem enviar directament a Elasticsearch les dades, però com en altres posts, particularment prefereixo enviar les dades a Logstash per tractar-les. Així que comentarem tota la part de Output contra Elasticsearch i configurarem contra el servidor de Logstash i el seu port, que en un document anterior vam veure a la part de “Configurant Logstash” el fitxer a crear. Dit això, toquem l'output deixant alguna cosa així:

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

 

Un cop configurat Metricbeat, per instal·lar Metricbeat com a servei executem:

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

 

I el dit, podem habilitar mòduls específics si volem monitorització addicional a la nostra màquina, en aquest servidor disposo d'un MySQL i un Apache, hauria d'habilitar-los:

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

 

Com sempre, la primera vegada que afegim a Elasticsearch mètriques de Metricbeat, hem de carregar la plantilla perquè ens generi els índexs amb els camps de manera correcta:

.\metricbeat.exe setup –template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=[“SERVIDOR_ELASTICSEARCH:9200”]’

 

Podremos probar si tenemos bien configurat los ficheros de configuración, desde un PowerShell con privilegis de administrador, vamos al path donde tenemos Metricbeats, i executem:

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

 

E iniciamos el servei y si queremos, podem veure l'estat de la connexió 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 visualizarlas… viene la mágia!

 

Des de Kibana,

Si queremos visualizar les mètriques amb Kibana, primer crearemos el patrón del índice, després verificaremos que arribem dades i després ja nos podríem posar 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 panells para visualizar las mètriques que generen les màquines que tenen Metricbeat instalado! En un Panel de ejemplo, en aquest cas serà una gráfica de líneas, donde visualizaremos todas las mètriques que generan un par de màquines. Seleccionamos nuestro conector contra los índices de Metricbeat en Elasticsearch, i podem utilitzar consultes Lucene des d'aquí per visualizar lo que ens interessa.

 

I res, en un ratito podrem analitzar que dades nos estan arribant i com presentar-los i dibujarlos amb Grafana, ya veréis com no resulta tan complicat y podem visualitzar de una manera molt agradable qualsevol informació que recopilem, espero os haya resultat interessant!

 

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 per vExperts

11 d'April de 2019