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 <TOKEN>. Ohne Token bricht das Script mit
FEHLER: Kein Token: --token <Bearer-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
curl -fsSL https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main/install.sh \
| sudo sh -s -- --name <node-name> --token <BEARER-TOKEN>
| Option | Bedeutung |
|---|---|
--name <n> |
Node-Name im Dashboard (Default: hostname -s) |
--token <t> |
Pflicht. Bearer-Token des Reverse-Proxys |
--collector <ip> |
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 |
--pve-token 'telegraf@pve!monitoring=…' |
Proxmox-API-Token für VM/CT-Metriken |
--apache-log <pfad> |
Access-Log (Default /var/log/apache2/access.log) |
--uninstall |
alles entfernen |
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)
curl -fsSL …/install.sh | sudo sh -s -- --name <node> --token <TOKEN> --collector 100.83.134.46
Proxmox VE
pveum user add telegraf@pve
pveum user token add telegraf@pve monitoring -privsep 1 # Secret notieren
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>'
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
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 <BEARER-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:
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 <<EOF
[[inputs.exec]]
interval = "30s"
timeout = "20s"
data_format = "prometheus"
commands = ["/etc/telegraf/gpu-rocm.sh"]
EOF'
sudo systemctl restart telegraf
Im Docker-Betrieb muss der Treiber im Container verfügbar sein (nvidia-container-toolkit bzw. --device /dev/dri); als systemd-Dienst ist das automatisch der Fall.
Prüfen
TOKEN=<BEARER-TOKEN>
curl -s -H "Authorization: Bearer $TOKEN" \
"https://imac-prometheus.x05.idx.wf/api/v1/query?query=system_uptime{node=\"<node-name>\"}"
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 (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 Gruppedocker, Apache-Logs via Gruppeadm). - Dieses Repo ist öffentlich und enthält keine Secrets.