Skip to content

Latest commit

 

History

History
618 lines (455 loc) · 27.2 KB

explaining_telegraf.md

File metadata and controls

618 lines (455 loc) · 27.2 KB

Configuración de Telegraf para Monitorizar Ubuntu

Note

Este archivo de configuración de Telegraf está diseñado para recopilar métricas del sistema en un entorno Linux y enviarlas a una base de datos InfluxDB. A continuación, se detalla la configuración y el propósito de cada bloque.

Nos vamos a guiar mediante la configuración de Telegraf para Ubuntu.

Global Tags

[global_tags]
  customer = "DevOpsea"
  environment = "Dev"
  os = "Linux"

Descripción

Este bloque define etiquetas globales que se aplicarán a todas las métricas recopiladas por Telegraf. Las etiquetas son pares clave-valor que ayudan a identificar y clasificar las métricas.

Función en la Monitorización

Estas etiquetas permiten filtrar y segmentar los datos fácilmente en la base de datos de InfluxDB o en cualquier herramienta de visualización como Grafana. Por ejemplo, puedes ver todas las métricas relacionadas con el entorno de desarrollo (environment = "Dev") o un cliente específico (customer = "DevOpsea").

Configuración del Agente

[agent]
  interval = "15s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "15s"
  flush_jitter = "0s"
  precision = ""
  hostname = "Ubuntu"
  omit_hostname = false

Descripción

Este bloque configura el comportamiento del agente de Telegraf, como la frecuencia de recolección de métricas y el manejo de buffers.

  • interval = "15s": Telegraf recopilará métricas cada 15 segundos.
  • round_interval = true: Asegura que las recolecciones se realicen en intervalos redondeados, como al minuto exacto, mejorando la alineación de los datos.
  • metric_batch_size = 1000: Número máximo de métricas que se pueden enviar en una sola petición.
  • metric_buffer_limit = 10000: Máximo de métricas que se pueden almacenar en el buffer antes de ser descartadas si no se pueden enviar a tiempo.
  • collection_jitter = "0s": No se añade variación al intervalo de recolección.
  • flush_interval = "15s": Frecuencia con la que Telegraf enviará los datos a la base de datos configurada.
  • flush_jitter = "0s": No se añade variación al intervalo de envío.
  • precision = "": Deja la precisión de las métricas a la predeterminada.
  • hostname = "Ubuntu": Define el nombre de host que se incluirá en las métricas.
  • omit_hostname = false: Incluye el nombre de host en las métricas.

Función en la Monitorización

Este bloque define cómo y cuándo se recopilan y envían las métricas. Configuraciones como interval, flush_interval, y metric_batch_size impactan directamente en la eficiencia y el rendimiento de la monitorización.

Plugins de Salida

InfluxDB

[[outputs.influxdb]]
  urls = ["http://192.168.0.2:8086"]
  timeout = "5s"
  database = "influx"
  username = "admin"
  password = "admin"

Descripción

Este bloque define cómo y dónde Telegraf enviará las métricas. En este caso, está configurado para enviar datos a una instancia de InfluxDB.

  • urls: URL del servidor InfluxDB.
  • timeout: Tiempo de espera para la conexión.
  • database: Nombre de la base de datos en InfluxDB.
  • username y password: Credenciales de acceso.

Función en la Monitorización

Este bloque es crucial para que las métricas recopiladas por Telegraf se envíen a InfluxDB, donde se almacenarán para su análisis y visualización. La URL especifica la dirección del servidor de InfluxDB, y el nombre de la base de datos (database = "influx") indica dónde se almacenarán los datos.

Plugins de Entrada

CPU

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

Descripción

Recoge métricas de uso de la CPU.

  • percpu = true: Recoge datos de uso de CPU por núcleo.
  • totalcpu = true: Recoge datos del uso total de CPU.
  • collect_cpu_time = false: No recoge el tiempo total de CPU.
  • report_active = false: No informa sobre CPUs inactivas.

Función en la Monitorización

Permite analizar el uso de la CPU de manera detallada, identificando cuellos de botella en el rendimiento y ayudando a optimizar el uso de los recursos del sistema.

Disco

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

Descripción

Recoge métricas del uso del disco, ignorando ciertos sistemas de archivos temporales y de solo lectura que no son relevantes para la mayoría de las monitorizaciones.

