From d8b910063ed3e2c05ac5610259376fbd784e8a78 Mon Sep 17 00:00:00 2001 From: mm Date: Sun, 13 Sep 2026 20:39:44 +0200 Subject: [PATCH] fix(proxmox): Conf-Platzhalter rendern (fetch_conf), PVE-Erkennung vor dem Schreiben der Env; README mit Token-Anlage --- README.md | 24 +++++++++++++++++++++--- install.sh | 22 +++++++++++++++++++--- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 04814c9..f2389bd 100644 --- a/README.md +++ b/README.md @@ -43,14 +43,32 @@ curl -fsSL …/install.sh | sudo sh -s -- --name --token --collec ### Proxmox VE +Zuerst auf dem PVE-Host den Token anlegen: + ```sh pveum user add telegraf@pve -pveum user token add telegraf@pve monitoring -privsep 1 # Secret notieren +pveum user token add telegraf@pve monitoring -privsep 1 # UUID notieren! pveum acl modify / -token 'telegraf@pve!monitoring' -role PVEAuditor -curl -fsSL …/install.sh | sudo sh -s -- --name pve1 --token \ - --role proxmox --pve-token 'telegraf@pve!monitoring=' ``` +Dann auf **jedem PVE-Knoten** (auf dem Host selbst, nicht in einer VM): + +```sh +curl -fsSL https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main/install.sh \ + | sudo sh -s -- --name pve1 --token \ + --role proxmox --pve-token 'telegraf@pve!monitoring=' +``` + +`--pve-node` und `--pve-url` sind optional: Ohne Angabe ermittelt das Script den Knotennamen per `pvesh get /nodes` und nutzt `https://127.0.0.1:8006/api2/json`. + +| Option | Bedeutung | +|---|---| +| `--pve-token 'user@realm!id='` | **Pflicht** für VM/CT-Metriken | +| `--pve-node ` | PVE-Knotenname wie im PVE-Baum (Default: per `pvesh` erkannt) | +| `--pve-url ` | PVE-API-URL, wenn Telegraf nicht auf dem PVE-Host läuft | + +Liefert: Node-Metriken (CPU, RAM, Disk, Netzwerk), VM-/CT-Statistiken pro `vmid` (CPU, RAM, Disk, Netz, Uptime, Status). + ### Apache Wird automatisch erkannt (`apache2ctl`/`httpd`). Access-Log geht roh nach Loki. Für Request-Metriken `inputs.apache` in `telegraf/apache.conf` einschalten (braucht mod_status). diff --git a/install.sh b/install.sh index 55c2e28..aa57a5c 100755 --- a/install.sh +++ b/install.sh @@ -210,6 +210,14 @@ fi # -------------------------------------------------------------------------- # Konfiguration # -------------------------------------------------------------------------- +# Proxmox-Parameter VOR dem Schreiben der Konfiguration ermitteln +if [ "$ROLE" = "proxmox" ]; then + [ -n "$PVE_NODE" ] || PVE_NODE="$(pvesh get /nodes --output-format json 2>/dev/null | sed -n 's/.*"node":"\([^"]*\)".*/\1/p' | head -1)" + [ -n "$PVE_NODE" ] || PVE_NODE="$NODE_NAME" + [ -n "$PVE_URL" ] || PVE_URL="https://127.0.0.1:8006/api2/json" + log "Proxmox: node_name=$PVE_NODE base_url=$PVE_URL" +fi + mkdir -p /etc/telegraf/telegraf.d /etc/default umask 077 cat > /etc/default/telegraf < "$2" + rm -f "$2.tmp" +} fetch telegraf/base.conf /etc/telegraf/telegraf.conf rm -f /etc/telegraf/telegraf.d/*.conf [ "$HAS_DOCKER" -eq 1 ] && { fetch telegraf/docker.conf /etc/telegraf/telegraf.d/docker.conf; usermod -aG docker telegraf 2>/dev/null || true; } case "$ROLE" in proxmox) [ -n "$PVE_TOKEN" ] || log "HINWEIS: --pve-token fehlt; VM/CT-Metriken bleiben aus. Token anlegen: pveum user token add telegraf@pve monitoring -privsep 1 && pveum acl modify / -token 'telegraf@pve!monitoring' -role PVEAuditor" - fetch telegraf/proxmox.conf /etc/telegraf/telegraf.d/proxmox.conf ;; - apache) fetch telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true ;; + fetch_conf telegraf/proxmox.conf /etc/telegraf/telegraf.d/proxmox.conf ;; + apache) fetch_conf telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true ;; docker|none) ;; *) die "Unbekannte Rolle: $ROLE" ;; esac -[ "$HAS_APACHE" -eq 1 ] && [ "$ROLE" != "apache" ] && { fetch telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true; } +[ "$HAS_APACHE" -eq 1 ] && [ "$ROLE" != "apache" ] && { fetch_conf telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true; } # --- GPU (nur wenn erkannt) --- case "$GPU" in