Featured image of post Prometheus node_exporter auf debian Server installieren

Prometheus node_exporter auf debian Server installieren

Node_Exporter auf dem Debian Host installieren, um detaillierte Informationen zu erhalten.

Prometheus ist installiert, jetzt beginnen wir damit Metriken von Systemen zu sammeln und zu speichern.

Auf GitHub kopieren wir uns den Link zur aktuellen Version des node_exporters für Linux.

Die Installation erfolgt mit dem user “root”

1
2
3
4
mkdir /opt/node_exporter
cd /opt/node_exporter/
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz

Um ein weiteres Unterverzeichnis mit der Versionsnummer im Namen zu vermeiden, verschieben wir die Inhalte des entpackten Archivs eine Ebene nach oben und löschen anschließend das heruntergeladene Archiv und den durch das Entpacken entstandene dazugehörigen Ordner.

1
2
3
mv node_exporter-1.6.1.linux-amd64/* .
rm -r node_exporter-1.6.1.linux-amd64
rm node_exporter-1.6.1.linux-amd64.tar.gz

Systemdienst / Autostart

Neue Datei anlegen

1
nano /etc/systemd/system/node_exporter.service
Hinweis
Wenn der Exporter nur auf eine bestimmte IP oder einen anderen Port hören soll, kann dies als Parameter bei ExecStart=… ergänzt werden: –web.listen-address=10.9.99.10:9100
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Node Exporter

[Service]
User=root
Group=root
ExecStart=/opt/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

Speichern und schließen mit Win: STRG+O, ENTER, STRG+X Mac: CONTROL+O, ENTER, CONTROL+X

Anschließend neue Datei laden, Dienst starten, Autostart aktivieren und Status prüfen

1
2
3
4
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter
systemctl status node_exporter

Jetzt tragen wir diesen Exporter in der Konfiguration unseres Prometheus ein.

Sollte Prometheus auf einer anderen Umgebung installiert sein müssen wir uns auf dieser Anmelden.

Prometheus docker-compose.yml ergänzen

Prometheus läuft in einem Docker Container und es soll das Host System abgefragt werden - dieser Schritt kann übersprungen werden wenn ein externes System abgefragt werden soll und nicht der Docker Host.

Hinweis
Wir wollen mit Prometheus Daten vom Host-System sammeln, auf dem Docker installiert ist. “localhost” verweist aber innerhalb von Docker auf den Container selbst. Die “extra_hosts”-Angabe sorgt dafür, dass wir im Prometheus-Container über die Adresse “host.docker.internal” das Host-System erreichen.

Dazu muss in der docker-compose.yml folgendes ergänzt werden:

1
2
    extra_hosts:
      - "host.docker.internal:host-gateway"

Wenn es nach unserer Anleitung installiert wurde, sieht eure docker-compose.yml jetzt so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: '3.2'

services:
  prometheus:
    container_name: prometheus
    hostname: prometheus
    image: prom/prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - ./data:/etc/prometheus
      - prometheus-data:/prometheus

volumes:
  prometheus-data:
    name: prometheus-data

Speichern und schließen mit Win: STRG+O, ENTER, STRG+X Mac: CONTROL+O, ENTER, CONTROL+X

Den Container neu starten:

1
2
sudo docker compose down
sudo docker compose up -d

Prometheus Konfiguration anpassen

In der “prometheus.yml” muss folgendes ergänzt werden:

Docker Host lokal abfragen:

1
2
3
4
scrape_configs:
  - job_name: "NAME_EINTRAGEN"
  static_configs:
    - targets: ['host.docker.internal:9100']

Externes System abfragen:

1
2
3
4
scrape_configs:
  - job_name: "NAME_EINTRAGEN"
  static_configs:
    - targets: ["IP_NODE_EXPORTER:9100"]

Bei Anmerkungen oder Fragen kommt gerne auf unseren Discord.

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy