Zum Hauptinhalt springen

Systemdiagnose und Nutzungsanalyse

Libre WebUI bietet Administratoren zwei Live-Ansichten der Instanz: System für Host- und Laufzeitdiagnose sowie Nutzung für Modell- und Anbieteranalyse. Beide sind in Backend und Oberfläche nur für Administratoren zugänglich. Das Lesen bleibt innerhalb der Bereitstellung; optionale externe Telemetrie ist ein separater, betreiberkonfigurierter Pfad der Beobachtbarkeit.

Du erreichst sie über Administratoreinträge, Kurzbefehle oder direkt unter /system und /usage. Andere Benutzer können sie nicht öffnen; Registerkarten schließen, wenn ein Konto die Rolle admin verliert.

Systemdiagnose​

Die Systemseite (/system) zeigt:

  • Host: Name, Plattform, Kernelversion, Architektur, Laufzeit, logische CPUs, CPU-Modell, Lastmittel und mögliche Containerisierung. Eine CPU-Auslastung in Prozent gibt es nicht; angezeigt wird nur das Lastmittel.
  • Laufzeit: Anwendungs- und Node.js-Version, Prozess-ID, Prozesslaufzeit und Arbeitsverzeichnis.
  • Speicher: gesamter, freier und verwendeter Hostspeicher sowie RSS und Heap.
  • Dateisysteme: Kapazität und Nutzung des Laufzeitdateisystems (/) und Datenverzeichnisses (DATA_DIR).
  • Netzwerk: Schnittstellennamen und Adressen, unter Linux mit empfangenen und gesendeten Bytes.
  • Docker: Engine-Version, Host-Betriebssystem, Kernel, CPU und Speicher laut Engine sowie Containerzahlen und reduzierte Liste, wenn der Socket verfügbar ist.

Die Seite aktualisiert sich bei fokussierter Registerkarte alle 30 Sekunden und hat eine manuelle Schaltfläche. Der Endpunkt GET /api/system ist durch Authentifizierung, aktive Administratorrolle und 120 Anfragen je Benutzer in 15 Minuten geschützt. Antworten werden nie gecacht (Cache-Control: no-store), jede Anfrage liest neue Werte.

Docker-Socket-Abhängigkeit​

Der Endpunkt wird wie bei Work und Terminal aufgelöst: WORK_DOCKER_SOCKET, wenn gesetzt (immer lokaler Unix-Pfad), andernfalls DOCKER_HOST – unix:// oder ein unverschlüsselter tcp://-HTTP-Endpunkt wie ein gefilterter Proxy – und zuletzt /var/run/docker.sock. ssh://, npipe:// und tcp:// mit TLS-Prüfung werden bewusst nicht abgefragt. Es werden ausschließlich schreibgeschützte Engine-GETs (Version, Info, Liste) mit 4 Sekunden Zeitlimit und begrenzter Antwortgröße ausgeführt; die Liste ist auf 100 Einträge beschränkt.

Ohne nutzbaren Socket funktioniert der Rest: Das Docker-Panel erklärt, ob er nicht gemountet, unlesbar, der Daemon nicht erreichbar oder der Endpunkt remote ist.

Sichtbare Informationen und Empfänger​

Die Liste enthält absichtlich nur kurze ID, Name, Image, Status und Erstellungszeit. Umgebungsvariablen, Labels, Mounts, Befehle, Inspect-Nutzlasten und Anmeldedaten sind nie enthalten.

Trotzdem zeigt die Seite echte Infrastrukturdetails: Hostname, Arbeitsverzeichnis, interne IPs und alle Container des Docker-Hosts, nicht nur Libre WebUI. Das entspricht dem Vertrauensmodell: Jeder Libre WebUI-Administrator ist bei Docker praktisch Hostadministrator (siehe Docker). Vergib admin entsprechend.

Nutzungsanalyse​

Die Nutzungsseite stellt benutzerzugeordnete Modell- und Anbieterarbeit dar. Die Messung erfolgt an jeder unterstützten Ausführungsgrenze und umfasst:

  • lokale Ollama-Chataufrufe einschließlich nativem Chat und Ollama-gestütztem Work;
  • Chataufrufe installierter Agenten-CLIs und Aufrufe der Strands-Engine;
  • Plugin-gestützter Chat mit und ohne Streaming;
  • Plugin-Embeddings, Bilderzeugung, Sprachtranskription, Sprachausgabe, Audio und Video;
  • und Plugin-gestützte Work-Aufrufe.

Hintergrundvorgänge ohne Eigentümer werden keinem künstlichen Konto zugeordnet und nicht gemessen. Fehlgeschlagene oder abgebrochene Aufrufe werden dennoch erfasst.

