Photo by Jainath Ponnala / Unsplash

Prometheus node_exporter auf Raspberry Pi installieren

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

Die Installation erfolgt mit eurem normalen Benutzer, da im Standard die Anmeldung mit root nicht gestattet ist.

sudo mkdir /opt/node_exporter
cd /opt/node_exporter/
sudo wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-arm64.tar.gz
sudo tar xvfz node_exporter-1.6.1.linux-arm64.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.

sudo mv node_exporter-1.6.1.linux-arm64/* .
sudo rm -r node_exporter-1.6.1.linux-arm64
sudo rm node_exporter-1.6.1.linux-arm64.tar.gz

Systemdienst / Autostart

Neue Datei anlegen

sudo 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

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
sudo 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