fix(proxmox): Conf-Platzhalter rendern (fetch_conf), PVE-Erkennung vor dem Schreiben der Env; README mit Token-Anlage
This commit is contained in:
1 parent
5326d90975
commit
d8b910063e
2 files changed
+40
-6
No files matched your search
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user