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_HOSTunix:// 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 nativer Chats und Ollama-Work;
  • installierte Agent-CLI-Chataufrufe;
  • pluginbasierte Chats mit und ohne Streaming;
  • pluginbasierte Embeddings, Bilder, Sprache-zu-Text, Text-zu-Sprache, Audio und Video; sowie
  • pluginbasierte 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 Momentaufnahme des Anzeigenamens (ollama und agent-cli:* nutzen dasselbe Ledger)
  • Fähigkeit (chat, embedding, image, stt, tts, audio, video)
  • Modell
  • Status success, error oder cancelled (abgebrochener Stream ist abgebrochen)
  • Tokenzahlen nur bei gemeldeten Nutzungsmetadaten
  • passende Einheiten (TTS-Zeichen, Bilder, Embedding-Eingaben, Videojobs, Audiobytes)
  • Gesamtdauer und Zeitstempel
  • Benutzer-ID

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, Tagesdiagramm, Modelltabelle, Plugin-Anteile und Fähigkeitenmix. Tokenwerte enthalten nur gemeldete Nutzung.

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