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, ya que si no tendrán la extensión ‘.disabled’.
[sourcecode]- module: sistema
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: sistema
period: 1m
metricsets:
– filesystem
– fsstat
processors:
– drop_event.when.regexp:
system.filesystem.mount_point: ‘^/(sys|cgroup|proc|dev|etc.|host|lib)($|/)’
– module: sistema
period: 15m
metricsets:
– uptime[/sourcecode]
Després, en el fichero de configuración ‘metricbeat.yml’ realizaremos 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. 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 configurado los ficheros de configuración, desde un PowerShell con privilegios de administrador, vamos al path donde tenemos Metricbeats, i executem:
[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 visualizarlas… viene 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 ‘@timestamp‘ como 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!















































