# netbird-telegraf-installer Ein Befehl, und eine Node liefert Metriken + Logs an die zentrale Observability auf dem imac. Der Ausgang läuft über den **NetBird-Reverse-Proxy** (`imac-prometheus.x05.idx.wf`, `imac-loki.x05.idx.wf`) mit **Bearer-Token** — dadurch funktioniert der Installer auch auf Maschinen, die **kein NetBird-Peer** sind (Büro-LAN, Kundenlaptop, CGNAT, VM ohne Client). ## Der Token — zuerst lesen Jeder Aufruf braucht `--token `. Ohne Token bricht das Script mit `FEHLER: Kein Token: --token angeben` ab. Den Token legt man im NetBird-Dashboard an: **`https://x05.idx.wf` → Reverse Proxy → Service `imac-prometheus` → Authentication → Header → Preset „Bearer Token"**. Für `imac-loki` denselben Wert eintragen (oder einen zweiten, dann aber getrennt halten). Token nie in dieses Repo schreiben — er landet ausschließlich in `/etc/default/telegraf` (Modus 0600) auf der Zielmaschine. ## Linux — Debian, Ubuntu, Proxmox VE, RHEL/Rocky/Alma/Fedora, Alpine, sonstige ```sh curl -fsSL https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main/install.sh \ | sudo sh -s -- --name --token ``` | Option | Bedeutung | |---|---| | `--name ` | Node-Name im Dashboard (Default: `hostname -s`) | | `--token ` | **Pflicht.** Bearer-Token des Reverse-Proxys | | `--collector ` | Direktweg innerhalb des NetBird statt Reverse Proxy (z. B. `100.83.134.46`); braucht dann keinen Token-Zwang, aber die Node muss Peer sein | | `--role proxmox\|apache\|docker\|none` | Zusatz-Profil; Default `auto` erkennt Proxmox, Docker und Apache selbst | | `--apache-log ` | Access-Log (Default `/var/log/apache2/access.log`) | | `--uninstall` | alles entfernen | **Root-Rechte:** Das Script braucht sie (Dienst, `/etc/telegraf`). Auf PVE, in LXC-Containern und überall, wo du schon root bist: **kein `sudo`** — es ist dort oft nicht installiert. Auf normalen Desktops/Servern mit eigenem Benutzer: `| sudo sh -s -- …`. Ablauf: Paketquelle von InfluxData (apt/dnf/apk) oder statisches Binary (amd64/arm64/armv7) → `/etc/telegraf/telegraf.conf` + `telegraf.d/` aus diesem Repo → `/etc/default/telegraf` mit NODE_NAME, PROM_URL, LOKI_URL, TELEGRAF_TOKEN → systemd-Dienst `telegraf`, enabled, Konfig-Test vor dem Start. ### Direktweg (Node ist NetBird-Peer) ```sh curl -fsSL …/install.sh | sudo sh -s -- --name --token --collector 100.83.134.46 ``` ### Proxmox VE **Kein API-Token nötig.** Der Installer nutzt `pvesh` direkt (Telegraf läuft für diese Rolle als root — das Drop-in `10-proxmox-root.conf` setzt das). Damit entfällt die gesamte Token-/ACL-Thematik. > Warum nicht `inputs.proxmox`? Das Plugin fragt als Erstes `/nodes//dns` ab und > braucht dort `Sys.Audit`. Schlägt das fehl, liefert es **komplett nichts** — ohne > Logmeldung. Mehrere ACL-Versuche (`PVEAuditor` auf `/`, auf `/nodes`, auf `/nodes/`, > eigene Rolle mit `Sys.Audit`) blieben auf PVE 8 mit `403` erfolglos. Dann auf **jedem PVE-Knoten** (auf dem Host selbst, nicht in einer VM). **Auf PVE gibt es kein `sudo`** — du bist dort bereits root, also ohne `sudo`: ```sh curl -fsSL https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main/install.sh \ | sh -s -- --name --token --role proxmox ``` > Auf Debian/Ubuntu/Normalnutzer dagegen `| sudo sh -s -- …` verwenden. Das Script prüft `id -u` selbst und bricht mit klarer Meldung ab, wenn es nicht root ist. Der Installer erkennt den PVE-Knoten selbst (`pvesh get /nodes`) und legt das systemd-Drop-in `10-proxmox-root.conf` an — Telegraf läuft für diese Rolle als **root**, weil `pvesh` root verlangt. Liefert pro Gast: `proxmox_vm_cpu_usage_percent`, `_cpu_cores`, `_mem_bytes`, `_mem_max_bytes`, `_mem_usage_percent`, `_swap_bytes`, `_disk_bytes`, `_disk_max_bytes`, `_diskread/_diskwrite_bytes_total`, `_net_in/_net_out_bytes_total`, `_uptime_seconds`, `_running` — je mit `vmid`, `name`, `node`, `type`, `status`. Plus die normalen Host-Metriken des Knotens. > **Wenn nach der Installation keine VM-Metriken kommen:** `systemctl cat telegraf | grep User` muss > `User=root` zeigen. Vorher prüfen: `pvesh get /cluster/resources --output-format json` muss als root > Daten liefern. Als Nicht-root gibt `pvesh` nur `ipcc_send_rec[...] failed` aus — ohne Fehler im Log. ### 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). ## Windows — PowerShell als Administrator ```powershell Set-ExecutionPolicy Bypass -Scope Process -Force & ([scriptblock]::Create((iwr -useb https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main/install.ps1))) -Name ROG -Token ``` Installiert nach `C:\Program Files\Telegraf`, Dienst `telegraf`; liefert CPU/RAM/Disk/Net/Dienste + Eventlog (Warnung/Fehler). `-Uninstall` entfernt alles. ## GPU-Metriken | Hersteller | Erkennung | Metriken | |---|---|---| | NVIDIA | `nvidia-smi -L` funktioniert | Auslastung, VRAM, Temperatur, Leistung, Takte, P-State | | AMD | `rocm-smi` vorhanden | Auslastung, Temperatur, Leistung, VRAM (via `scripts/gpu-rocm.sh`) | | Intel | `/dev/dri/renderD128` | Hinweis im Log — `intel_gpu_top` wird nicht automatisch erfasst | AMD liefert sieben Metriken (Auslastung, VRAM genutzt/gesamt, Temperatur edge/junction/memory, Leistung). NVIDIA entsprechend über `inputs.nvidia_smi`. Im Dashboard: Row **GPU** (Auslastung, Speicher, Temperatur, Leistung). Leere Panels heißen: keine GPU-Node im Mesh. **Beim Aktualisieren des AMD-Scripts** (falls `rocm-smi` seine Spalten ändert) beide Dateien neu holen — Script **und** Conf, und `data_format` muss `prometheus` bleiben: ```sh sudo curl -fsSL …/scripts/gpu-rocm.sh | sudo tee /etc/telegraf/gpu-rocm.sh >/dev/null sudo chmod +x /etc/telegraf/gpu-rocm.sh sudo sh -c 'cat > /etc/telegraf/telegraf.d/gpu.conf < curl -s -H "Authorization: Bearer $TOKEN" \ "https://imac-prometheus.x05.idx.wf/api/v1/query?query=system_uptime{node=\"\"}" journalctl -u telegraf -f ``` Im Grafana-Dashboard „NetBird Observability — Overview“ erscheint die Node automatisch im Node-Filter. Grafana selbst: `http://100.83.134.46:3000` (nur im NetBird, Login `admin`). ## Docker-Host ohne root Wer kein sudo hat, aber in der Gruppe `docker` ist: Container-Variante aus [netbird-observability/stacks/telegraf-node](https://gitea.m-m.bio/mm/netbird-observability) (privates Repo). Dort ist `network_mode: host` gesetzt — ohne das sieht Telegraf nur `lo`+`eth0` statt der echten Interfaces. ## Sicherheit - Der Proxy verlangt Bearer-Token; das Header wird vor dem Weiterleiten entfernt und liegt damit nicht bei Prometheus/Loki. - Telegraf läuft als Benutzer `telegraf` (Docker-Socket read-only via Gruppe `docker`, Apache-Logs via Gruppe `adm`). - **Ausnahme `--role proxmox`:** systemd-Drop-in setzt `User=root`, weil `pvesh` root benötigt. Nur auf PVE-Hosts, wo du ohnehin root bist. - Dieses Repo ist öffentlich und enthält keine Secrets.