Photo by Patrik Kernstock / Unsplash

Prometheus node_exporter auf debian Server installieren

Prometheus 8. Aug. 2023

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 (https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz)

Die Installation erfolgt mit dem user "root"

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.

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

nano /etc/systemd/system/node_exporter.service
💡
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
[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

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.

💡
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:

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

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

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:

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:

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

Externes System abfragen:

scrape_configs:
  - job_name: "NAME_EINTRAGEN"
  static_configs:
    - targets: ["IP_NODE_EXPORTER:9100"]

Bei Anmerkungen oder Fragen kommt gerne auf unseren Discord.

Join the IceFlom & maarsellow & Viertelwissen Discord Server!
Gemeinschaftsdiscord von IceFlom, Maarsellow und Viertelwissen

Tags

maarsellow

zusammen mit IceFlom