LLM-Monitoring im Produktivbetrieb: vLLM-Metriken in Prometheus, Alarme zu Warteschlange, KV-Cache und TTFT
Eurokommerz, Wien, seit 2006: Private AI/ML · IT Managed Services · Enterprise Training · KI-Hardware & Software
- LLM-Monitoring auf vLLM beginnt mit dessen Prometheus-Metriken unter /metrics auf dem API-Port, die standardmäßig aktiv sind: wartende und laufende Anfragen, KV-Cache-Belegung, Verdrängungen, Zeit bis zum ersten Token, Latenz je Token und Ende-zu-Ende-Latenz, Token-Zähler und Abschlussgründe
- In vLLM 0.31.0 vom 5. Oktober 2026 hat vllm:kv_cache_usage_perc die in 0.10.0 als veraltet markierte Metrik vllm:gpu_cache_usage_perc ersetzt und vllm:
inter_ token_ latency_ seconds die in 0.10.2 als veraltet markierte Metrik vllm: time_ per_ output_ token_ seconds; Dashboards, die auf den alten Namen aufbauen, zeigen keine Daten - NVIDIA NIM for LLMs reicht dieselben vLLM-Metriken unverändert unter /v1/metrics durch, und --api-key von vLLM schützt /metrics nicht; den Port sollten daher nur das Gateway und die Komponenten erreichen, die seine Metriken auslesen
- Unsere Beispielalarme feuern bei einer Warteschlange, die 10 Minuten anhält, bei einem KV-Cache über 0,9 für 15 Minuten, bei jeder Verdrängung und bei weniger als 95 Prozent der Anfragen innerhalb eines TTFT-Ziels, das auf einer der Bucket-Grenzen von vLLM liegt, etwa 1 oder 2,5 s
- Prompts und Antworten gehören in ein Query-Log am Gateway, mit beschränktem Zugriff und festgelegter Aufbewahrungsfrist, nie in Metrik-Labels; die GenAI-Konventionen von OpenTelemetry stufen Inhaltsattribute in Traces als Opt-In ein
Eurokommerz × Vixen.UNO: Private AI/ML Experten kontaktieren →
Was bei einem selbst gehosteten LLM-Dienst zu überwachen ist
LLM-Monitoring für ein selbst gehostetes Modell beobachtet, was die Serving-Engine über Warteschlange, KV-Cache und Latenz meldet, und löst einen Alarm aus, bevor Nutzer eine Verlangsamung bemerken. In vLLM sind diese Werte Prometheus-Metriken unter /metrics auf dem API-Port, standardmäßig 8000, und das Beispiel von vLLM für Prometheus und Grafana hält fest, dass „das Logging von Prometheus-Metriken im OpenAI-kompatiblen Server standardmäßig aktiviert ist“. Wartende Anfragen, KV-Cache-Belegung, Verdrängungen (Preemptions), die Zeit bis zum ersten Token (TTFT) und die Latenz je Token (Inter-Token-Latenz) liefern die Signale für die wichtigsten Alarme; laufende Anfragen, Token-Zähler und Abschlussgründe ergänzen die Trenddaten für die Kapazitätsplanung.
Das Gateway vor vLLM ergänzt Angaben zu Nutzern und HTTP-Fehlern sowie eine TTFT nahe an dem, was ein Nutzer sieht. Den Zustand der GPUs liefert DCGM; unser Leitfaden zum GPU-Server-Monitoring mit DCGM behandelt ihn und erklärt, warum die GPU-Auslastung wenig über die Last einer GPU im Serving-Betrieb aussagt. TTFT, Latenz je Token und Zeit pro Ausgabe-Token (TPOT) definiert unser Leitfaden dazu, was ein privater KI-Pilot messen sollte, der aus diesen Werten auch die Hardware dimensioniert.
vLLM-Metriken für Prometheus in vLLM 0.31.0
Die Namen unten stammen aus dem Quellcode von vLLM 0.31.0, veröffentlicht am 5. Oktober 2026 und Stand 6. Oktober die aktuelle Version. Die Metriken in der Tabelle haben die Labels model_name und engine, wobei engine bei Daten-Parallelismus die Engine-Cores durchnummeriert. Zähler enden auf _total, und Histogramme ergänzen _bucket, _sum und _count.
| SIGNAL | METRIK (VLLM 0.31.0) | WAS SIE AUSSAGT | UNSER BEISPIELALARM |
|---|---|---|---|
| Wartende Anfragen | vllm:num_ | Anfragen in der Warteschlange, verdrängte eingeschlossen | 10 Minuten lang über 0 |
| Laufende Anfragen | vllm:num_ | Anfragen im laufenden Batch | keiner; zusammen mit der Warteschlange lesen |
| KV-Cache-Belegung | vllm:kv_ | belegter Anteil des KV-Cache, 1 heißt voll | 15 Minuten lang über 0,9 |
| Verdrängungen | vllm:num_ | wie oft eine Anfrage mangels KV-Cache in die Warteschlange zurückging, um ihr Prefill neu zu starten | jeder Anstieg innerhalb von 15 Minuten |
| Zeit bis zum ersten Token | vllm:time_ | Wartezeit plus Prompt-Verarbeitung innerhalb von vLLM | 10 Minuten lang unter 95 Prozent der Anfragen innerhalb des Ziels |
| Latenz je Token | vllm:inter_ | Abstände zwischen Ausgabeschritten; hier zeigen sich Stockungen | 10 Minuten lang mehr als 1 Prozent der Abstände über 0,5 s |
| Ende-zu-Ende-Latenz | vllm:e2e_ | die ganze Anfrage innerhalb von vLLM | 99. Perzentil nahe am Timeout des Gateways |
| Abschlussgründe | vllm:request_ | abgeschlossene Anfragen nach finished_reason, wobei length bedeutet, dass max_tokens oder max_model_len erreicht wurde | length bei über 5 Prozent der Anfragen einer Stunde |
Quellcode von vLLM 0.31.0 (Definitionen der Metriken und Abschlussgründe), veröffentlicht am 5. Oktober 2026. Die Alarmwerte sind unsere Beispiele, nicht die von vLLM; testen Sie sie mit Ihrem eigenen Anfrageaufkommen.
Geben Sie jeder Regel eine for-Dauer, mit der Prometheus „eine bestimmte Zeit lang“ wartet, bevor der Alarm feuert, damit kurze Spitzen nicht die Rufbereitschaft alarmieren. Gauges wie die Warteschlange werden nur beim jeweiligen Scrape gelesen, im eigenen Beispiel von vLLM alle 5 s und in der Voreinstellung von Prometheus jede Minute. Ergänzen Sie eine Regel für die Zeitreihe up von Prometheus, die bei einem fehlgeschlagenen Scrape 0 ist, denn ein abgestürzter Server exportiert nichts, und die übrigen Regeln haben dann keine Daten.
NVIDIAs NIM for LLMs stellt die Metriken seines vLLM-Backends unter /v1/metrics bereit, und laut seiner Dokumentation „reicht NIM die nativen Prometheus-Metriken des Inferenz-Backends ohne Änderung durch“. Dashboards und Regeln lassen sich übernehmen, im Rahmen der vLLM-Version, die ein NIM-Release enthält. Andere Engines verwenden eigene Namen; unser Vergleich von vLLM, SGLang, TensorRT-LLM und Ollama zeigt, wie jede ihre Metriken bereitstellt.
Laut dem Sicherheitsleitfaden von vLLM schützt --api-key nur Endpunkte unter /v1, /v2, /inference und /cohere, sodass /metrics, das außerhalb dieser Pfade auf demselben Port liegt, ohne Schlüssel antwortet. Lassen Sie nur das Gateway, Prometheus und auf Kubernetes den Endpoint Picker diesen Port erreichen, wie es unser Leitfaden zu einer privaten LLM-Plattform auf Kubernetes beschreibt; er behandelt auch das Autoscaling nach diesen Metriken.
Umbenannte Metriken und die Grafana-Dashboards von vLLM
vLLM hat seine Metriken mit dem Präfix gpu_ in Release 0.10.0 als veraltet markiert und ab 0.11.0 ausgeblendet. Die Gauge vllm:gpu_cache_usage_perc für den KV-Cache wurde zu vllm:kv_cache_usage_perc, und die Zähler des Prefix-Cache wurden zu vllm:prefix_cache_queries und vllm:prefix_cache_hits, die mit dem Suffix _total erscheinen. Release 0.10.2 markierte die Metrik vllm:--show-hidden-metrics-for-version eine veraltete Metrik nur in dem Release wieder her, das sie ausblendet, bevor das nächste Release sie entfernt.
Das Beispiel von vLLM für Prometheus und Grafana enthält grafana.json mit Panels für das 50. bis 99. Perzentil der Latenz, Token-Durchsatz, laufende und wartende Anfragen, KV-Cache-Belegung, Prompt- und Antwortlängen, Abschlussgründe sowie Warte-, Prefill- und Decode-Zeit. Die Observability-Beispiele von vLLM ergänzen die Dashboards Performance Statistics und Query Statistics, als JSON für Grafana und als YAML für Perses. Die Einrichtung umfasst drei Schritte.
- Tragen Sie jeden vLLM-Server in Prometheus als Scrape-Ziel auf seinem API-Port ein, mit dem Pfad /metrics oder bei NIM /v1/metrics und einem Scrape-Intervall von wenigen Sekunden.
- Importieren Sie grafana.json, wählen Sie die Prometheus-Datenquelle aus und stellen Sie in der Dashboard-Variable model_name das Modell ein.
- Ergänzen Sie die Alarmregeln aus der Tabelle, jede mit einer
for-Dauer, und prüfen Sie vor jedem vLLM-Upgrade dessen Release Notes auf veraltete Metriken.
Zeit bis zum ersten Token (TTFT) im Produktivbetrieb überwachen
Das TTFT-Histogramm von vLLM misst ab dem Empfang einer Anfrage durch sein Frontend. Steigt die TTFT, zeigen die Wartezeit, vllm:
Richten Sie den Alarm für ein TTFT-Ziel auf den Anteil der Anfragen aus, die es einhalten, statt auf ein Perzentil. Die Prometheus-Dokumentation merkt an, dass Sie bei einem im Voraus bekannten SLO „die festen Bucket-Grenzen eines klassischen Histogramms nutzen könnten, um eine genaue Berechnung zu ermöglichen“. Zu den TTFT-Buckets von vLLM gehören 0,25 s, 0,5 s, 0,75 s, 1 s, 2,5 s und 5 s; legen Sie das Ziel also auf eine dieser Grenzen. Die Rate von vllm:le="1.0", geteilt durch die Rate von vllm:
Die Ausgabegeschwindigkeit je Token überwachen Sie auf dieselbe Weise mit dem Histogramm je Anfrage vllm:
Kapazitätssignale für eine weitere GPU
Lesen Sie vor einem Kauf dieselben Metriken in der Spitzenstunde jedes Arbeitstages ab, nicht als Tagesmittel, und ordnen Sie das Muster zu: Nur zwei der fünf Muster unten verlangen mehr GPU-Speicher oder Rechenleistung.
| MUSTER | VERMUTLICHE GRENZE | ERSTE MASSNAHME |
|---|---|---|
| Rückstau, Cache fast voll | Speicher für den KV-Cache; auch die Verdrängungen steigen | ein FP8-KV-Cache, sofern die Antwortqualität erhalten bleibt, dann mehr GPU-Speicher: eine zweite Karte oder ein weiteres Replikat |
| Rückstau, Cache hat Platz | die Grenzen des Schedulers, max_ oder max_ | die Grenze anheben und die Latenz je Token beobachten, die mit dem Batch wächst |
| TTFT höher, Wartezeit stabil | längere Prompts, mehr Prefill-Arbeit | Prompt-Längen und Treffer im Prefix-Cache; weniger oder kürzere abgerufene Abschnitte |
| Token langsam, kein Rückstau | ein Batch, zu groß für das Geschwindigkeitsziel je Nutzer | max_ je Replikat begrenzen, sodass jeder Stream das Ziel erreicht, dann eine GPU ergänzen |
| Wartend, Grund deferred | LoRA-Budget, KV-Transfer oder blockierter Status in vllm:num_ | Adapter-Limits und Zustand der Connectors, nicht die Hardware |
Unsere Lesart der Metrikdefinitionen von vLLM 0.31.0 und des Optimierungsleitfadens von vLLM; die Maßnahmen sind Vorschläge zum Testen, keine Anweisungen von vLLM.
Bei häufigen Verdrängungen nennt der Optimierungsleitfaden von vLLM Abhilfen von einem höheren Wert für gpu_memory_utilization (standardmäßig 0,92) bis zu mehr Tensor- oder Pipeline-Parallelismus und warnt, dass Verdrängung und Neuberechnung „sich nachteilig auf die Ende-zu-Ende-Latenz auswirken können“. Ein FP8-KV-Cache (--kv-cache-dtype fp8) speichert ein Byte je Wert, wo ein 16-Bit-Cache zwei speichert, sodass derselbe Speicher doppelt so viele Token fasst; führen Sie vorher Ihren Evaluationssatz aus. Wir schlagen vor, die nächste GPU einzuplanen, wenn das erste oder vierte Muster an den meisten Arbeitstagen eines Monats in der Spitzenstunde auftritt, und sie nach dem Token-Durchsatz in der Spitze und der Spitzenzahl laufender plus wartender Anfragen zu dimensionieren.
Deuten die Signale auf mehr Hardware hin, wählen wir die GPU-Server aus, liefern sie und erstellen vor dem Kauf eine TCO-Rechnung gegen Cloud-GPUs. Schicken Sie uns über das Formular unten die Werte für Warteschlange, KV-Cache und Latenz aus Ihren Spitzenstunden.
Prompts und Antworten protokollieren, ohne dass sie abfließen
Serving-Metriken enthalten keine Inhalte von Anfragen, und eigene Labels sollten auch keine hinzufügen. Die Labels von vLLM benennen das Modell, die Engine und Gründe wie den Abschlussgrund, nicht Nutzer, und Prometheus warnt, dass „jede eindeutige Kombination von Schlüssel-Wert-Paaren der Labels eine neue Zeitreihe darstellt“, und rät von Labels wie Nutzer-IDs ab. Die Nutzung je Nutzer oder Abteilung kommt ins Query-Log.
Führen Sie das Query-Log im Gateway oder im Chat-Frontend, der einzigen Komponente, die weiß, wer gefragt hat. Erfassen Sie Nutzer, Zeitpunkt, Modell, Token-Zahlen, Abschlussgrund und eine Request-ID sowie, wo Ihre Richtlinie es verlangt, den Text der Prompts und Antworten, und zwar in einem Speicher, den nur die in Ihrer Richtlinie genannten Personen lesen können, mit einer Aufbewahrungsfrist, die vor dem ersten Eintrag festgelegt ist. Ein Modellserver, der zur Fehlersuche Anfragen protokolliert, kann Prompts in sein Anwendungslog schreiben und in jede Log-Plattform, die dieses Log einsammelt; beschränken Sie das auf Testsysteme. Wie lange der Text aufbewahrt werden darf, ist eine rechtliche Bewertung für Ihre Rechtsabteilung. Unser Leitfaden zu einer privaten ChatGPT-Alternative zeigt, wo das eigene Audit-Log eines Chat-Frontends nicht ausreicht.
vLLM sendet OpenTelemetry-Traces, wenn --otlp-traces-endpoint gesetzt ist; in seinem Beispiel enthält der Span von vLLM „Metadaten über die Anfrage“, und der Prompt-Text steht im Span des Clients. Die GenAI-Konventionen von OpenTelemetry stufen die Attribute für Prompts, Antworten und Systemanweisungen als Opt-In ein und merken an, dass Prompts und Antworten „wahrscheinlich sensible Informationen enthalten, einschließlich Nutzer-/PII-Daten“. Traces, die an einen externen Dienst gehen, tragen jeden aufgezeichneten Inhalt aus dem Unternehmen hinaus. NIM akzeptiert einen Header X-Request-Id als Korrelationskennung und reicht den W3C-Header traceparent weiter, aus dem sein Backend Spans erzeugt, wenn OTEL_
Im Rahmen unserer Leistung Private AI/ML werden Anfragen und Antworten protokolliert, sodass Security und Legal sehen, wer worauf und wie zugreift. Beschreiben Sie im Formular unten, wer dieses Log lesen soll und wie lange Sie es aufbewahren wollen.
OpenTelemetry-GenAI-Konventionen für LLM-Observability
Observability ergänzt die Traces und Logs, die eine einzelne langsame oder falsche Antwort erklären, und die semantischen Konventionen von OpenTelemetry für generative KI geben ihnen einheitliche Namen. Spans tragen gen_ai.operation.name und gen_ai.provider.name als Pflichtattribute und Token-Zahlen in gen_ai.usage.input_tokens und gen_ai.usage.output_tokens. Zu den Metriken gehören gen_
vLLM behält seine eigenen Prometheus-Namen und nutzt OpenTelemetry für das Tracing. Sein Request-Span, llm_request, zählt Token in gen_ai.usage.prompt_tokens und gen_
Was wir tun
Unsere Leistung Private AI/ML übernimmt das Deployment von Modellen on-premise mit vLLM, Ollama oder NVIDIA AI Enterprise und baut die Plattform um sie herum. Sie erhalten ein Query-Log, Daten- und Berechtigungsverwaltung und ein für den Betrieb der Plattform geschultes Team, auf Wunsch mit laufendem Support unter einem vereinbarten SLA, und wir liefern die GPU-Server, wenn die Metriken mehr Kapazität verlangen. Eurokommerz hält den Vertrag, das Engineering kommt von unserem Engineering-Partner Vixen.UNO; das erste Gespräch ist kostenlos, und der Preis des technischen Assessments steht vor Beginn fest. Wie wir während eines Projekts mit Daten umgehen, beschreibt unsere Seite Sicherheit & Compliance.
FAQ
Was sollte LLM-Monitoring bei einem selbst gehosteten Modell abdecken?
Welche vLLM-Metriken sollte Prometheus erfassen?
Gibt es ein Grafana-Dashboard für vLLM?
Wie überwacht man die Zeit bis zum ersten Token (TTFT) im Produktivbetrieb?
Was hat vllm:gpu_cache_usage_perc in vLLM ersetzt?
Sollte LLM-Observability Prompts und Antworten aufzeichnen?
Schicken Sie uns den Modellserver und die Version, die Sie betreiben, wie Sie ihn heute überwachen und welche Latenzziele Ihre Nutzer erwarten. Wir antworten innerhalb eines Werktages mit den nächsten Schritten, beginnend mit einem ersten Gespräch, nach dem Sie zwei oder drei mögliche Lösungsszenarien haben. Das erste Gespräch ist kostenlos.
Mit einem Experten sprechenWir antworten innerhalb eines Werktages