Files
netbird-telegraf-installer/telegraf/llamaswap-user.conf
T
mm 235cbc68dc 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
2026-10-10 22:25:18 +02:00

83 lines
2.7 KiB
Plaintext

# llama-swap-Telemetrie des ROG — Nutzer-Instanz von Telegraf.
#
# Warum eine zweite Instanz und nicht /etc/telegraf/telegraf.d:
# Auf dem ROG gibt es kein sudo. llama-swap und kalina-backends laufen als
# Nutzer-Units; ihre Logs stehen im Nutzer-Journal und werden von der
# System-Instanz (journal-tail.sh, priority>=warning) verworfen. Eine
# Nutzer-Instanz darf --user-unit lesen und braucht keinen root.
#
# Zugangsdaten NICHT hier: das Systemd-Unit setzt
# EnvironmentFile=/etc/default/telegraf, Telegraf expandiert ${PROM_URL},
# ${LOKI_URL}, ${TELEGRAF_TOKEN} beim Laden. Eine Quelle fuer alle Knoten.
#
# Aufruf: telegraf --config /home/mm/.config/telegraf-llamaswap/telegraf.conf
[global_tags]
node = "ROG"
[agent]
interval = "15s"
flush_interval = "15s"
metric_batch_size = 1000
metric_buffer_limit = 20000
hostname = "ROG"
omit_hostname = false
round_interval = true
skip_processors_after_aggregators = true
# ---- Metriken → Prometheus Remote Write (imac) ----
[[outputs.http]]
url = "${PROM_URL}"
data_format = "prometheusremotewrite"
timeout = "10s"
namedrop = ["journal"]
[outputs.http.headers]
Content-Type = "application/x-protobuf"
Content-Encoding = "snappy"
X-Prometheus-Remote-Write-Version = "0.1.0"
Authorization = "Bearer ${TELEGRAF_TOKEN}"
# ---- Logs → Loki (imac) ----
[[outputs.loki]]
domain = "${LOKI_URL}"
endpoint = "/loki/api/v1/push"
timeout = "10s"
namepass = ["journal"]
sanitize_label_names = true
metric_name_label = ""
http_headers = { "Authorization" = "Bearer ${TELEGRAF_TOKEN}" }
# ---- 1. llama-swap selbst: System- und GPU-Werte ----
# /metrics liefert llama-swap nativ (CPU, RAM, Netz, GPU-Auslastung, VRAM,
# Temperatur, Leistungsaufnahme). Namen sind schon llamaswap_*.
[[inputs.prometheus]]
urls = ["http://192.168.188.184:9300/metrics"]
metric_version = 2
interval = "30s"
timeout = "10s"
[inputs.prometheus.tags]
app = "llama-swap"
# ---- 2. Token-/Request-Zaehler je Modell ----
# Ein exec statt fester Ports: llama-swap vergibt die Upstream-Ports dynamisch
# (${PORT}, startPort 9340) und nur laufende Modelle haben ueberhaupt eine
# /metrics. Das Skript fragt llama-swap selbst und ergaenzt das model-Label.
[[inputs.exec]]
commands = [["/home/mm/bin/llamaswap-telemetrie.py"]]
data_format = "prometheus"
interval = "60s"
timeout = "25s"
[inputs.exec.tags]
app = "llama-swap"
# ---- 3. Logs der Nutzer-Units (llama-swap, kalina-backends) ----
# Gleiche Zeilenform wie journal-tail.sh (measurement journal), damit die
# bestehenden Log-Panels ohne Sonderfall greifen.
[[inputs.exec]]
commands = [["/home/mm/bin/llamaswap-logs.py"]]
data_format = "influx"
interval = "30s"
timeout = "20s"
[inputs.exec.tags]
app = "llama-swap"