# 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"