Collecting performance metrics in Elasticsearch and visualizing them in Grafana

In this post we are going to try to see how to visualize any performance metric of a Windows Server computer or its services such as SQL Server, Exchange… with the intention of being able to visualize them in real time in Grafana.

The idea will be to collect them through one of the agents in the Elastic Stack, in this case we will use Metricbeat, and then it will take care of storing them in Elasticsearch; and with Grafana we will access the data and visualize it as we are interested. A while ago I wrote a post where we talked about how to implement Metricbeat and how to collect the system replicas, If you want Check it out, 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: "USER"
  password: "PASSWORD"
  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

Well, pues tendremos que habilitar este módulo, We will do it with the following command:

.\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.ymly se lo indicamos, example:

# 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: "% Disk Write Time"
      field: "write_time"
      format: "float"
  - object: "PhysicalDisk"
    field : "Disk"
    instance: "*"
    counters:
    - Name: "Disk Reads/sec"
    - Name: "% Disk Read Time"
      field: "read_time"
      format: "float"

  - object: "MSSQL$VEEAMSQL2012:Databases"
    field : "Database"
    instance: "*"
    counters:
    - Name: "Data File(s) Size (KB)"
...

We save the file, reiniciamos el servicio de Metricbeat y ya nos vamos a verificar que tenemos en Elasticsearch los datos. As usual, we will go to Kibana and once the data is coming in we can go to "Management" > "Stack management" > "Kibana" > "Index Patterns" > "Create index pattern" to create the index pattern, As I said, as usual (in this case and without the quotation marks) ‘metricbeat-*’ y tendremos los datos ya en Elasticsearch almacenados de manera correcta. Ahora podríamos conectarnos desde “Analytics” > “Discover” a nuestro índice de Metricbeat y visualizar que está recogiendo datos.

Una vez los datos estén en Elasticsearch ya queda seguir los pasos que hemos visto varias veces en otros post, que sería, (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, Connections, Latencies…

Imaginaros las posibilidades de esto, cualquier servicio instalado en Windows 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

Nothing, acabo con esto, una manera rápida de ver los contadores que tiene un SQL Server:

SELECT COUNT(*) FROM sys.dm_os_performance_counters;

And that's it, espero que os sirva para ver posibilidades en vuestros entornos, que podemos recopilar cualquier dato que necesitemos, Stop that later, trabajarlo, crear dashboards personalizados para distintos perfiles, informes semanalesAle que me alargo, un abrazo a tod@s!

Recommended Posts

Author

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Do not hesitate to contact me, I will try to help you whenever I can, Sharing is living ;) . Enjoy documents!!!