Jedes Ereignis speichert:

  • Anbieter-/Plugin-ID und Snapshot des Anzeigenamens (ollama und agent-cli:* nutzen dasselbe Ledger wie Plugin-Anbieter)
  • Fähigkeit (chat, embedding, image, stt, tts, audio, video)
  • Modell
  • Status: success, error oder cancelled (ein abgebrochener Stream zählt als abgebrochen)
  • Token-Zähler nur bei vom Anbieter gelieferten Nutzungsmetadaten
  • Zur Fähigkeit passende Einheitenzähler (Zeichen bei TTS, Bilder, Embedding-Eingaben, Videojobs und Audiobytes)
  • Gesamtdauer und Zeitstempel
  • ID des anfragenden Benutzers

Nichts anderes wird gespeichert. Prompts, Antworten, Endpunkte, Anmeldedaten und Fehler-Bodies gelangen nie in die Nutzungstabelle – ein Fehler wird nur als status = 'error' erfasst. Ereignisse liegen in der ausgewählten Datenbank (SQLite im Einzel-, PostgreSQL im Teammodus) und bleiben 400 Tage; ältere Zeilen werden beim Schreiben höchstens einmal täglich entfernt. Die Messung erfolgt nach bestem Bemühen und kann Anfragen nie fehlschlagen lassen.

Die Seite bietet 7, 30 und 90 Tage über GET /api/plugins/usage?days=<1..365> (Standard 30). Sie zeigt Gesamtaufrufe, gemeldete Tokens, Erfolgsquote, mittlere Latenz und den Anteil der Aufrufe mit gemeldeter Tokennutzung. Das Lesen der Seite ist rein lesend und nutzt das vorhandene Nutzungsjournal der Bereitstellung.

Agentennutzung​

Der obere Abschnitt Agenten (Aufrufe von CLI-Agenten und der Strands-Engine) zeigt Claude Code, Codex, OpenCode, Pi und Strands getrennt. Er enthält Aufrufe, gemeldete Tokens, fehlgeschlagene oder abgebrochene Aufrufe, Durchschnittsdauer und bis zu 20 meistgenutzte Modelle je Agent. Agentensummen erfassen alle passenden Aufrufe im Zeitraum unabhängig von den Anzeigegrenzen der größeren Anbieter- und Modelltabellen. Sie sind Teilmengen der Seitensummen, keine zusätzlichen abrechenbaren Ereignisse.

Ein Agent ohne Datensätze zeigt Keine aufgezeichneten Aufrufe in diesem Zeitraum. Dies sagt nichts darüber aus, ob seine CLI installiert oder angemeldet ist. Fehlen Token-Metadaten, steht dort Keine Tokens gemeldet; fehlende Zähler werden nicht geschätzt. Die Seite aktualisiert sich sichtbar alle 20 Sekunden und bietet manuelles Aktualisieren.

CLI-Nutzung erfasst eine Invocation und die von ihr gemeldeten Token-Zähler. Kumulative Snapshots ersetzen ältere, wiederholte Schrittberichte werden dedupliziert. Cache- und Reasoning-Zähler werden gemäß dem jeweiligen CLI-Protokoll kombiniert, ohne Teilmengen doppelt zu zählen. Abgebrochene Aufrufe und Teilantworten mit erfolglosem Abschluss behalten ihren tatsächlichen Ausgang.

Strands-Aufrufe werden dem Agenten Strands zugeordnet. Die Engine hat keinen eigenen Modellanbieter; jeder ihrer Modellaufrufe läuft über die Ollama- oder Plugin-Anbieter von Libre WebUI. Aufrufe außerhalb LWUI werden nicht importiert. Alte Datensätze ohne Token-Zähler bleiben ungemessen.

Der Endpunkt stellt diese begrenzte Aufschlüsselung in agents bereit, einschließlich aller fünf unterstützten Namen bei null Aufrufen. Die Abfrage entdeckt keine CLI-Modelle, startet keine Agenten und kontaktiert keine Anbieter. Ältere Server ohne dieses Feld können aufgezeichnete Agenten aus der Anbieterübersicht anzeigen. Fehlende Agenteneinträge gelten dort nicht als bestätigte Nullnutzung.

Modelle und Anbieter erkunden​

Modellfarben verbinden Tagesdiagramm, Jahresaktivitätskalender, Modelltabelle und Anbieterbalken; Namen, Werte und Auswahlanzeigen begleiten die Farben. Der Aktivitätskalender umfasst stets die letzten 365 Tage, unabhängig vom gewählten Zeitraum; die Farbe jedes Tages nennt sein meistgenutztes Modell.

Das Tagesdiagramm wechselt zwischen Aufrufe und Token. Zeige auf ein Modell in der Legende oder gib ihm den Tastaturfokus, um seine Linie nachzuzeichnen; auswählen hält sie hervorgehoben, erneutes Auswählen löst sie, Alle Modelle anzeigen setzt zurück. Auch die Modelltabelle bietet eine Hervorhebung. Hervorheben ändert nur die Betonung und bewahrt Tagessummen, Tabellenwerte und Anbietersummen.

Bewege den Zeiger über das Diagramm oder nutze Tägliche Nutzung erkunden, um Tagessumme und Modellaufteilung zu prüfen. Der Tagesregler ist tastaturbedienbar: Pfeiltasten wechseln Tage, Pos1/Ende erreichen ersten und letzten Tag. Tagesintervalle und ihre Beschriftungen nutzen UTC.

