Recolectores de prometheus-node-exporter en Ubuntu 20.04: systemd
En el centro utilizamos Prometheus y Grafana para monitorizar el parque informático compuesto por ordenadores que ejecutan Ubuntu 20.04. Los equipos exportan las métricas gracias al paquete prometheus-node-exporter
que está instalado a partir de los repositorios oficiales de la distribución.
Así en http://<dirección ip>:9100/metrics
se puede acceder a las métricas del equipo.
Con la configuración por defecto del paquete prometheus-node-exporter
están activos los siguientes recolectores:
500]: time="2021-03-24T10:03:25+01:00" level=info msg="Enabled collectors:" source="node_exporter.go:97"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - arp" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - bcache" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - bonding" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - conntrack" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - conntrack" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - cpu" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - cpufreq" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - diskstats" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - edac" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - entropy" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - filefd" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - filesystem" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - hwmon" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - infiniband" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - ipvs" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - loadavg" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - mdadm" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - meminfo" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - netclass" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - netdev" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - netstat" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - nfs" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - nfsd" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - pressure" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - sockstat" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - stat" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - systemd" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - textfile" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - time" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - timex" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - uname" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - vmstat" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - xfs" source="node_exporter.go:104"
500]: time="2021-03-24T10:03:25+01:00" level=info msg=" - zfs" source="node_exporter.go:104"
Y entre estos recolectores destaca el de systemd
que es el único que los desarrolladores de node exporter
no consideran que deba estar activo por defecto. Ver: https://github.com/prometheus/node_exporter#collectors.
Tal y como advierte la página de node_exporter en GitHub, las razones para no activar por defecto otros recolectores son:
- Alta cardinalidad.
- Tiempo de ejecución elevado.
- Consumo de recursos significativo.
En nuestro caso el problema con el recolector de systemd
es la alta cardinalidad. Con la configuración por defecto un equipo del aula publica 2231 métricas de las que 1089 corresponden al recolector de systemd
. Es decir, al desactivar el recolector de systemd
un equipo pasa de publicar 2231 métricas a publicar 1142. Y esto para cada uno de los equipos del centro es lo que eleva —en nuestro caso innecesariamente— la cardinalidad y el trabajo que debe realizar prometheus
.
Cambio de la configuración por defecto para prometheus-node-exporter
Una vez instalado en paquete prometheus-node-exporter
se puede encontrar su configuración por defecto en el fichero /etc/default/prometheus-node-exporter
. Allí se podrá comprobar que por defecto se lanza node exporter
sin ningún argumento:
ARGS=""
Pero es posible modificar la línea para desactivar el recolector de systemd
:
ARGS="--no-collector.systemd"