Recopilando métricas de rendimiento en Elasticsearch y visualizándolas en Grafana
En este post vamos a intentar ver cómo visualizar cualquier métrica de rendimiento de un equipo Windows Server o de sus servicios como sea SQL Server, Exchange… con la intención de poder visualizarlos en tiempo real en Grafana.
La idea será recopilarlos mediante uno de los agentes del Stack de Elastic, en este caso usaremos Metricbeat, y luego este se encargará de almacenarlos en Elasticsearch; y con Grafana accederemos a los datos y los visualizaremos cómo nos interese. Hace un tiempo escribí un post donde hablábamos de cómo implementar Metricbeat y cómo recopilar las réplicas del sistema, si quieres échale un vistazo, hoy lo que toca son los contadores de rendimiento del perfmon o Monitor de recursos, o como le queramos llamar.
Instalando Metricbeat
La instalación de Metricbeat ya la conocemos, es muy sencilla, bastará con descargarnos el fichero ZIP de x64 de https://www.elastic.co/es/downloads/beats/metricbeat y descomprimirlo en ‘C:\Program Files\metricbeat’. Para crear el servicio de Metricbeat ejecutamos:
cd 'C:\Program Files\metricbeat\' .\install-service-metricbeat.ps1
Editamos el fichero de configuración de Metricbeat, y al menos creamos la conexión contra nuestro servidor de Elasticsearch y el de Kibana:
... # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: # Konexioa egiteko ostatuen arraya. hosts: ["https://FQDN_ELASTIC:9200"] ssl.verification_mode: none username: "USUARIO" password: "PASAHITZA" indizea: "metricbeat-%{+yyyy.MM.dd}" ... # =================================== Kibana =================================== setup.kibana: host: "https://FQDN_KIBANA:5601" ssl.verification_mode: none ...
Probamos la configuración:
.\metricbeat.exe test config -c .\metricbeat.yml -e
Cargamos los dashboards de Kibana (si los dashboards ya los hemos importado alguna vez podremos ignorar el primer comando) y arrancamos el servicio:
.\metricbeat.exe setup
Start-Service metricbeat
Si queremos quitar el servicio, vaya desinstalar filebeat alguna vez:
.\desinstalatu-zerbitzu-metricbeat.ps1
Windows zerbitzuen eta errendimendu-kontagailuen metrikak gaitzen
Onena, orain modulua gaitu beharko dugu, hori egingo dugu hurrengo komandoarekin:
.\metricbeat.exe modules enable windows
Hurrengoa izango da zein errendimendu-kontagailu ditugun jakitea, hau PowerShell komando honekin ikusi dezakegu:
Get-Counter -ListSet *
Eta gero Metricbeat-i zein nahi ditugun biltzea adierazi behar zaio, moduluaren konfigurazio-fitxategia editatzen dugu ‘C:\Program Files\metricbeat\modules.d\windows.yml’ eta hori adierazten diogu, ejemplo:
# Module: windows
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.x/metricbeat-module-windows.html
- module: windows
metricsets:
- service
period: 1m
- module: windows
metricsets: [perfmon]
period: 10s
perfmon.ignore_non_existent_counters: true
perfmon.group_measurements_by_instance: true
perfmon.queries:
- object: "PhysicalDisk"
eremua : "disk"
instance: "*"
kontagailuak:
- name: "Disk Writes/sec"
- name: "% Disk Write Time"
eremua: "write_time"
format: "float"
- object: "PhysicalDisk"
eremua : "disk"
instance: "*"
kontagailuak:
- name: "Disk Reads/sec"
- name: "% Disk Read Time"
eremua: "read_time"
format: "float"
- object: "MSSQL$VEEAMSQL2012:Datu-baseak"
eremua : "datu-basea"
instance: "*"
kontagailuak:
- name: "Data File(s) Size (KB)"
...
Fichier-a grabatzen dugu, Metricbeat zerbitzua berrabiarazi eta orain Elasticsearch-en zer datu ditugun egiaztatuko dugu. Betiko moduan, Kibanara goaz eta datuak sartzen hastean, 'Kudeaketa' ra joan gaitezke > 'Stack kudeaketa' > 'Kibana' > 'Indize Patroiak' > 'Create index pattern' indizearen eredu-a sortzeko, esandakoa, ohiko moduan (kasu honetan eta komatxorik gabe) 'metricbeat-*' eta datuak dagoeneko Elasticsearch-en modu zuzenean gordeta izango ditugu. Orain 'Analytics'-etik konekta gaitezke > 'Discover' gure Metricbeat indizeari eta datuak jasotzen ari dela ikusi.
Datuak Elasticsearch-en daudenean, beste postetan hainbat aldiz ikusi ditugun pausoak jarraitu besterik ez da geratzen, horrek izango litzateke, (i) crear conector o Data Source de Grafana a Elasticsearch y (ii) empezar a hacer el dashboard o los dashboards que necesites. Este es un mero ejemplo de los datos recopilados de un servidor SQL Server, donde vemos ciertos contadores bastante interesantes y comunes, así como tamaños y crecimientos de las bases de datos, conexiones, latencias…
Imaginaros las posibilidades de esto, cualquier servicio instalado en Windows-en dispone de sus propios contadores, que podremos recopilarlos con la periodicidad que nos interese, a nivel de 1s, 10s, 30s… y su visualización igual, con refresco en tiempo real o para realizar informes con su análisis tras la ingesta de bastantes datos y poder analizar crecimientos…
Nada, acabo con esto, una manera rápida de ver los contadores que tiene un SQL Server:
SELECT COUNT(*) FROM sys.dm_os_performance_counters;
eta prest, espero que os sirva para ver posibilidades en vuestros entornos, que podemos recopilar cualquier dato que necesitemos, para luego eso, trabajarlo, crear dashboards personalizados para distintos perfiles, informes semanales… Ale que me alargo, un abrazo a tod@s!











































