fix(proxmox): Conf-Platzhalter rendern (fetch_conf), PVE-Erkennung vor dem Schreiben der Env; README mit Token-Anlage

This commit is contained in:
mm committed 2026-09-13 20:39:44 +02:00
1 parent 5326d90975
commit d8b910063e
2 files changed
+40 -6

No files matched your search

+21 -3
View File
@@ -43,14 +43,32 @@ curl -fsSL …/install.sh | sudo sh -s -- --name <node> --token <TOKEN> --collec
### Proxmox VE ### Proxmox VE
Zuerst auf dem PVE-Host den Token anlegen:
```sh ```sh
pveum user add telegraf@pve 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 pveum acl modify / -token 'telegraf@pve!monitoring' -role PVEAuditor
curl -fsSL …/install.sh | sudo sh -s -- --name pve1 --token <TOKEN> \
--role proxmox --pve-token 'telegraf@pve!monitoring=<secret>'
``` ```
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 <BEARER-TOKEN> \
--role proxmox --pve-token 'telegraf@pve!monitoring=<UUID>'
```
`--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=<uuid>'` | **Pflicht** für VM/CT-Metriken |
| `--pve-node <n>` | PVE-Knotenname wie im PVE-Baum (Default: per `pvesh` erkannt) |
| `--pve-url <u>` | 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 ### 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). 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).
+19 -3
View File
@@ -210,6 +210,14 @@ fi
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Konfiguration # 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 mkdir -p /etc/telegraf/telegraf.d /etc/default
umask 077 umask 077
cat > /etc/default/telegraf <<EOF cat > /etc/default/telegraf <<EOF
@@ -226,17 +234,25 @@ EOF
umask 022 umask 022
fetch() { curl -fsSL "$REPO_RAW/$1" -o "$2" || die "Download $1 fehlgeschlagen."; } fetch() { curl -fsSL "$REPO_RAW/$1" -o "$2" || die "Download $1 fehlgeschlagen."; }
# Holt eine Conf und ersetzt ${...}-Platzhalter aus /etc/default/telegraf.
fetch_conf() {
fetch "$1" "$2.tmp"
set -a; [ -r /etc/default/telegraf ] && . /etc/default/telegraf; set +a
envsubst '${NODE_NAME} ${PVE_TOKEN} ${PVE_NODE} ${PVE_URL} ${APACHE_LOG}' < "$2.tmp" > "$2"
rm -f "$2.tmp"
}
fetch telegraf/base.conf /etc/telegraf/telegraf.conf fetch telegraf/base.conf /etc/telegraf/telegraf.conf
rm -f /etc/telegraf/telegraf.d/*.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; } [ "$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 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" 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 ;; fetch_conf 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 ;; apache) fetch_conf telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true ;;
docker|none) ;; docker|none) ;;
*) die "Unbekannte Rolle: $ROLE" ;; *) die "Unbekannte Rolle: $ROLE" ;;
esac 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) --- # --- GPU (nur wenn erkannt) ---
case "$GPU" in case "$GPU" in