Standardmäßig zeigt das Diagramm die 12 nach Aufrufen häufigsten Modellnamen des Zeitraums, auch in der Tokenansicht. Jedes Modell bleibt einzeln prüfbar: Fokussiere oder wähle es in der Tabelle oder in den Anbieterdetails, um seine exakte Tageslinie zu laden, selbst außerhalb dieser 12. Eine Lademeldung nennt das angeforderte Modell, während sein Verlauf geholt wird.

Die Linie eines zusätzlichen Modells ist von Weitere Modelle getrennt, und die Restgruppe schließt dessen Aufrufe, gemeldete Tokens und Fehler aus. Das Diagramm enthält höchstens 13 benannte Modelllinien plus Restgruppe, deren Tageswerte weiterhin zu denselben Summen passen. Alle Modelle anzeigen kehrt zur Standardansicht zurück.

Tageslinien fassen Aufrufe mit demselben erfassten Modellnamen über Anbieter hinweg zusammen. Die Modelltabelle behält getrennte Anbieter/Modell-Einträge, sodass dasselbe Modell unter mehreren Anbietern erscheinen kann. Benannte Modelle behalten eigene Farben in Tabelle und Anbieterbalken, auch außerhalb des Standarddiagramms.

Anbieterdetails zeigen den Anfragenanteil je Anbieter, einen nach Modell geteilten Balken, gemeldete Tokens, fehlgeschlagene oder abgebrochene Aufrufe und die mittlere Antwortzeit. Der Fähigkeitenmix bleibt unterhalb der Modell- und Anbieteraufschlüsselung verfügbar.

Tokensummen enthalten nur Aufrufe mit gemeldeten Nutzungsmetadaten. Der Abdeckungsprozentsatz macht Teilmeldungen sichtbar; fehlende Tokenwerte werden nie aus Anfragen oder einem anderen Modell geschätzt. Ein Zeitraum ohne gemeldete Tokens zeigt in der Tokenansicht eine Erklärung, sein Anfragenverlauf bleibt unter Aufrufe verfügbar.

Der Endpunkt liefert tägliche Modellpunkte in modelSeries. Ein optionaler Abfrageparameter model fordert genau einen erfassten Modellnamen zusätzlich zu den Top 12 an, etwa GET /api/plugins/usage?days=30&model=<encoded-model-name>. Es ist derselbe rein lesende Administrator-Endpunkt: Er fragt das lokale Nutzungsjournal ab und ruft nie einen Modellanbieter für Verlaufsdaten auf.

Ein optionaler Parameter to setzt die Endgrenze der Anfrage auf einen Unix-Zeitstempel in Millisekunden. Er verlangt model und akzeptiert nur eine nichtnegative sichere Ganzzahl, die nicht nach der aktuellen Serverzeit liegt. Der Browser sendet beim Laden eines einzelnen Modells das range.to der Übersicht, bewahrt deren UTC-Tages- und Jahresgrenzen und schließt spätere Aufrufe aus. Ohne to nutzt der Endpunkt die aktuelle Zeit.

Das Laden eines Modells lässt Karten, Tabelle, Anbietersummen und Farben der Übersicht unverändert. Seine Tageslinie wird nur ergänzt, wenn Zeitgrenzen und Tagessummen der Antwort zu dieser Übersicht passen. Die Zeitgrenze friert die Datenbank nicht ein: Ändern historische Nachträge oder Löschungen diese Summen, aktualisiert der Browser die Übersicht vor der Modelllinie.

Lässt ein älterer Server modelSeries weg, zeigt das Diagramm die Gesamtreihe Alle Modelle mit dem Hinweis, dass die Modellaufschlüsselung fehlt. Die Modelltabelle bleibt verfügbar; der Browser leitet den täglichen Modellverlauf nicht aus Zeitraumsummen oder dem Jahreskalender ab.

Es gibt keinen Schalter zum Deaktivieren. Da Daten kontoübergreifend aggregiert werden, ist die Ansicht Administratoren vorbehalten.

Die Seite meldet Aufrufe, Einheiten, Tokens, Latenz und Ergebnisse. Ergänze Kosten-Governance, wenn zeitabhängige Tarife, Aufschlüsselungen, Budgets, Warnungen oder Buchhaltungsexporte nötig sind. Ereignisse ohne Tarif oder gemeldete Nutzung bleiben sichtbar unbepreist statt kostenlos zu gelten.

OpenRouter-Zuordnung​

Seit 0.18.0 identifizieren OpenRouter-Anfragen die Anwendung mit Zuordnungsheadern (HTTP-Referer: https://librewebui.org, Anwendungstitel und Kategorien). Sie werden nur an https://openrouter.ai selbst gesendet, nie an benutzerdefinierte oder selbst gehostete Routen, und ändern lokale Daten nicht.

Verwandte Dokumentation​