Exportateur Prometheus pour les métriques du matériel et du système d'exploitation exposées par les noyaux *NIX, écrit en Go avec des collecteurs de métriques enfichables.
L'exportateur Windows est recommandé pour les utilisateurs Windows. Pour exposer les métriques du GPU NVIDIA, prometheus-dcgm peut être utilisé.
Si vous êtes nouveau sur Prometheus et node_exporter
il existe un guide simple étape par étape.
Le node_exporter
écoute sur le port HTTP 9100 par défaut. Voir la sortie --help
pour plus d'options.
Pour les installations automatisées avec Ansible, il existe le rôle Communauté Prometheus.
Le node_exporter
est conçu pour surveiller le système hôte. Le déploiement dans des conteneurs nécessite des précautions supplémentaires afin d'éviter de surveiller le conteneur lui-même.
Pour les situations où un déploiement conteneurisé est nécessaire, certains indicateurs supplémentaires doivent être utilisés pour permettre à node_exporter
d'accéder aux espaces de noms d'hôte.
Sachez que tous les points de montage non root que vous souhaitez surveiller devront être montés en liaison dans le conteneur.
Si vous démarrez le conteneur pour la surveillance des hôtes, spécifiez l'argument path.rootfs
. Cet argument doit correspondre au chemin dans le montage de liaison de la racine de l'hôte. Le node_exporter utilisera path.rootfs
comme préfixe pour accéder au système de fichiers hôte.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Pour Docker Compose, des modifications d'indicateur similaires sont nécessaires.
---
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 '
Sur certains systèmes, le collecteur timex
nécessite un indicateur Docker supplémentaire, --cap-add=SYS_TIME
, afin d'accéder aux appels système requis.
Il existe une prise en charge variable pour les collecteurs sur chaque système d'exploitation. Les tableaux ci-dessous répertorient tous les collecteurs existants et les systèmes pris en charge.
Les collecteurs sont activés en fournissant un indicateur --collector.
. Les collecteurs activés par défaut peuvent être désactivés en fournissant un indicateur --no-collector.
. Pour activer uniquement certains collecteurs spécifiques, utilisez --collector.disable-defaults --collector.
.
Quelques collecteurs peuvent être configurés pour inclure ou exclure certains modèles à l'aide d'indicateurs dédiés. Les indicateurs d'exclusion sont utilisés pour indiquer "tous sauf", tandis que les indicateurs d'inclusion sont utilisés pour dire "aucun sauf". Notez que ces indicateurs s’excluent mutuellement sur les collecteurs prenant en charge les deux.
Exemple:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Liste:
Collectionneur | Portée | Inclure le drapeau | Exclure le drapeau |
---|---|---|---|
arpège | appareil | --collector.arp.device-include | --collector.arp.device-exclude |
processeur | insectes | --collector.cpu.info.bugs-include | N / A |
processeur | drapeaux | --collector.cpu.info.flags-include | N / A |
statistiques du disque | appareil | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
outil eth | appareil | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
outil eth | métrique | --collector.ethtool.metrics-include | N / A |
système de fichiers | types fs | N / A | --collector.filesystem.fs-types-exclude |
système de fichiers | points de montage | N / A | --collector.filesystem.mount-points-exclude |
hwmon | ébrécher | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
hwmon | capteur | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
interrompt | nom | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
netdev | appareil | --collector.netdev.device-include | --collector.netdev.device-exclude |
disque q | appareil | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
info dalle | noms de dalles | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
système | tous | --collector.sysctl.include | N / A |
système | unité | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
Nom | Description | Système d'exploitation |
---|---|---|
arpège | Expose les statistiques ARP de /proc/net/arp . | Linux |
cache | Expose les statistiques bcache de /sys/fs/bcache/ . | Linux |
liaison | Expose le nombre d’esclaves configurés et actifs des interfaces de liaison Linux. | Linux |
btrfs | Expose les statistiques btrfs | Linux |
temps de démarrage | Expose l'heure de démarrage du système dérivée du sysctl kern.boottime . | Darwin, Libellule, FreeBSD, NetBSD, OpenBSD, Solaris |
connexion | Affiche les statistiques de connexion (ne fait rien si /proc/sys/net/netfilter/ n'est pas présent). | Linux |
processeur | Expose les statistiques du processeur | Darwin, Libellule, FreeBSD, Linux, Solaris, OpenBSD |
cpufréq | Expose les statistiques de fréquence du processeur | Linux, Solaris |
statistiques du disque | Expose les statistiques d’E/S du disque. | Darwin, Linux, OpenBSD |
dmi | Exposer les informations de l'interface de gestion de bureau (DMI) à partir de /sys/class/dmi/id/ | Linux |
édac | Expose les statistiques de détection et de correction des erreurs. | Linux |
entropie | Expose l’entropie disponible. | Linux |
exécutif | Expose les statistiques d’exécution. | Libellule, FreeBSD |
canal fibre | Expose les informations et les statistiques Fibre Channel de /sys/class/fc_host/ . | Linux |
fichierfd | Expose les statistiques du descripteur de fichier de /proc/sys/fs/file-nr . | Linux |
système de fichiers | Expose les statistiques du système de fichiers, telles que l'espace disque utilisé. | Darwin, Libellule, FreeBSD, Linux, OpenBSD |
hwmon | Exposez la surveillance matérielle et les données des capteurs de /sys/class/hwmon/ . | Linux |
bande infinie | Expose les statistiques réseau spécifiques aux configurations InfiniBand et Intel OmniPath. | Linux |
IPV | Expose le statut IPVS de /proc/net/ip_vs et les statistiques de /proc/net/ip_vs_stats . | Linux |
moyenne de charge | Expose la moyenne de charge. | Darwin, Libellule, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
madame | Expose des statistiques sur les périphériques dans /proc/mdstat (ne fait rien si /proc/mdstat n'est pas présent). | Linux |
infos mémoire | Expose les statistiques de mémoire. | Darwin, Libellule, FreeBSD, Linux, OpenBSD |
classe nette | Expose les informations d'interface réseau de /sys/class/net/ | Linux |
netdev | Expose les statistiques de l’interface réseau telles que les octets transférés. | Darwin, Libellule, FreeBSD, Linux, OpenBSD |
Netisr | Expose les statistiques de Netisr | GratuitBSD |
netstat | Expose les statistiques réseau de /proc/net/netstat . Ce sont les mêmes informations que netstat -s . | Linux |
nfs | Expose les statistiques du client NFS à partir de /proc/net/rpc/nfs . Ce sont les mêmes informations que nfsstat -c . | Linux |
nfsd | Expose les statistiques du serveur du noyau NFS à partir de /proc/net/rpc/nfsd . Ce sont les mêmes informations que nfsstat -s . | Linux |
nvme | Expose les informations NVMe de /sys/class/nvme/ | Linux |
système d'exploitation | Exposer les informations de version du système d'exploitation à partir de /etc/os-release ou /usr/lib/os-release | n'importe lequel |
classe d'alimentation | Expose les statistiques d'alimentation de /sys/class/power_supply | Linux |
pression | Expose les statistiques de décrochage de pression de /proc/pressure/ . | Linux (noyau 4.20+ et/ou CONFIG_PSI) |
rap | Expose diverses statistiques de /sys/class/powercap . | Linux |
statstat | Expose les statistiques du planificateur de tâches de /proc/schedstat . | Linux |
Sélinux | Expose les statistiques SELinux. | Linux |
chaussettes | Expose diverses statistiques de /proc/net/sockstat . | Linux |
réseau logiciel | Expose les statistiques de /proc/net/softnet_stat . | Linux |
statistique | Expose diverses statistiques de /proc/stat . Cela inclut le temps de démarrage, les forks et les interruptions. | Linux |
tapisseries | Expose les statistiques de /sys/class/scsi_tape . | Linux |
fichier texte | Expose les statistiques lues à partir du disque local. L'indicateur --collector.textfile.directory doit être défini. | n'importe lequel |
thermique | Expose des statistiques thermiques telles que pmset -g therm . | Darwin |
zone_thermique | Expose les statistiques de la zone thermique et du dispositif de refroidissement de /sys/class/thermal . | Linux |
temps | Expose l’heure actuelle du système. | n'importe lequel |
Timex | Expose les statistiques d'appel système adjtimex(2) sélectionnées. | Linux |
udp_queues | Expose les longueurs totales UDP de rx_queue et tx_queue de /proc/net/udp et /proc/net/udp6 . | Linux |
uname | Expose les informations système fournies par l’appel système uname. | Darwin, FreeBSD, Linux, OpenBSD |
vmstat | Expose les statistiques de /proc/vmstat . | Linux |
chien de garde | Expose les statistiques de /sys/class/watchdog | Linux |
xfs | Expose les statistiques d'exécution XFS. | Linux (noyau 4.4+) |
zfs | Expose les statistiques de performances ZFS. | FreeBSD, Linux, Solaris |
node_exporter
implémente également un certain nombre de collecteurs désactivés par défaut. Les raisons varient selon le collectionneur et peuvent inclure :
scrape_interval
ou scrape_timeout
Vous pouvez activer des collecteurs supplémentaires si vous le souhaitez en les ajoutant à la configuration de démarrage de votre système d'initialisation ou de votre superviseur de service pour node_exporter
, mais la prudence est de mise. Activez-en un maximum à la fois, en testant d'abord sur un système hors production, puis manuellement sur un seul nœud de production. Lorsque vous activez des collecteurs supplémentaires, vous devez surveiller attentivement les modifications en observant la métrique scrape_duration_seconds
pour vous assurer que la collecte se termine et n'expire pas. De plus, surveillez la métrique scrape_samples_post_metric_relabeling
pour voir les changements de cardinalité.
Nom | Description | Système d'exploitation |
---|---|---|
copaininfo | Expose les statistiques des fragments de mémoire telles que rapportées par /proc/buddyinfo. | Linux |
groupes de contrôle | Un résumé du nombre de groupes de contrôle actifs et activés | Linux |
cpu_vulnérabilités | Expose les informations de vulnérabilité du processeur de sysfs. | Linux |
devstat | Expose les statistiques de l'appareil | Libellule, FreeBSD |
drm | Exposez les métriques GPU à l'aide de sysfs/DRM, amdgpu est le seul pilote qui expose ces informations via DRM | Linux |
drbd | Expose les statistiques des périphériques de bloc répliqués distribués (vers la version 8.4) | Linux |
outil eth | Expose des informations sur l'interface réseau et des statistiques sur les pilotes réseau équivalentes à ethtool , ethtool -S et ethtool -i . | Linux |
interrompt | Expose des statistiques détaillées sur les interruptions. | Linux, OpenBSD |
ksmd | Expose les statistiques du noyau et du système à partir de /sys/kernel/mm/ksm . | Linux |
Instat | Expose les statistiques de /proc/net/stat/ . | Linux |
connexion | Expose le nombre de sessions à partir de logind. | Linux |
meminfo_numa | Expose les statistiques de mémoire de /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | Linux |
statistiques de montage | Expose les statistiques du système de fichiers de /proc/self/mountstats . Expose des statistiques détaillées sur les clients NFS. | Linux |
réseau_route | Expose la table de routage en tant que métriques | Linux |
performance | Expose des métriques basées sur les performances (Attention : les métriques dépendent de la configuration et des paramètres du noyau). | Linux |
processus | Expose les statistiques globales des processus de /proc . | Linux |
disque q | Expose les statistiques de discipline de file d’attente | Linux |
info dalle | Expose les statistiques de dalle de /proc/slabinfo . Notez que l'autorisation de /proc/slabinfo est généralement 0400, alors définissez-la de manière appropriée. | Linux |
softirqs | Expose les statistiques softirq détaillées de /proc/softirqs . | Linux |
système | Exposez les valeurs sysctl de /proc/sys . Utilisez --collector.sysctl.include(-info) pour configurer. | Linux |
système | Expose l’état du service et du système de systemd. | Linux |
tcpstat | Expose les informations sur l'état de la connexion TCP à partir de /proc/net/tcp et /proc/net/tcp6 . (Attention : la version actuelle présente des problèmes de performances potentiels dans des situations de charge élevée.) | Linux |
Wi-Fi | Expose les statistiques des appareils et des stations WiFi. | Linux |
xfrm | Expose les statistiques de /proc/net/xfrm_stat | Linux |
zoneinfo | Expose les métriques de la zone mémoire NUMA. | Linux |
Ces collecteurs sont obsolètes et seront supprimés dans la prochaine version majeure.
Nom | Description | Système d'exploitation |
---|---|---|
NTP | Expose l'état du démon NTP local pour vérifier l'heure | n'importe lequel |
exécuter | Expose l’état du service de runit. | n'importe lequel |
superviseur | Expose l’état du service du superviseur. | n'importe lequel |
Le collecteur perf
peut ne pas fonctionner immédiatement sur certains systèmes Linux en raison de la configuration du noyau et des paramètres de sécurité. Pour autoriser l'accès, définissez le paramètre sysctl
suivant :
sysctl -w kernel.perf_event_paranoid=X
En fonction de la valeur configurée, différentes métriques seront disponibles, dans la plupart des cas, 0
fournira l'ensemble le plus complet. Pour plus d'informations, voir man 2 perf_event_open
.
Par défaut, le collecteur perf
ne collectera que les métriques des processeurs sur lesquels node_exporter
est exécuté (c'est-à-dire runtime.NumCPU
. Si cela est insuffisant (par exemple, si vous exécutez node_exporter
avec son affinité de processeur définie sur des processeurs spécifiques), vous pouvez spécifier une liste de CPU alternatifs en utilisant l'indicateur --collector.perf.cpus
. Par exemple, pour collecter des métriques sur les CPU 2 à 6, vous devez spécifier : --collector.perf --collector.perf.cpus=2-6
. est indexé à zéro et peut également prendre une valeur de foulée ; par exemple, --collector.perf --collector.perf.cpus=1-10:5
collecterait sur les processeurs 1, 5 et 10.
Le collecteur perf
est également capable de collecter le nombre de points de trace lors de l'utilisation de l'indicateur --collector.perf.tracepoint
. Les points de trace peuvent être trouvés à l'aide perf list
ou à partir des débogages. Et un exemple d'utilisation de ceci serait --collector.perf.tracepoint="sched:sched_process_exec"
.
Le collecteur sysctl
peut être activé avec --collector.sysctl
. Il prend en charge l'exposition des valeurs numériques sysctl en tant que métriques à l'aide de l'indicateur --collector.sysctl.include
et des valeurs de chaîne en tant que métriques d'informations à l'aide de l'indicateur --collector.sysctl.include-info
. Les drapeaux peuvent être répétés. Pour sysctl avec plusieurs valeurs numériques, un mappage facultatif peut être fourni pour exposer chaque valeur comme sa propre métrique. Sinon, une étiquette index
est utilisée pour identifier les différents champs.
Utilisation --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
Un sysctl peut contenir plusieurs valeurs, par exemple :
net.ipv4.tcp_rmem = 4096 131072 6291456
En utilisant --collector.sysctl.include=net.ipv4.tcp_rmem
le collecteur exposera :
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 les index ont défini une signification comme dans ce cas, les valeurs peuvent être mappées à plusieurs métriques en ajoutant le mappage à l'indicateur --collector.sysctl.include : Utilisation --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
le collecteur exposera :
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Les valeurs de chaîne doivent être exposées en tant que métrique d’informations. L'utilisateur les sélectionne à l'aide de l'indicateur --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Étant donné le système suivant :
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
Le paramètre --collector.sysctl.include-info=kernel.seccomp.actions_avail
donnera :
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
...
Le collecteur textfile
est similaire au Pushgateway, dans le sens où il permet l'exportation de statistiques à partir de tâches par lots. Il peut également être utilisé pour exporter des métriques statiques, telles que le rôle d’une machine. Le Pushgateway doit être utilisé pour les métriques de niveau de service. Le module textfile
est destiné aux métriques liées à une machine.
Pour l'utiliser, définissez l'indicateur --collector.textfile.directory
sur la ligne de commande node_exporter
. Le collecteur analysera tous les fichiers de ce répertoire correspondant au glob *.prom
en utilisant le format texte. Remarque : Les horodatages ne sont pas pris en charge.
Pour repousser atomiquement le temps d'achèvement d'une tâche 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
Pour définir statiquement les rôles d'une machine à l'aide d'étiquettes :
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
Le node_exporter
exposera par défaut toutes les métriques des collecteurs activés. Il s'agit de la méthode recommandée pour collecter des métriques afin d'éviter les erreurs lors de la comparaison des métriques de différentes familles.
Pour une utilisation avancée, node_exporter
peut recevoir une liste facultative de collecteurs pour filtrer les métriques. Les paramètres collect[]
et exclude[]
peuvent être utilisés plusieurs fois (mais ne peuvent pas être combinés). Dans la configuration Prometheus, vous pouvez utiliser cette syntaxe sous la configuration scrape.
Collectez uniquement les métriques du collecteur cpu
et meminfo
:
params:
collect[]:
- cpu
- meminfo
Collectez toutes les métriques de collecteur activées mais excluez netdev
:
params:
exclude[]:
- netdev
Cela peut être utile pour que différents serveurs Prometheus collectent des métriques spécifiques à partir des nœuds.
Conditions préalables :
glibc-static
.Bâtiment:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
Pour voir tous les indicateurs de configuration disponibles :
./node_exporter -h
make test
EXPÉRIMENTAL
L'exportateur prend en charge TLS via un nouveau fichier de configuration Web.
./node_exporter --web.config.file=web-config.yml
Voir la configuration Web de l'exportateur-toolkit pour plus de détails.