Función en la Monitorización

Monitorizar el uso del disco es esencial para detectar problemas de almacenamiento, como la falta de espacio o el uso excesivo del disco, que pueden afectar el rendimiento del sistema.

Entrada/Salida de Disco (Disk I/O)

[[inputs.diskio]]

Descripción

Recoge métricas de entrada/salida del disco, como la cantidad de datos leídos y escritos.

Función en la Monitorización

Ayuda a identificar posibles cuellos de botella en el rendimiento del disco, como altas tasas de lectura/escritura que podrían ralentizar el sistema.

Kernel

[[inputs.kernel]]

Descripción

Recoge métricas del kernel de Linux, como la carga promedio y los tiempos de interrupción.

Función en la Monitorización

Proporciona información sobre el rendimiento del núcleo del sistema operativo, lo que es útil para identificar problemas a nivel del sistema operativo.

Memoria

[[inputs.mem]]

Descripción

Recoge métricas de uso de memoria.

Función en la Monitorización

Monitorizar la memoria es esencial para evitar problemas como la falta de memoria disponible, que puede llevar a fallos en las aplicaciones.

Procesos

[[inputs.processes]]

Descripción

Recoge métricas sobre los procesos del sistema, como el número de procesos en ejecución, en espera, etc.

Función en la Monitorización

Ayuda a identificar problemas de sobrecarga de procesos, lo que puede afectar el rendimiento general del sistema.

Swap

[[inputs.swap]]

Descripción

Recoge métricas sobre el uso de la memoria de intercambio (swap).

Función en la Monitorización

Monitorizar el swap es importante para evitar que el sistema se vuelva lento cuando la memoria física se agota y el sistema empieza a usar swap en disco, que es más lento.

Sistema

[[inputs.system]]

Descripción

Recoge métricas generales del sistema, como el tiempo de actividad, carga promedio, etc.

Función en la Monitorización

Proporciona una visión general del estado del sistema, ayudando a detectar posibles problemas de rendimiento.

Este archivo de configuración establece una base sólida para monitorizar un sistema Linux utilizando Telegraf y enviando los datos a InfluxDB para su análisis y visualización.

Ejemplo de Configuración Personalizada

A continuación, se muestra un ejemplo de cómo se puede personalizar la configuración de Telegraf para adaptarse a necesidades específicas. Supongamos que queremos agregar un plugin de entrada para monitorear la temperatura de la CPU y un plugin de salida para enviar datos a una segunda instancia de InfluxDB.

Plugin de Entrada para Temperatura de la CPU

[[inputs.sensors]]
  remove_zero = true

Descripción

Este plugin recoge métricas de los sensores de temperatura del sistema.

  • remove_zero = true: Elimina las lecturas de temperatura que son cero, ya que generalmente indican sensores no utilizados.

Función en la Monitorización

Monitorizar la temperatura de la CPU es crucial para evitar el sobrecalentamiento, que puede llevar a una disminución del rendimiento o incluso a daños en el hardware.

Plugin de Salida para Segunda Instancia de InfluxDB

[[outputs.influxdb]]
  urls = ["http://192.168.0.8:8086"]
  database = "backup_influx"
  username = "backup_admin"
  password = "backup_password"

Descripción

Este bloque define una segunda instancia de InfluxDB donde se enviarán las métricas.

  • urls: URL del segundo servidor InfluxDB.
  • database: Nombre de la base de datos en la segunda instancia de InfluxDB.
  • username y password: Credenciales de acceso para la segunda instancia.

Función en la Monitorización

Enviar datos a una segunda instancia de InfluxDB proporciona redundancia y asegura que las métricas estén disponibles incluso si la primera instancia falla.


Monitorizar Debian desde Windows Subsystem for Linux (WSL)

Important

Podemos encontrar esta configuracion en este fichero .conf sobre Telegraf WSL - Debian.

La configuración de Telegraf para WSL con Debian es muy similar a la que se usaba para Ubuntu, pero hay algunas diferencias clave que es importante resaltar:

hostname

El nombre de host ha sido cambiado de "Ubuntu" a "WSL-debian" para reflejar que se está monitorizando un entorno de WSL (Windows Subsystem for Linux) con Debian. Esto es útil para identificar correctamente el sistema en las métricas.

