Prometheus-Exporter für Hardware- und Betriebssystemmetriken, die von *NIX-Kerneln bereitgestellt werden, geschrieben in Go mit steckbaren Metriksammlern.
Für Windows-Benutzer wird der Windows-Exporter empfohlen. Um NVIDIA-GPU-Metriken verfügbar zu machen, kann prometheus-dcgm verwendet werden.
Wenn Sie neu bei Prometheus und node_exporter
sind, gibt es eine einfache Schritt-für-Schritt-Anleitung.
Der node_exporter
lauscht standardmäßig auf HTTP-Port 9100. Weitere Optionen finden Sie in der Ausgabe --help
.
Für automatisierte Installationen mit Ansible gibt es die Prometheus-Community-Rolle.
Der node_exporter
dient zur Überwachung des Hostsystems. Die Bereitstellung in Containern erfordert besondere Sorgfalt, um eine Überwachung des Containers selbst zu vermeiden.
In Situationen, in denen eine Containerbereitstellung erforderlich ist, müssen einige zusätzliche Flags verwendet werden, um dem node_exporter
Zugriff auf die Host-Namespaces zu ermöglichen.
Beachten Sie, dass alle Nicht-Root-Mount-Punkte, die Sie überwachen möchten, per Bind-Mount in den Container eingebunden werden müssen.
Wenn Sie den Container für die Hostüberwachung starten, geben Sie das Argument path.rootfs
an. Dieses Argument muss mit dem Pfad im Bind-Mount des Host-Roots übereinstimmen. Der node_exporter verwendet path.rootfs
als Präfix für den Zugriff auf das Host-Dateisystem.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Für Docker Compose sind ähnliche Flag-Änderungen erforderlich.
---
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 '
Auf einigen Systemen benötigt der timex
Kollektor ein zusätzliches Docker-Flag, --cap-add=SYS_TIME
, um auf die erforderlichen Systemaufrufe zuzugreifen.
Es gibt unterschiedliche Unterstützung für Collectors auf jedem Betriebssystem. In den folgenden Tabellen sind alle vorhandenen Collectors und die unterstützten Systeme aufgeführt.
Collectors werden durch die Bereitstellung eines Flags --collector.
aktiviert. Standardmäßig aktivierte Collectors können durch Bereitstellung des Flags --no-collector.
deaktiviert werden. Um nur bestimmte Kollektoren zu aktivieren, verwenden Sie --collector.disable-defaults --collector.
.
Einige Collectors können mithilfe dedizierter Flags so konfiguriert werden, dass sie bestimmte Muster einschließen oder ausschließen. Die Ausschlussflags werden verwendet, um „alle außer“ anzuzeigen, während die Einschlussflags verwendet werden, um „keine außer“ anzuzeigen. Beachten Sie, dass sich diese Flags bei Collectors, die beides unterstützen, gegenseitig ausschließen.
Beispiel:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Liste:
Kollektor | Umfang | Flagge einschließen | Ausschlusskennzeichen |
---|---|---|---|
arp | Gerät | --collector.arp.device-include | --collector.arp.device-exclude |
CPU | Käfer | --collector.cpu.info.bugs-include | N / A |
CPU | Flaggen | --collector.cpu.info.flags-include | N / A |
diskstats | Gerät | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
ethtool | Gerät | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
ethtool | Metriken | --collector.ethtool.metrics-include | N / A |
Dateisystem | fs-Typen | N / A | --collector.filesystem.fs-types-exclude |
Dateisystem | Einhängepunkte | N / A | --collector.filesystem.mount-points-exclude |
hwmon | Chip | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
hwmon | Sensor | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
unterbricht | Name | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
netdev | Gerät | --collector.netdev.device-include | --collector.netdev.device-exclude |
qdisk | Gerät | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
Platteninfo | Plattennamen | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
sysctl | alle | --collector.sysctl.include | N / A |
systemd | Einheit | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
Name | Beschreibung | Betriebssystem |
---|---|---|
arp | Stellt ARP-Statistiken von /proc/net/arp bereit. | Linux |
bcache | Stellt Bcache-Statistiken aus /sys/fs/bcache/ bereit. | Linux |
Bindung | Zeigt die Anzahl der konfigurierten und aktiven Slaves von Linux-Bonding-Schnittstellen an. | Linux |
btrfs | Stellt BTRFS-Statistiken bereit | Linux |
Bootzeit | Legt die vom kern.boottime sysctl abgeleitete Systemstartzeit offen. | Darwin, Dragonfly, FreeBSD, NetBSD, OpenBSD, Solaris |
conntrack | Zeigt Conntrack-Statistiken an (tut nichts, wenn kein /proc/sys/net/netfilter/ vorhanden ist). | Linux |
CPU | Zeigt CPU-Statistiken an | Darwin, Dragonfly, FreeBSD, Linux, Solaris, OpenBSD |
cpufreq | Zeigt CPU-Frequenzstatistiken an | Linux, Solaris |
diskstats | Stellt Datenträger-E/A-Statistiken bereit. | Darwin, Linux, OpenBSD |
dmi | Stellen Sie DMI-Informationen (Desktop Management Interface) aus /sys/class/dmi/id/ bereit. | Linux |
edac | Stellt Statistiken zur Fehlererkennung und -korrektur bereit. | Linux |
Entropie | Legt die verfügbare Entropie offen. | Linux |
Geschäftsführer | Stellt Ausführungsstatistiken bereit. | Libelle, FreeBSD |
Fibrechannel | Stellt Fibre-Channel-Informationen und Statistiken von /sys/class/fc_host/ bereit. | Linux |
filefd | Stellt Dateideskriptorstatistiken von /proc/sys/fs/file-nr bereit. | Linux |
Dateisystem | Stellt Dateisystemstatistiken bereit, z. B. den verwendeten Speicherplatz. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
hwmon | Stellen Sie Hardwareüberwachungs- und Sensordaten aus /sys/class/hwmon/ bereit. | Linux |
unendlichbandig | Stellt Netzwerkstatistiken bereit, die speziell für InfiniBand- und Intel OmniPath-Konfigurationen gelten. | Linux |
IPvs | Zeigt den IPVS-Status von /proc/net/ip_vs und Statistiken von /proc/net/ip_vs_stats an. | Linux |
Ladedurchschn | Zeigt den Lastdurchschnitt an. | Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
mdadm | Stellt Statistiken zu Geräten in /proc/mdstat bereit (führt nichts aus, wenn /proc/mdstat nicht vorhanden ist). | Linux |
meminfo | Stellt Speicherstatistiken bereit. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
Netzklasse | Stellt Netzwerkschnittstelleninformationen aus /sys/class/net/ bereit. | Linux |
netdev | Stellt Netzwerkschnittstellenstatistiken wie übertragene Bytes bereit. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
netisr | Macht Netisr-Statistiken verfügbar | FreeBSD |
netstat | Stellt Netzwerkstatistiken von /proc/net/netstat bereit. Dies sind die gleichen Informationen wie netstat -s . | Linux |
nfs | Stellt NFS-Client-Statistiken aus /proc/net/rpc/nfs bereit. Dies sind die gleichen Informationen wie nfsstat -c . | Linux |
nfsd | Stellt NFS-Kernel-Serverstatistiken von /proc/net/rpc/nfsd bereit. Dies sind die gleichen Informationen wie nfsstat -s . | Linux |
nvme | Stellt NVMe-Informationen aus /sys/class/nvme/ bereit. | Linux |
os | Stellen Sie Informationen zur Betriebssystemversion aus /etc/os-release oder /usr/lib/os-release bereit | beliebig |
Netzteilklasse | Stellt Stromversorgungsstatistiken aus /sys/class/power_supply bereit | Linux |
Druck | Stellt Druck-Stall-Statistiken von /proc/pressure/ bereit. | Linux (Kernel 4.20+ und/oder CONFIG_PSI) |
rapl | Stellt verschiedene Statistiken aus /sys/class/powercap bereit. | Linux |
schedstat | Stellt Taskplaner-Statistiken aus /proc/schedstat bereit. | Linux |
Selinux | Macht SELinux-Statistiken verfügbar. | Linux |
sockstat | Stellt verschiedene Statistiken aus /proc/net/sockstat bereit. | Linux |
Softnet | Stellt Statistiken von /proc/net/softnet_stat bereit. | Linux |
stat | Stellt verschiedene Statistiken aus /proc/stat bereit. Dazu gehören Bootzeit, Forks und Interrupts. | Linux |
Tapestats | Stellt Statistiken von /sys/class/scsi_tape bereit. | Linux |
Textdatei | Macht Statistiken verfügbar, die von der lokalen Festplatte gelesen wurden. Das Flag --collector.textfile.directory muss gesetzt sein. | beliebig |
Thermal- | Stellt thermische Statistiken wie pmset -g therm bereit. | Darwin |
thermische_zone | Stellt Statistiken zu thermischen Zonen und Kühlgeräten aus /sys/class/thermal bereit. | Linux |
Zeit | Zeigt die aktuelle Systemzeit an. | beliebig |
timex | Zeigt ausgewählte adjtimex(2)-Systemaufrufstatistiken an. | Linux |
udp_queues | Zeigt die UDP-Gesamtlängen der rx_queue und tx_queue aus /proc/net/udp und /proc/net/udp6 an. | Linux |
unname | Stellt Systeminformationen bereit, die vom uname-Systemaufruf bereitgestellt werden. | Darwin, FreeBSD, Linux, OpenBSD |
vmstat | Stellt Statistiken von /proc/vmstat bereit. | Linux |
Wachhund | Stellt Statistiken aus /sys/class/watchdog bereit | Linux |
xfs | Stellt XFS-Laufzeitstatistiken bereit. | Linux (Kernel 4.4+) |
zfs | Zeigt ZFS-Leistungsstatistiken an. | FreeBSD, Linux, Solaris |
node_exporter
implementiert außerdem eine Reihe von Kollektoren, die standardmäßig deaktiviert sind. Die Gründe dafür sind je nach Sammler unterschiedlich und können sein:
scrape_interval
oder scrape_timeout
überschreitet Sie können bei Bedarf zusätzliche Collectors aktivieren, indem Sie sie zur Startkonfiguration Ihres Init-Systems oder Service-Supervisors für node_exporter
hinzufügen. Es ist jedoch Vorsicht geboten. Aktivieren Sie höchstens eine nach der anderen und testen Sie sie zuerst auf einem Nicht-Produktionssystem und dann manuell auf einem einzelnen Produktionsknoten. Wenn Sie zusätzliche Kollektoren aktivieren, sollten Sie die Änderung sorgfältig überwachen, indem Sie die scrape_duration_seconds
-Metrik beobachten, um sicherzustellen, dass die Sammlung abgeschlossen wird und keine Zeitüberschreitung auftritt. Überwachen Sie außerdem die Metrik scrape_samples_post_metric_relabeling
um die Änderungen in der Kardinalität zu sehen.
Name | Beschreibung | Betriebssystem |
---|---|---|
Kumpelinfo | Stellt Statistiken zu Speicherfragmenten bereit, wie von /proc/buddyinfo gemeldet. | Linux |
Gruppen | Eine Zusammenfassung der Anzahl der aktiven und aktivierten Kontrollgruppen | Linux |
cpu_vulnerabilities | Legt CPU-Schwachstelleninformationen von sysfs offen. | Linux |
devstat | Zeigt Gerätestatistiken an | Libelle, FreeBSD |
drm | Stellen Sie GPU-Metriken mithilfe von sysfs/DRM bereit. amdgpu ist der einzige Treiber, der diese Informationen über DRM verfügbar macht | Linux |
drbd | Stellt Statistiken zu verteilten replizierten Blockgeräten bereit (bis Version 8.4) | Linux |
ethtool | Stellt Netzwerkschnittstelleninformationen und Netzwerktreiberstatistiken entsprechend ethtool , ethtool -S und ethtool -i bereit. | Linux |
unterbricht | Zeigt detaillierte Interrupt-Statistiken an. | Linux, OpenBSD |
ksmd | Stellt Kernel- und Systemstatistiken aus /sys/kernel/mm/ksm bereit. | Linux |
Instat | Stellt Statistiken von /proc/net/stat/ bereit. | Linux |
anmeldend | Legt die Sitzungsanzahl von logind offen. | Linux |
meminfo_numa | Stellt Speicherstatistiken von /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat zur Verfügung. | Linux |
mountstats | Stellt Dateisystemstatistiken von /proc/self/mountstats bereit. Stellt detaillierte NFS-Client-Statistiken bereit. | Linux |
Netzwerkroute | Stellt die Routing-Tabelle als Metriken bereit | Linux |
perf | Stellt leistungsbasierte Metriken bereit (Warnung: Metriken hängen von der Kernel-Konfiguration und den Kernel-Einstellungen ab). | Linux |
Prozesse | Stellt aggregierte Prozessstatistiken von /proc bereit. | Linux |
qdisc | Zeigt Statistiken zur Warteschlangendisziplin an | Linux |
Platteninfo | Stellt Plattenstatistiken aus /proc/slabinfo bereit. Beachten Sie, dass die Berechtigung von /proc/slabinfo normalerweise 0400 ist, also legen Sie sie entsprechend fest. | Linux |
Softirqs | Stellt detaillierte Softirq-Statistiken aus /proc/softirqs bereit. | Linux |
sysctl | Machen Sie Sysctl-Werte aus /proc/sys verfügbar. Verwenden Sie zum Konfigurieren --collector.sysctl.include(-info) . | Linux |
systemd | Macht den Dienst- und Systemstatus von systemd verfügbar. | Linux |
tcpstat | Stellt TCP-Verbindungsstatusinformationen von /proc/net/tcp und /proc/net/tcp6 bereit. (Warnung: Die aktuelle Version weist potenzielle Leistungsprobleme in Situationen mit hoher Auslastung auf.) | Linux |
W-lan | Zeigt WLAN-Geräte- und Stationsstatistiken an. | Linux |
xfrm | Stellt Statistiken aus /proc/net/xfrm_stat bereit | Linux |
Zoneninfo | Stellt NUMA-Speicherzonenmetriken bereit. | Linux |
Diese Kollektoren sind veraltet und werden in der nächsten Hauptversion entfernt.
Name | Beschreibung | Betriebssystem |
---|---|---|
ntp | Macht den lokalen NTP-Daemon-Zustand verfügbar, um die Zeit zu überprüfen | beliebig |
runit | Macht den Dienststatus von Runit verfügbar. | beliebig |
Vorgesetzter | Zeigt den Dienststatus des Supervisors an. | beliebig |
Der perf
Collector funktioniert auf einigen Linux-Systemen aufgrund der Kernel-Konfiguration und der Sicherheitseinstellungen möglicherweise nicht sofort. Um den Zugriff zu erlauben, legen Sie den folgenden sysctl
Parameter fest:
sysctl -w kernel.perf_event_paranoid=X
Abhängig vom konfigurierten Wert stehen unterschiedliche Metriken zur Verfügung. In den meisten Fällen bietet 0
den vollständigsten Satz. Weitere Informationen finden Sie unter man 2 perf_event_open
.
Standardmäßig sammelt der perf
-Collector nur Metriken der CPUs, auf denen node_exporter
ausgeführt wird (z. B. runtime.NumCPU
). Wenn dies nicht ausreicht (z. B. wenn Sie node_exporter
mit auf bestimmte CPUs eingestellter CPU-Affinität ausführen), können Sie eine Liste von angeben Alternative CPUs mithilfe des Flags --collector.perf.cpus
. Um beispielsweise Metriken für die CPUs 2-6 zu sammeln, würden Sie Folgendes angeben: --collector.perf --collector.perf.cpus=2-6
ist nullindiziert und kann auch einen Schrittwert annehmen; z. B. würde --collector.perf --collector.perf.cpus=1-10:5
auf den CPUs 1, 5 und 10 sammeln.
Der perf
Collector kann auch Tracepoint-Zähler erfassen, wenn er das Flag --collector.perf.tracepoint
verwendet. Tracepoints können mithilfe perf list
oder von debugfs gefunden werden. Eine Beispielverwendung hierfür wäre --collector.perf.tracepoint="sched:sched_process_exec"
.
Der sysctl
Kollektor kann mit --collector.sysctl
aktiviert werden. Es unterstützt die Offenlegung numerischer Sysctl-Werte als Metriken mithilfe des Flags --collector.sysctl.include
und von Zeichenfolgenwerten als Infometriken mithilfe des Flags --collector.sysctl.include-info
. Die Flags können wiederholt werden. Für sysctl mit mehreren numerischen Werten kann eine optionale Zuordnung angegeben werden, um jeden Wert als eigene Metrik verfügbar zu machen. Andernfalls wird eine index
verwendet, um die verschiedenen Felder zu identifizieren.
Mit --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
Ein sysctl kann mehrere Werte enthalten, zum Beispiel:
net.ipv4.tcp_rmem = 4096 131072 6291456
Mit --collector.sysctl.include=net.ipv4.tcp_rmem
stellt der Collector Folgendes bereit:
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
Wenn die Indizes wie in diesem Fall eine definierte Bedeutung haben, können die Werte mehreren Metriken zugeordnet werden, indem die Zuordnung an das Flag --collector.sysctl.include angehängt wird: Mit --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
Der Kollektor stellt Folgendes bereit:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Zeichenfolgenwerte müssen als Informationsmetrik verfügbar gemacht werden. Der Benutzer wählt sie mithilfe des Flags --collector.sysctl.include-info
aus.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Gegeben sei folgendes System:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
Wenn Sie --collector.sysctl.include-info=kernel.seccomp.actions_avail
festlegen, erhalten Sie Folgendes:
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
...
Der textfile
Kollektor ähnelt dem Pushgateway, da er den Export von Statistiken aus Batch-Jobs ermöglicht. Es kann auch verwendet werden, um statische Metriken zu exportieren, beispielsweise welche Rolle eine Maschine spielt. Das Pushgateway sollte für Service-Level-Metriken verwendet werden. Das textfile
ist für Metriken vorgesehen, die an eine Maschine gebunden sind.
Um es zu verwenden, setzen Sie das Flag --collector.textfile.directory
in der Befehlszeile node_exporter
. Der Collector analysiert alle Dateien in diesem Verzeichnis, die mit dem glob *.prom
übereinstimmen, im Textformat. Hinweis: Zeitstempel werden nicht unterstützt.
So verschieben Sie die Abschlusszeit für einen Cron-Job atomar:
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
So legen Sie mithilfe von Labels statisch Rollen für eine Maschine fest:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
Der node_exporter
stellt standardmäßig alle Metriken von aktivierten Kollektoren bereit. Dies ist die empfohlene Methode zum Erfassen von Metriken, um Fehler beim Vergleich von Metriken verschiedener Familien zu vermeiden.
Für den erweiterten Einsatz kann dem node_exporter
eine optionale Liste von Kollektoren zum Filtern von Metriken übergeben werden. Die Parameter collect[]
und exclude[]
können mehrfach verwendet werden (aber nicht kombinierbar). In der Prometheus-Konfiguration können Sie diese Syntax unter der Scrape-Konfiguration verwenden.
Erfassen Sie nur cpu
und meminfo
Collector-Metriken:
params:
collect[]:
- cpu
- meminfo
Sammeln Sie alle aktivierten Collector-Metriken, schließen Sie jedoch netdev
aus:
params:
exclude[]:
- netdev
Dies kann nützlich sein, wenn verschiedene Prometheus-Server bestimmte Metriken von Knoten sammeln.
Voraussetzungen:
glibc-static
Paket.Gebäude:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
So sehen Sie alle verfügbaren Konfigurationsflags:
./node_exporter -h
make test
EXPERIMENTAL
Der Exporter unterstützt TLS über eine neue Webkonfigurationsdatei.
./node_exporter --web.config.file=web-config.yml
Weitere Einzelheiten finden Sie in der Webkonfiguration des Exporter-Toolkits.