Photo by Stef Westheim / Unsplash

Prometheus Proxmox PVE Exporter

Prometheus 8. Aug. 2023

Nachdem wir Prometheus installiert haben, unseren Host Server und vielleicht den einen oder anderen Server hinzugefügt haben stellen wir fest: Wir bekommen über den normalen "node_exporter" nicht ausreichend Informationen zu unseren VMs und Containern.

Dazu installieren wir auf unserem Proxmox Host jetzt zusätzlich den PVE-Exporter

Installation

Wir installieren python3, pip und venv. "venv" stellt und virtuelle Umgebungen zur Verfügung um Kompitabilitätsprobleme bei unterschiedlichen Anforderungen an Pakete vorzubeugen.

apt install python3 python3-pip python3.11-venv
python3 -m venv /opt/prometheus-pve-exporter
/opt/prometheus-pve-exporter/bin/pip install prometheus-pve-exporter

Wir testen ob der PVE-Exporter läuft. Sehen wir nach dem Befehl einen TExt der uns helfen soll dieses Program zu bedienen haben wir bis hier hin alles richtig gemacht.

/opt/prometheus-pve-exporter/bin/pve_exporter --help

System- & Proxmox Benutzer, API-Token hinzufügen

Systembenutzer hinzufügen mit dem später der PVE-Exporter gestartet wird.

Wir müssen kein Passwort einrichten, der Benutzer muss sich nicht anmelden können.

adduser prometheus
Proxmox - Datacenter - Permissions - Users

Wir legen einen neuen Benutzer an. Auf dem Bild seht ihr den Bereich "Permissions". Der folgende Schritt ist für alle Bereiche gleich. Bereich wählen - "Users" zum Beispiel, auf „Add“ klicken, Formular ausfüllen und bestätigen.

Klickt auf Datacenter, Permissions, Users und dann auf "Add".

Add: User "prometheus" - LInux PAM

Klickt auf "Permissions" - Add "User Permission"

Permissions - Add: User Permission
Permissions - Add: User Permission. Auswahl "/", "prometheus@pam", PVEAuditor

Wichtig beim hinzufügen des API-Tokens: Haken bei "Privilege Separation" muss raus, sonst müsst ihr dem Benutzer "prometheus" mindestens die gleichen Rechte geben wie dem Token "prometheus".

Mit dieser Funktion könnt ihr einem API-Token weniger Rechte geben als dem Benutzer, allerdings niemals mehr.

Nach dem Klick auf "Add" wird euch EINMALIG das Secret angezeigt. Speichert das in eurem Passwort Manager.

Damit sind wir fertig und können wieder zurück in die Konsole.

PVE Exporter Konfiguration anlegen

mkdir -p /etc/prometheus
nano /etc/prometheus/pve.yml
default:
    user: prometheus@pam
    token_name: "prometheus"
    token_value: "API_TOKEN_SECRET"
    verify_ssl: false

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

Service & Autostart

nano /etc/systemd/system/prometheus-pve-exporter.service
[Unit]
Description=Prometheus exporter for Proxmox VE

[Service]
Restart=always
User=prometheus
ExecStart=/opt/prometheus-pve-exporter/bin/pve_exporter /etc/prometheus/pve.yml

[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload
systemctl start prometheus-pve-exporter
systemctl enable prometheus-pve-exporter
systemctl status prometheus-pve-exporter

So sollte die Ausgabe aussehen. Wichtig sind die beiden "enabled" - damit stellen wir sicher, dass er automatisch startet. "Active" sollte auch "active" sein, er ist somit gestartet.

PVE Exporter läuft und wir können auf die Instanz mit Prometheus um die Konfiguration anzupassen.

Prometheus Konfiguration anpassen

cd docker/prometheus
sudo nano data/prometheus.yml

In dieser Datei suchen wir nach der Zeile "scrape_configs:" und fügen darunter einen neuen Job ein.

Wenn alles nach unseren Anleitungen erfolgt ist, sieht das in etwa so aus:

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

  - job_name: 'NAME'
    static_configs:
      - targets:
        - IPADRESSE:9221
    metrics_path: /pve
    params:
      module: [default]

Wenn ihr mehrer PVE-Exporter laufen lassen möchtet, könnt ihr einfach mehrere IP-Adressen untereinander einfügen. Ihr solltet allerdings wegen der IDs innerhalb von Proxmox jedes Cluster getrennt einfügen oder extrem darauf achten IDs niemals doppelt zu vergeben.

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

Wir sehen in unserer Prometheus Web-Oberfläche unter "Status" -> "Targets" jetzt den PVE Exporter mit dem Namen den wir ihm gegeben haben.

Bei Anmerkungen oder Fragen kommt gerne auf unseren Discord.

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

Tags