hostname = "WSL-debian"

ignore_fs en el Plugin disk

ignore_fs = [
  "tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs", "none", "rootfs", "drivers", "/dev/loop0"
]

En la configuración para WSL con Debian, se han añadido más sistemas de archivos a la lista de ignorados:

none y rootfs: Estos son sistemas de archivos que son típicos en un entorno WSL y no suelen ser relevantes para la monitorización. drivers: Específico de WSL, utilizado para gestionar los drivers. /dev/loop0: Utilizado en sistemas Linux, pero en el contexto de WSL podría no ser relevante para la monitorización.

Entorno (environment)

Aunque no hay un cambio directo, es importante destacar que en ambos casos, el entorno (environment) está configurado como "Dev", pero podrías cambiarlo a algo como "WSL" para reflejar mejor el contexto en el que se está ejecutando.

Plugins de Entrada (inputs)

Los mismos plugins de entrada están configurados para recolectar métricas de CPU, disco, E/S de disco, kernel, memoria, procesos, swap, y sistema en ambas configuraciones. No hay diferencias en la configuración de estos plugins entre Ubuntu y WSL con Debian.

Consideraciones Adicionales

WSL: Debido a que WSL es una capa de compatibilidad para ejecutar binarios de Linux en Windows, es posible que algunos aspectos de la monitorización se comporten de manera diferente en comparación con una distribución de Linux que se ejecuta de manera nativa, especialmente en lo que respecta a la interacción con el kernel y el sistema de archivos.

Note

Las principales diferencias entre las configuraciones de Telegraf para Ubuntu y WSL con Debian son el nombre de host y la lista de sistemas de archivos que se ignoran en el plugin disk. Estas diferencias aseguran que la monitorización esté adaptada al entorno específico de WSL y que las métricas recolectadas sean precisas y relevantes.


Monitorizar contenedores Docker

Important

Podemos encontrar esta configuracion en este fichero .conf sobre Contenedores Docker. También tienes este segundo ejemplo, que se representa con otro fichero de configuración.

La configuración de Telegraf en un contenedor Docker presenta algunas diferencias importantes en comparación con las configuraciones para Ubuntu y WSL con Debian. A continuación se detallan las diferencias y se explica el propósito de cada ajuste en el contexto de un entorno Docker:

hostname

El nombre de host se establece como "docker-telegraf" para reflejar que esta instancia de Telegraf está ejecutándose dentro de un contenedor Docker.

hostname = "docker-telegraf"

Note

Esto es útil para identificar correctamente el origen de las métricas en un entorno de monitorización que puede incluir múltiples contenedores.

interval y flush_interval en el Plugin agent

interval = "60s"
flush_interval = "10s"
  • interval = "60s": En la configuración para Docker, el intervalo de recolección de métricas se establece en 60 segundos, en lugar de 15 segundos. Esto puede deberse a que los contenedores suelen tener un ciclo de vida más corto o a que se prefiera un intervalo más largo para reducir la sobrecarga en entornos con muchos contenedores.

  • flush_interval = "10s": El intervalo de envío de datos a InfluxDB se reduce a 10 segundos, lo que asegura que las métricas se envíen rápidamente, a pesar del intervalo de recolección más largo.

urls en el Plugin outputs.influxdb

urls = ["http://influxdb:8086"]

La URL para la base de datos InfluxDB en la configuración de Docker utiliza un nombre de servicio (influxdb) en lugar de una dirección IP. Esto se debe a que, dentro de un entorno Docker, los servicios suelen ser referenciados por sus nombres de servicio en lugar de por direcciones IP, facilitando la comunicación entre contenedores.

ignore_fs en el Plugin disk

ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

No hay diferencias en la configuración de ignore_fs para el plugin disk entre Ubuntu, WSL con Debian y Docker. Sin embargo, es importante señalar que en un entorno Docker, los sistemas de archivos como overlay y aufs son especialmente relevantes, ya que son comúnmente utilizados por Docker para manejar capas de contenedores.

Otros Plugins de Entrada (inputs)

Ubuntu, WSL con Debian, y Docker: Los mismos plugins de entrada (cpu, diskio, kernel, mem, processes, swap, system) están configurados en todas las versiones. Esto asegura que las métricas esenciales del sistema sean recolectadas de manera consistente, sin importar el entorno.

