Exportador de Prometheus para métricas de hardware y sistema operativo expuestas por núcleos *NIX, escrito en Go con recopiladores de métricas conectables.
Se recomienda el exportador de Windows para usuarios de Windows. Para exponer las métricas de la GPU NVIDIA, se puede utilizar prometheus-dcgm.
Si es nuevo en Prometheus y node_exporter
hay una guía sencilla paso a paso.
node_exporter
escucha en el puerto HTTP 9100 de forma predeterminada. Consulte el resultado --help
para obtener más opciones.
Para instalaciones automatizadas con Ansible, existe la función de la comunidad Prometheus.
El node_exporter
está diseñado para monitorear el sistema host. La implementación en contenedores requiere especial cuidado para evitar monitorear el contenedor en sí.
Para situaciones en las que se necesita una implementación en contenedores, se deben usar algunos indicadores adicionales para permitir que node_exporter
acceda a los espacios de nombres del host.
Tenga en cuenta que cualquier punto de montaje no raíz que desee monitorear deberá montarse mediante enlace en el contenedor.
Si inicia el contenedor para monitorear el host, especifique el argumento path.rootfs
. Este argumento debe coincidir con la ruta en el montaje vinculado de la raíz del host. El node_exporter utilizará path.rootfs
como prefijo para acceder al sistema de archivos del host.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Para Docker Compose, se necesitan cambios de bandera similares.
---
version : ' 3.8 '
services :
node_exporter :
image : quay.io/prometheus/node-exporter:latest
container_name : node_exporter
command :
- ' --path.rootfs=/host '
network_mode : host
pid : host
restart : unless-stopped
volumes :
- ' /:/host:ro,rslave '
En algunos sistemas, el recopilador timex
requiere un indicador Docker adicional, --cap-add=SYS_TIME
, para poder acceder a las llamadas al sistema requeridas.
Existe una compatibilidad variable para los recopiladores en cada sistema operativo. Las tablas siguientes enumeran todos los recopiladores existentes y los sistemas compatibles.
Los recopiladores se habilitan proporcionando un indicador --collector.
. Los recopiladores que están habilitados de forma predeterminada se pueden deshabilitar proporcionando un --no-collector.
. Para habilitar solo algunos recopiladores específicos, use --collector.disable-defaults --collector.
.
Se pueden configurar algunos recopiladores para incluir o excluir ciertos patrones mediante indicadores dedicados. Los indicadores de exclusión se utilizan para indicar "todos excepto", mientras que los indicadores de inclusión se utilizan para decir "ninguno excepto". Tenga en cuenta que estas marcas son mutuamente excluyentes en los recopiladores que admiten ambas.
Ejemplo:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Lista:
Coleccionista | Alcance | Incluir bandera | Excluir bandera |
---|---|---|---|
arpía | dispositivo | --collector.arp.device-include | --collector.arp.device-exclude |
UPC | insectos | --collector.cpu.info.bugs-incluir | N / A |
UPC | banderas | --collector.cpu.info.flags-incluir | N / A |
estadísticas de disco | dispositivo | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
ettool | dispositivo | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
herramienta etónica | métrica | --collector.ethtool.metrics-incluir | N / A |
sistema de archivos | tipos-fs | N / A | --collector.filesystem.fs-tipos-excluir |
sistema de archivos | puntos de montaje | N / A | --collector.filesystem.mount-points-exclude |
hwmon | chip | --collector.hwmon.chip-incluye | --collector.hwmon.chip-excluir |
hwmon | sensor | --collector.hwmon.sensor-incluye | --collector.hwmon.sensor-excluir |
interrumpe | nombre | --collector.interrupts.nombre-incluir | --collector.interrupts.nombre-excluir |
netdev | dispositivo | --collector.netdev.device-include | --collector.netdev.device-exclude |
disco q | dispositivo | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
información de losa | nombres de losas | --collector.slabinfo.slabs-incluir | --collector.slabinfo.slabs-excluir |
sistema | todo | --collector.sysctl.incluye | N / A |
sistemad | unidad | --collector.systemd.unit-incluye | --collector.systemd.unit-exclude |
Nombre | Descripción | SO |
---|---|---|
arpía | Expone estadísticas ARP de /proc/net/arp . | linux |
bcache | Expone estadísticas de bcache de /sys/fs/bcache/ . | linux |
vinculación | Expone la cantidad de esclavos configurados y activos de las interfaces de enlace de Linux. | linux |
btrfs | Expone estadísticas de btrfs | linux |
tiempo de arranque | Expone el tiempo de arranque del sistema derivado del sysctl kern.boottime . | Darwin, Libélula, FreeBSD, NetBSD, OpenBSD, Solaris |
conectar | Muestra estadísticas de conntrack (no hace nada si no hay /proc/sys/net/netfilter/ presente). | linux |
UPC | Expone estadísticas de CPU | Darwin, Libélula, FreeBSD, Linux, Solaris, OpenBSD |
cpufreq | Expone estadísticas de frecuencia de CPU | Linux, Solaris |
estadísticas de disco | Expone estadísticas de E/S de disco. | Darwin, Linux, OpenBSD |
dmi | Exponer información de la interfaz de administración de escritorio (DMI) desde /sys/class/dmi/id/ | linux |
edac | Expone estadísticas de detección y corrección de errores. | linux |
entropía | Expone la entropía disponible. | linux |
ejecutivo | Expone estadísticas de ejecución. | Libélula, FreeBSD |
canal de fibra | Expone información y estadísticas del canal de fibra de /sys/class/fc_host/ . | linux |
archivofd | Expone estadísticas de descriptores de archivos de /proc/sys/fs/file-nr . | linux |
sistema de archivos | Expone estadísticas del sistema de archivos, como el espacio en disco utilizado. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
hwmon | Exponer monitoreo de hardware y datos de sensores de /sys/class/hwmon/ . | linux |
infinibanda | Expone estadísticas de red específicas de las configuraciones de InfiniBand e Intel OmniPath. | linux |
ipvs | Expone el estado de IPVS de /proc/net/ip_vs y las estadísticas de /proc/net/ip_vs_stats . | linux |
carga media | Expone carga promedio. | Darwin, Libélula, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
mdadm | Expone estadísticas sobre dispositivos en /proc/mdstat (no hace nada si no hay /proc/mdstat presente). | linux |
meminfo | Expone estadísticas de memoria. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
clase de red | Expone información de la interfaz de red de /sys/class/net/ | linux |
netdev | Expone estadísticas de la interfaz de red, como bytes transferidos. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
netisr | Expone estadísticas de netisr | FreeBSD |
netstat | Expone estadísticas de red de /proc/net/netstat . Esta es la misma información que netstat -s . | linux |
nfs | Expone estadísticas del cliente NFS de /proc/net/rpc/nfs . Esta es la misma información que nfsstat -c . | linux |
nfsd | Expone las estadísticas del servidor del kernel NFS de /proc/net/rpc/nfsd . Esta es la misma información que nfsstat -s . | linux |
nvme | Expone información NVMe de /sys/class/nvme/ | linux |
sistema operativo | Exponer información de la versión del sistema operativo desde /etc/os-release o /usr/lib/os-release | cualquier |
clase de fuente de alimentación | Expone estadísticas de suministro de energía de /sys/class/power_supply | linux |
presión | Expone estadísticas de pérdida de presión de /proc/pressure/ . | Linux (kernel 4.20+ y/o CONFIG_PSI) |
rapel | Expone varias estadísticas de /sys/class/powercap . | linux |
schedstat | Expone estadísticas del programador de tareas de /proc/schedstat . | linux |
selinux | Expone estadísticas de SELinux. | linux |
calcetines | Expone varias estadísticas de /proc/net/sockstat . | linux |
red suave | Expone estadísticas de /proc/net/softnet_stat . | linux |
estadística | Expone varias estadísticas de /proc/stat . Esto incluye tiempo de arranque, bifurcaciones e interrupciones. | linux |
tapestats | Expone estadísticas de /sys/class/scsi_tape . | linux |
archivo de texto | Expone estadísticas leídas del disco local. Se debe configurar el indicador --collector.textfile.directory . | cualquier |
térmico | Expone estadísticas térmicas como pmset -g therm . | Darwin |
zona_termal | Expone estadísticas de zonas térmicas y dispositivos de enfriamiento de /sys/class/thermal . | linux |
tiempo | Expone la hora actual del sistema. | cualquier |
tiempox | Expone las estadísticas de llamadas al sistema adjtimex(2) seleccionadas. | linux |
colas_udp | Expone las longitudes totales UDP de rx_queue y tx_queue de /proc/net/udp y /proc/net/udp6 . | linux |
nombre | Expone información del sistema proporcionada por la llamada al sistema uname. | Darwin, FreeBSD, Linux, OpenBSD |
vmstat | Expone estadísticas de /proc/vmstat . | linux |
perro guardián | Expone estadísticas de /sys/class/watchdog | linux |
xfs | Expone estadísticas de tiempo de ejecución de XFS. | Linux (núcleo 4.4+) |
zf | Expone estadísticas de rendimiento de ZFS. | FreeBSD, Linux, Solaris |
node_exporter
también implementa una serie de recopiladores que están deshabilitados de forma predeterminada. Las razones de esto varían según el coleccionista y pueden incluir:
scrape_interval
o scrape_timeout
de Prometheus Puede habilitar recopiladores adicionales según lo desee agregándolos a la configuración de inicio de su sistema de inicio o del supervisor de servicio para node_exporter
, pero se recomienda precaución. Habilite como máximo uno a la vez, probando primero en un sistema que no sea de producción y luego manualmente en un único nodo de producción. Al habilitar recopiladores adicionales, debe monitorear cuidadosamente el cambio observando la métrica scrape_duration_seconds
para garantizar que la recopilación se complete y no expire. Además, supervise la métrica scrape_samples_post_metric_relabeling
para ver los cambios en la cardinalidad.
Nombre | Descripción | SO |
---|---|---|
amigoinfo | Expone estadísticas de fragmentos de memoria según lo informado por /proc/buddyinfo. | linux |
grupos c | Un resumen del número de cgroups activos y habilitados | linux |
cpu_vulnerabilidades | Expone información de vulnerabilidad de la CPU de sysfs. | linux |
devstat | Expone estadísticas del dispositivo | Libélula, FreeBSD |
drm | Exponga métricas de GPU usando sysfs/DRM, amdgpu es el único controlador que expone esta información a través de DRM | linux |
drbd | Expone estadísticas de dispositivos de bloques replicados distribuidos (hasta la versión 8.4) | linux |
herramienta etónica | Expone información de la interfaz de red y estadísticas del controlador de red equivalentes a ethtool , ethtool -S y ethtool -i . | linux |
interrumpe | Expone estadísticas detalladas de interrupciones. | Linux, OpenBSD |
ksmd | Expone estadísticas del kernel y del sistema desde /sys/kernel/mm/ksm . | linux |
instantáneo | Expone estadísticas de /proc/net/stat/ . | linux |
iniciar sesión | Expone los recuentos de sesiones desde logind. | linux |
meminfo_numa | Expone estadísticas de memoria de /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | linux |
estadísticas de montaje | Expone estadísticas del sistema de archivos de /proc/self/mountstats . Expone estadísticas detalladas del cliente NFS. | linux |
ruta_red | Expone la tabla de enrutamiento como métricas. | linux |
rendimiento | Expone métricas basadas en rendimiento (Advertencia: las métricas dependen de la configuración y los ajustes del kernel). | linux |
procesos | Expone estadísticas de procesos agregados de /proc . | linux |
qdisco | Expone estadísticas de disciplina de colas | linux |
información de losa | Expone estadísticas de losa de /proc/slabinfo . Tenga en cuenta que el permiso de /proc/slabinfo suele ser 0400, así que configúrelo adecuadamente. | linux |
softirqs | Expone estadísticas detalladas de softirq de /proc/softirqs . | linux |
sistema | Exponga los valores de sysctl de /proc/sys . Utilice --collector.sysctl.include(-info) para configurar. | linux |
sistemad | Expone el estado del servicio y del sistema desde systemd. | linux |
tcpstat | Expone información del estado de la conexión TCP de /proc/net/tcp y /proc/net/tcp6 . (Advertencia: la versión actual tiene posibles problemas de rendimiento en situaciones de carga alta). | linux |
wifi | Expone estadísticas de estaciones y dispositivos WiFi. | linux |
xfrm | Expone estadísticas de /proc/net/xfrm_stat | linux |
información de zona | Expone métricas de la zona de memoria NUMA. | linux |
Estos recopiladores están obsoletos y se eliminarán en la próxima versión principal.
Nombre | Descripción | SO |
---|---|---|
ntp | Expone el estado del demonio NTP local para verificar la hora | cualquier |
correr | Expone el estado del servicio desde runit. | cualquier |
supervisor | Expone el estado del servicio desde el supervisor. | cualquier |
Es posible que el recopilador perf
no funcione de fábrica en algunos sistemas Linux debido a la configuración del kernel y los ajustes de seguridad. Para permitir el acceso, configure el siguiente parámetro sysctl
:
sysctl -w kernel.perf_event_paranoid=X
Dependiendo del valor configurado, estarán disponibles diferentes métricas; en la mayoría de los casos, 0
proporcionará el conjunto más completo. Para obtener más información, consulte man 2 perf_event_open
.
De forma predeterminada, el recopilador perf
solo recopilará métricas de las CPU en las que se ejecuta node_exporter
(es decir, runtime.NumCPU
. Si esto es insuficiente (por ejemplo, si ejecuta node_exporter
con su afinidad de CPU configurada para CPU específicas), puede especificar una lista de CPU alternativas utilizando el indicador --collector.perf.cpus
. Por ejemplo, para recopilar métricas en las CPU 2-6, debe especificar: --collector.perf --collector.perf.cpus=2-6
. está indexado a cero y también puede tomar un valor de zancada; por ejemplo, --collector.perf --collector.perf.cpus=1-10:5
se recopilaría en las CPU 1, 5 y 10.
El recopilador perf
también puede recopilar recuentos de puntos de seguimiento cuando utiliza el indicador --collector.perf.tracepoint
. Los puntos de seguimiento se pueden encontrar utilizando perf list
o desde debugfs. Y un ejemplo de uso de esto sería --collector.perf.tracepoint="sched:sched_process_exec"
.
El recopilador sysctl
se puede habilitar con --collector.sysctl
. Admite la exposición de valores numéricos de sysctl como métricas usando el indicador --collector.sysctl.include
y valores de cadena como métricas de información usando el indicador --collector.sysctl.include-info
. Las banderas se pueden repetir. Para sysctl con múltiples valores numéricos, se puede proporcionar una asignación opcional para exponer cada valor como su propia métrica. De lo contrario, se utiliza una etiqueta index
para identificar los diferentes campos.
Usando --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
Un sysctl puede contener varios valores, por ejemplo:
net.ipv4.tcp_rmem = 4096 131072 6291456
Usando --collector.sysctl.include=net.ipv4.tcp_rmem
el recopilador expondrá:
node_sysctl_net_ipv4_tcp_rmem{index="0"} 4096
node_sysctl_net_ipv4_tcp_rmem{index="1"} 131072
node_sysctl_net_ipv4_tcp_rmem{index="2"} 6291456
Si los índices tienen un significado definido como en este caso, los valores se pueden asignar a múltiples métricas agregando la asignación al indicador --collector.sysctl.include: Usando --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
el recopilador expondrá:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Los valores de cadena deben exponerse como métrica de información. El usuario los selecciona utilizando el indicador --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Dado el siguiente sistema:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
La configuración --collector.sysctl.include-info=kernel.seccomp.actions_avail
producirá:
node_sysctl_info{key="kernel.seccomp.actions_avail", index="0", value="kill_process"} 1
node_sysctl_info{key="kernel.seccomp.actions_avail", index="1", value="kill_thread"} 1
...
El recopilador textfile
es similar a Pushgateway, ya que permite exportar estadísticas de trabajos por lotes. También se puede utilizar para exportar métricas estáticas, como qué función tiene una máquina. Pushgateway debe usarse para métricas de nivel de servicio. El módulo textfile
es para métricas vinculadas a una máquina.
Para usarlo, configure el indicador --collector.textfile.directory
en la línea de comando node_exporter
. El recopilador analizará todos los archivos en ese directorio que coincidan con el glob *.prom
usando el formato de texto. Nota: No se admiten marcas de tiempo.
Para impulsar atómicamente el tiempo de finalización de un trabajo cron:
echo my_batch_job_completion_time $(date +%s) > /path/to/directory/my_batch_job.prom.$$
mv /path/to/directory/my_batch_job.prom.$$ /path/to/directory/my_batch_job.prom
Para establecer roles estáticamente para una máquina usando etiquetas:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
node_exporter
expondrá todas las métricas de los recopiladores habilitados de forma predeterminada. Esta es la forma recomendada de recopilar métricas para evitar errores al comparar métricas de diferentes familias.
Para uso avanzado, a node_exporter
se le puede pasar una lista opcional de recopiladores para filtrar métricas. Los parámetros collect[]
y exclude[]
se pueden utilizar varias veces (pero no se pueden combinar). En la configuración de Prometheus, puede usar esta sintaxis en la configuración scrape.
Recopile solo métricas del recopilador cpu
y meminfo
:
params:
collect[]:
- cpu
- meminfo
Recopile todas las métricas del recopilador habilitadas pero excluya netdev
:
params:
exclude[]:
- netdev
Esto puede resultar útil para que diferentes servidores Prometheus recopilen métricas específicas de los nodos.
Requisitos previos:
glibc-static
.Edificio:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
Para ver todos los indicadores de configuración disponibles:
./node_exporter -h
make test
EXPERIMENTAL
El exportador admite TLS a través de un nuevo archivo de configuración web.
./node_exporter --web.config.file=web-config.yml
Consulte la configuración web del kit de herramientas del exportador para obtener más detalles.