Recopilant mètriques de rendiment a Elasticsearch i visualitzant-les a Grafana
En aquest post vam intentar veure com visualitzar qualsevol mètrica de rendiment d'un equip Windows Server o dels seus serveis com sigui SQL Server, Exchange… amb la intenció de poder visualitzar-los en temps real a 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 vols é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: # Array of hosts to connect to. hosts: ["https://FQDN_ELASTIC:9200"] ssl.verification_mode: none username: "USUARI" password: "CONTRASENYA" index: "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:
.\uninstall-service-metricbeat.ps1
Habilitando métricas de los servicios y contadores de rendimiento del Windows
Bo, pues tendremos que habilitar este módulo, ho realitzarem amb la següent ordre:
.\metricbeat.exe modules enable windows
Lo siguiente será saber qué contadores de rendimiento renemos, esto lo podemos mirar con este comando de PowerShell:
Get-Counter -ListSet *
Y ya será cuestión de indicarle a Metricbeat cuales queremos recopilar, editamos el fichero de configuración del módulo ‘C:\Program Files\metricbeat\modules.d\windows.yml’ y se lo indicamos, exemple:
# 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" field : "disk" instance: "*" counters: - name: "Disk Writes/sec" - name: "% Temps d'escriptura de disc" field: "write_time" format: "float" - object: "PhysicalDisk" field : "disk" instance: "*" counters: - name: "Lectures de disc/sec" - name: "% Temps de lectura de disc" field: "read_time" format: "float" - object: "MSSQL$VEEAMSQL2012:Bases de dades" field : "base de dades" instance: "*" counters: - name: "Fitxer de dades(s) Size (KB)" ...
Gravem el fitxer, reiniciem el servei de Metricbeat i ara anem a verificar que tenim a Elasticsearch les dades. Com sempre, anirem a Kibana i un cop les dades estiguin entrant ja podrem anar a "Management" > "Stack management" > "Kibana" > "Index Patterns" > "Crea't index pattern" per crear el patró de l'índex, el que s' ha dit, com habitualment (en aquest cas i sense les cometes) ‘metricbeat-*’ i tindrem les dades ja a Elasticsearch emmagatzemades de manera correcta. Ara podríem connectar-nos des de “Analytics” > “Discover” al nostre índex de Metricbeat i visualitzar que està recollint dades.
Un cop les dades estiguin a Elasticsearch ja només queda seguir els passos que hem vist diverses vegades en altres post, que seria, (i) crear connector o Data Source de Grafana a Elasticsearch i (ii) començar a fer el dashboard o els dashboards que necessitis. Este és un mero exemple de los datos recopilados de un servidor SQL Server, donde vemos ciertos contadores força interessants i comunes, així com mides i creixements de les bases de dades, conexiones, latències…
Imaginaros las posibilidades de esto, cualquier servei instal·lat en Windows disposa de sus propios contadores, que podríem recopilarlos amb la periodicitat que ens interessen, a nivell de 1s, 10s, 30s… y la seva visualització igual, amb refresc en temps real o para realizar informes amb la seva anàlisi tras la ingesta de bastantes dades y poder analitzar creixements…
Res, acabo con esto, una manera rápida de ver los contadores que tiene un SQL Server:
SELECT COUNT(*) FROM sys.dm_os_performance_counters;
I llest, espero que os sirva para ver probabilitats en vuestros entornos, que podem recopilar qualsevol dato que necessitem, per després això, trabajarlo, crear dashboards personalizados para distintos perfiles, informes semanales… Ale que me alargo, un abrazo a tod@s!











