Note

Aunque la configuración es la misma, el contexto en el que se ejecutan puede cambiar la interpretación de las métricas. Por ejemplo, en un entorno Docker, las métricas de CPU y memoria podrían estar limitadas al contenedor y no reflejar todo el sistema host, a menos que se configuren adecuadamente.

Consideraciones Adicionales

Important

En Docker, es común que Telegraf se ejecute en contenedores dedicados, y la configuración puede necesitar ajustes adicionales, como el mapeo de volúmenes o la configuración de permisos, para acceder a métricas del host.

Note

Las principales diferencias entre la configuración de Telegraf para Ubuntu, WSL con Debian, y Docker están en el nombre de host, los intervalos de recolección y envío de métricas, y la forma en que se direcciona la base de datos InfluxDB. Estas diferencias aseguran que la monitorización esté adaptada a las particularidades de un entorno Docker, optimizando la eficiencia y precisión de la recolección de métricas.


Monitorizar Windows (10 & 11)

Important

Podemos encontrar esta configuracion en este fichero .conf sobre Windows.

La configuración de Telegraf para un entorno Windows tiene varias diferencias importantes en comparación con las configuraciones para Ubuntu, WSL, Docker, y otros sistemas Linux. Aquí te detallo cada sección y su propósito en la monitorización:

hostname y os

os = "Windows"
hostname = "devopsea-dev"

Se establece el nombre del sistema operativo como "Windows" y el nombre de host específico para reflejar que la monitorización se realiza en un entorno Windows.

agent Configuration

Important

En Windows, la ubicación del archivo de registro se ajusta para coincidir con la estructura de directorios típica de Windows, utilizando la carpeta Program Files.

logfile = "/Program Files/InfluxData/telegraf/telegraf.log"

Debugging y Logging

debug = false
quiet = false

Estas configuraciones están explícitamente definidas en Windows para controlar la verbosidad de los logs, permitiendo un control más granular en entornos donde el rendimiento y la estabilidad son críticos.

flush_interval e interval

Todos los entornos:

interval = "15s"
flush_interval = "15s"

La frecuencia de recolección y envío de métricas se mantiene igual a 15 segundos en todos los entornos, incluido Windows. Esto asegura una consistencia en la temporalidad de las métricas recolectadas.

outputs.influxdb

URL de conexión:

urls = ["http://192.168.0.2:8086"]

No hay cambios en la configuración del plugin de salida para InfluxDB entre los diferentes sistemas operativos. La URL, la base de datos y las credenciales permanecen constantes.

inputs.win_perf_counters (Específico de Windows)

Note

En Windows, la monitorización se realiza a través de contadores de rendimiento (Performance Counters), que son características nativas del sistema operativo para medir el rendimiento del hardware y software.

Important

En Windows, los contadores de rendimiento (Performance Counters) son mecanismos que proporcionan información sobre el rendimiento de varios aspectos del sistema operativo y las aplicaciones que se ejecutan en él. Estos contadores están organizados en objetos de rendimiento, cada uno de los cuales representa una categoría específica de métricas, como CPU, memoria, disco, red, etc.

CPU (Processor):

ObjectName = "Processor"
Counters = ["% Idle Time", "% Processor Time", "etc."]
Measurement = "win_cpu"

Recolecta métricas detalladas sobre el uso del procesador, lo que permite monitorear la carga de trabajo y el rendimiento del CPU.

Note

ObjectName: "Processor"

Counters:

  • "% Idle Time": Tiempo en porcentaje que el procesador está inactivo.

  • "% Interrupt Time": Tiempo en porcentaje que el procesador está ocupado manejando interrupciones.

  • "% Privileged Time": Tiempo en porcentaje que el procesador pasa ejecutando código en modo privilegiado (kernel).

  • "% User Time": Tiempo en porcentaje que el procesador pasa ejecutando código en modo usuario (aplicaciones).

  • "% Processor Time": Tiempo total en porcentaje que el procesador está ocupado (suma de modo usuario y modo kernel).

  • "% DPC Time": Tiempo en porcentaje que el procesador pasa manejando llamadas a procedimientos diferidos (DPCs), que son una parte del manejo de interrupciones.

