llama-swap-Telemetrie als Nutzer-Instanz (Knoten ohne sudo)
Warum: llama-swap laeuft als Nutzer-Unit. Der System-Telegraf liest das Systemjournal mit priority>=warning und liest damit keine einzige llama-swap-INFO-Zeile - Loki hatte fuer den ROG null Zeilen. Ausserdem kann die System-Instanz auf einem Knoten ohne sudo nicht erweitert werden. - scripts/llamaswap-telemetrie.py: Token/Anfragen je Modell aus llama-swaps Statistik-API plus llama.cpp /metrics je laufendem Profil (Ports sind dynamisch, deshalb kein statischer Scrape) - scripts/llamaswap-logs.py: Nutzer-Journal (llama-swap, kalina-backends) nach Loki, gleiche Zeilenform wie journal-tail.sh - telegraf/llamaswap-user.conf + .service: Zugangsdaten per EnvironmentFile=/etc/default/telegraf, keine Token-Kopie - scripts/install-llamaswap-user.sh: idempotente Installation mit --dry-run und Konfigurationspruefung
This commit is contained in:
1 parent
59ab6a9a22
commit
235cbc68dc
6 files changed
+646
No files matched your search
@@ -545,6 +545,48 @@ 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.
|
||||
|
||||
## llama-swap-Telemetrie ohne sudo (Nutzer-Instanz)
|
||||
|
||||
Für Knoten, die eine lokale Inferenz-Landschaft über **llama-swap** anbieten und
|
||||
**kein sudo** haben (ROG). Die System-Instanz dieses Installers kann dort nicht
|
||||
greifen — und sie würde llama-swap auch nicht sichtbar machen: llama-swap läuft
|
||||
als **User**-Unit, seine INFO-Zeilen liegen im Nutzer-Journal, und
|
||||
`journal-tail.sh` liest das Systemjournal mit `priority >= warning`. Ergebnis
|
||||
vorher: null llama-swap-Zeilen in Loki.
|
||||
|
||||
```sh
|
||||
# auf dem Zielknoten, als der Nutzer, dem llama-swap gehört
|
||||
sh scripts/install-llamaswap-user.sh
|
||||
# Optionen: --raw <basis-url> (Dateien vom Repo laden) --dry-run
|
||||
```
|
||||
|
||||
Was die Nutzer-Instanz holt:
|
||||
|
||||
| Quelle | Weg | Inhalt |
|
||||
|---|---|---|
|
||||
| `llama-swap:9300/metrics` | `inputs.prometheus` | Host (CPU je Kern, RAM, Netz), GPU (Auslastung, VRAM, Temperatur, Leistung) |
|
||||
| `/api/metrics/stats?model=<id>` | `inputs.exec` → `llamaswap-telemetrie.py` | Token/Anfragen/Cache **je Modell** — auch für Modelle ohne `/metrics` (strata-Engine, sd-server) |
|
||||
| `http://<upstream>/metrics` | dito | Token je **laufendem** Profil aus llama.cpp (nur mit `--metrics`) |
|
||||
| `journalctl --user-unit …` | `inputs.exec` → `llamaswap-logs.py` | Logs von llama-swap und kalina-backends für Loki |
|
||||
|
||||
Voraussetzungen, die llama-swap selbst erfüllen muss:
|
||||
|
||||
* **`--metrics` in den Startbefehlen** — llama.cpp liefert `/metrics` nur mit
|
||||
diesem Schalter (sonst HTTP 501). Für `model-manager.sh`, die Inline-`cmd`s in
|
||||
`llama-swap.yaml` und eigene Startskripte.
|
||||
* **`store.path` in `llama-swap.yaml`** — ohne Datei-Store hält llama-swap die
|
||||
Aktivität nur im RAM und kürzt sie nach `metricsMaxInMemory`; Token-Summen
|
||||
wären dann ein rollendes Fenster. Mit Store sind sie dauerhaft (SQLite).
|
||||
|
||||
Zugangsdaten bleiben dort, wo der Knoten-Installer sie hingelegt hat:
|
||||
`EnvironmentFile=/etc/default/telegraf` für die Unit, `${PROM_URL}` /
|
||||
`${LOKI_URL}` / `${TELEGRAF_TOKEN}` in der Konfiguration. Kein Kopieren von
|
||||
Token. Ohne `linger` endet die Unit mit der Sitzung — `loginctl enable-linger $USER`.
|
||||
|
||||
Grafana: Dashboard **llama-swap (ROG)** (`uid: llama-swap-rog`) in
|
||||
`netbird-observability/stacks/central-imac/dashboards/llama-swap.json`.
|
||||
|
||||
|
||||
## Error-Logs (seit 1.3.0)
|
||||
|
||||
Apache schreibt **zwei** Logarten mit **verschiedenen** Formaten:
|
||||
|
||||
Reference in new issue
Block a user