Estos contadores ayudan a monitorear la utilización y eficiencia del procesador. Identificar altos porcentajes en "Privileged Time" o "Interrupt Time" puede indicar un problema en el manejo de interrupciones o en la eficiencia del sistema.

Discos Lógicos (LogicalDisk):

ObjectName = "LogicalDisk"
Counters = ["% Free Space", "Free Megabytes", "etc."]
Measurement = "win_disk"

Proporciona información sobre el uso del espacio en disco y el rendimiento del disco lógico, ayudando a identificar cuellos de botella o problemas de capacidad.

Note

ObjectName: "LogicalDisk"

Counters:

  • "% Idle Time": Tiempo en porcentaje que el procesador está inactivo.

  • "% Disk Time": Tiempo total en porcentaje que el disco está ocupado.

  • "% Disk Read Time": Tiempo en porcentaje dedicado a operaciones de lectura.

  • "% Disk Write Time": Tiempo en porcentaje dedicado a operaciones de escritura.

  • "Current Disk Queue Length": Longitud de la cola de espera del disco, indicando la cantidad de operaciones pendientes.

  • "% Free Space": Porcentaje de espacio libre en el disco.

  • "Free Megabytes": Espacio libre en megabytes.

Estos contadores permiten monitorear la actividad y el rendimiento del disco lógico, identificando posibles cuellos de botella en el acceso a datos o problemas de capacidad.

Discos Físicos (PhysicalDisk):

ObjectName = "PhysicalDisk"
Counters = ["Disk Read Bytes/sec", "Disk Write Bytes/sec", "etc."]
Measurement = "win_diskio"

Monitorea las operaciones de entrada/salida de los discos físicos, lo que es crucial para evaluar el rendimiento del almacenamiento.

Note

ObjectName: "PhysicalDisk"

Counters:

  • "Disk Read Bytes/sec": Bytes leídos por segundo.

  • "Disk Write Bytes/sec": Bytes escritos por segundo.

  • "Current Disk Queue Length": Longitud actual de la cola de espera para operaciones de disco.

  • "Disk Reads/sec": Cantidad de lecturas de disco por segundo.

  • "Disk Writes/sec": Cantidad de escrituras de disco por segundo.

  • "% Disk Time": Tiempo total en porcentaje que el disco está ocupado.

  • "% Disk Read Time": Tiempo en porcentaje dedicado a operaciones de lectura.

  • "% Disk Write Time": Tiempo en porcentaje dedicado a operaciones de escritura.

Estos contadores proporcionan una visión detallada del rendimiento del hardware de almacenamiento, útil para identificar problemas de rendimiento en la E/S (entrada/salida).

Red (Network Interface):

ObjectName = "Network Interface"
Counters = ["Bytes Received/sec", "Packets Received/sec", "etc."]
Measurement = "win_net"

Mide el tráfico de red, ayudando a monitorear la velocidad de transferencia de datos y detectar posibles problemas de conectividad.

Note

ObjectName: "Network Interface"

Counters:

  • "Bytes Received/sec": Bytes recibidos por segundo.

  • "Bytes Sent/sec": Bytes enviados por segundo.

  • "Packets Received/sec": Paquetes recibidos por segundo.

  • "Packets Sent/sec": Paquetes enviados por segundo.

  • "Packets Received Discarded": Paquetes recibidos que fueron descartados.

  • "Packets Outbound Discarded": Paquetes salientes que fueron descartados.

  • "Packets Received Errors": Errores en los paquetes recibidos.

  • "Packets Outbound Errors": Errores en los paquetes salientes.

Estos contadores permiten analizar la eficiencia de la red, identificando problemas de rendimiento, como pérdida de paquetes, que pueden afectar la conectividad y el rendimiento de aplicaciones basadas en red.

Sistema (System):

ObjectName = "System"
Counters = ["Context Switches/sec", "Processor Queue Length", "etc."]
Measurement = "win_system"

Recoge métricas generales del sistema, como el número de cambios de contexto por segundo, que son indicadores del rendimiento general del sistema.

Note

ObjectName: "System"

Counters:

  • "Context Switches/sec": Número de cambios de contexto por segundo, indicador de la eficiencia del procesador en la gestión de procesos.

  • "System Calls/sec": Número de llamadas al sistema por segundo, un indicador del volumen de trabajo que maneja el sistema operativo.

  • "Processor Queue Length": Longitud de la cola de procesadores, que indica cuántos hilos están esperando ser procesados.

  • "System Up Time": Tiempo que el sistema ha estado en funcionamiento sin reinicios.

Estos contadores proporcionan una visión del rendimiento general del sistema, ayudando a identificar problemas en la gestión de recursos y el estado operativo del sistema.

Memoria (Memory):

ObjectName = "Memory"
Counters = ["Available Bytes", "Pages/sec", "etc."]
Measurement = "win_mem"

Proporciona información sobre la disponibilidad y el uso de la memoria, lo que es fundamental para identificar problemas de memoria insuficiente o fugas de memoria.

Note

ObjectName: "Memory"

Counters:

  • "Available Bytes": Cantidad de memoria física disponible.

  • "Cache Faults/sec": Fallos de caché por segundo, indicando la frecuencia con la que se requieren operaciones adicionales para acceder a los datos.

  • "Demand Zero Faults/sec": Fallos de demanda de ceros por segundo, un tipo de fallo de página.

  • "Page Faults/sec": Fallos de página por segundo, indicando cuándo el sistema tiene que cargar datos de la memoria secundaria (disco) a la memoria primaria (RAM).

  • "Pages/sec": Número de páginas leídas o escritas en la memoria virtual por segundo.

  • "Transition Faults/sec": Fallos de transición por segundo, ocurren cuando una página cambia de memoria caché a memoria activa.

  • "Pool Nonpaged Bytes": Bytes en el pool de memoria no paginada, un tipo de memoria que no se puede intercambiar en el disco.

  • "Pool Paged Bytes": Bytes en el pool de memoria paginada, un tipo de memoria que puede ser intercambiada en el disco.

  • "Standby Cache Reserve Bytes": Bytes reservados en la caché de standby, que es memoria disponible para procesos futuros.

  • "Standby Cache Normal Priority Bytes": Bytes en la caché de standby de prioridad normal.

  • "Standby Cache Core Bytes": Bytes en la caché de standby que son esenciales para el funcionamiento del sistema.

Monitorear estos contadores es esencial para detectar problemas relacionados con la memoria, como insuficiencia de memoria física, fugas de memoria, y eficiencia de la memoria caché.

Archivo de Paginación (Paging File):

ObjectName = "Paging File"
Counters = ["% Usage"]
Measurement = "win_swap"

Monitorea el uso del archivo de paginación, que es crucial en la gestión de la memoria virtual en Windows.

Note

ObjectName: "Paging File"

Counters:

  • "% Usage": Porcentaje de uso del archivo de paginación.

Permite monitorear el uso del archivo de paginación, lo que es crucial para entender cómo se maneja la memoria virtual y si el sistema está utilizando demasiada memoria paginada, lo cual puede impactar negativamente el rendimiento.

Important

Los contadores de rendimiento en Windows son herramientas potentes que permiten monitorear casi todos los aspectos del rendimiento del sistema operativo y sus componentes. Al configurar Telegraf para capturar estos contadores, puedes obtener una visión detallada y precisa del estado y rendimiento de un sistema Windows, lo que es vital para una monitorización efectiva y proactiva.

Consideraciones Adicionales

  • Entorno Windows: Al monitorear un sistema Windows, es fundamental usar los contadores de rendimiento específicos del sistema operativo para obtener métricas precisas y relevantes. A diferencia de Linux, donde se utilizan plugins más genéricos como cpu, disk, y mem, en Windows es necesario especificar cada objeto y contador que se desea monitorear.

  • Compatibilidad: Asegúrate de que el agente Telegraf tenga los permisos necesarios para acceder a los contadores de rendimiento y de que el servicio de rendimiento esté habilitado en el sistema operativo Windows.

Note

La configuración de Telegraf en Windows difiere significativamente de la de Linux y otros entornos debido a la naturaleza del sistema operativo y las herramientas disponibles para la monitorización. Utiliza contadores de rendimiento nativos de Windows para recolectar métricas detalladas del sistema, lo que permite un monitoreo más preciso del rendimiento en entornos Windows.