Ga naar hoofdinhoud

Systeemdiagnose en gebruiksanalyse

Libre WebUI biedt beheerders twee live weergaven van de instantie: een pagina Systeem met diagnose van host en runtime en een pagina Gebruik met analyse van model- en providergebruik. Beide zijn in backend en interface alleen voor beheerders. Het lezen van beide pagina's blijft binnen de implementatie; optionele externe telemetrie is een afzonderlijk, door de operator ingesteld pad voor Observeerbaarheid.

Open ze via de beheerdersvermeldingen in de zijbalk, de beheerderssnelkoppelingen in het tabbladmenu of rechtstreeks via /system en /usage. Niet-beheerders kunnen geen van beide pagina's openen en beheerderstabbladen worden gesloten als een aangemeld account de rol admin verliest.

Systeemdiagnose​

De pagina Systeem (/system) meldt:

  • Host: hostnaam, platform, kernelrelease, architectuur, uptime, aantal logische CPU's, CPU-model, gemiddelde belasting en of het proces in een container lijkt te draaien. Er is geen percentage CPU-gebruik; CPU-belasting is alleen de gemiddelde belasting.
  • Runtime: toepassingsversie, Node.js-versie, proces-ID, procesuptime en werkmap.
  • Geheugen: totaal, vrij en gebruikt hostgeheugen plus RSS- en heapwaarden van het proces.
  • Bestandssystemen: capaciteit en gebruik van het runtimebestandssysteem (/) en de gegevensmap (DATA_DIR).
  • Netwerk: interfacenamen en -adressen, met tellers voor ontvangen/verzonden bytes op Linux.
  • Docker: engineversie, hostbesturingssysteem, kernel, CPU en geheugen zoals de engine die meldt, plus containeraantallen en een verkleinde containerlijst wanneer de Docker-socket beschikbaar is.

De pagina wordt elke 30 seconden vernieuwd zolang het tabblad actief is en heeft een knop voor handmatig vernieuwen. Het backendeindpunt is GET /api/system, beveiligd door verificatie, een actieve beheerdersrol en een limiet per gebruiker van 120 verzoeken per 15 minuten. Antwoorden worden nooit gecachet (Cache-Control: no-store) en elk verzoek verzamelt actuele waarden.

Afhankelijkheid van de Docker-socket​

Het Docker-gedeelte bepaalt zijn eindpunt op dezelfde manier als de Work-runtime en interactieve terminal: WORK_DOCKER_SOCKET wanneer ingesteld (altijd een lokaal Unix-socketpad), anders DOCKER_HOST — een unix://-URL of een HTTP-eindpunt zonder TLS via tcp://, zoals een gefilterde Docker API-proxy — en anders /var/run/docker.sock. Eindpunten met ssh:// en npipe://, en tcp:// met ingeschakelde TLS-verificatie, worden bewust niet bevraagd. De verzoeken zijn strikt alleen-lezen GET-aanroepen van de engine (versie, informatie, containerlijst), met een time-out van 4 seconden en begrensde antwoordgrootte; de containerlijst is beperkt tot 100 vermeldingen.

Zonder bruikbare socket werkt de rest van de pagina nog steeds: het Docker-paneel meldt waarom Docker niet beschikbaar is — socket niet gekoppeld, gekoppeld maar onleesbaar, daemon onbereikbaar of extern eindpunt — in plaats van het hele verzoek te laten mislukken.

Wat de pagina toont en aan wie​

De containerlijst is bewust beperkt tot korte ID, naam, image, status en aanmaaktijd. Omgevingsvariabelen, labels, mounts, containeropdrachten en inspectiepayloads worden nooit opgenomen en nergens in het antwoord staan referenties.

De pagina toont wel echte infrastructuurdetails: hostnaam, werkmap, interne IP-adressen en namen en images van elke container op de Docker-host, niet alleen die van Libre WebUI. Dat past bij het vertrouwensmodel: in een Docker-implementatie is elke Libre WebUI-beheerder feitelijk al hostbeheerder (zie Docker). Ken de rol admin dienovereenkomstig toe.

Gebruiksanalyse​

De pagina Gebruik brengt aan gebruikers toegeschreven model- en providerwerk in kaart. Meting vindt plaats bij elke ondersteunde uitvoeringsgrens en omvat momenteel:

  • lokale Ollama-chataanroepen, waaronder eigen Chat- en door Ollama ondersteunde Work-aanroepen;
  • chataanroepen via geïnstalleerde agent-CLI's en aanroepen van de Strands-engine;
  • chats via plugins, met en zonder streaming;
  • embeddings, beeldgeneratie, spraak-naar-tekst, tekst-naar-spraak, geluid en video via plugins; en
  • Work-aanroepen via plugins.

Achtergrondbewerkingen zonder eigenaar worden bewust niet aan een synthetisch account toegewezen en daarom niet gemeten. Een aanroep wordt ook vastgelegd wanneer die mislukt of wordt geannuleerd.

Elke gebeurtenis bewaart:

  • provider-/plugin-ID en een momentopname van de weergavenaam (ollama en agent-cli:* gebruiken hetzelfde logboek als pluginproviders)
  • mogelijkheid (chat, embedding, image, stt, tts, audio, video)
  • model
  • status: success, error of cancelled (een afgebroken stream telt als geannuleerd)
  • tokenaantallen, alleen als de provider gebruiksmetagegevens heeft geretourneerd
  • tellers die bij de mogelijkheid passen (tekens voor TTS, afbeeldingen, embeddinginvoer, taken voor video, bytes voor audio)
  • totale duur en tijdstempel
  • ID van de aanvragende gebruiker

Verder wordt niets opgeslagen. Prompts, antwoorden, providereindpunten, referenties en providerfoutbody's worden nooit naar de gebruikstabel geschreven — een mislukte aanroep wordt alleen als status = 'error' vastgelegd. De gebeurtenissen staan in de geselecteerde toepassingsdatabase (SQLite in solomodus, PostgreSQL in teammodus) en worden 400 dagen bewaard; oudere rijen worden opportunistisch bij schrijven verwijderd, maximaal eenmaal per dag. Meting is bewust op basis van beste inspanning en kan nooit een model- of providerverzoek laten mislukken.

De pagina biedt bereiken van 7, 30 en 90 dagen via één eindpunt alleen voor beheerders, GET /api/plugins/usage?days=<1..365> (standaard 30). De pagina toont totale aanroepen, gemelde tokens, succespercentage, gemiddelde latentie en het aandeel aanroepen dat tokengebruik meldde. De pagina lezen is alleen-lezen en gebruikt het bestaande gebruiksgrootboek van de deployment.

Agentgebruik​

Het gedeelte Agents bovenaan (Aanroepen van CLI-agents en de Strands-engine) toont Claude Code, Codex, OpenCode, Pi en Strands afzonderlijk. Het bevat aanroepen, gemelde tokens, mislukte of geannuleerde aanroepen, gemiddelde duur en maximaal 20 meestgebruikte modellen per agent. Agenttotalen omvatten alle passende aanroepen in de gekozen periode, onafhankelijk van de weergavelimieten van de grotere provider- en modeltabellen. Het zijn onderdelen van de paginatotalen, geen aanvullende factureerbare gebeurtenissen.

Een agent zonder records toont Geen geregistreerde aanroepen in deze periode. Dit zegt niet of de CLI geïnstalleerd of aangemeld is. Aanroepen zonder tokenmetadata tonen Tokens niet gerapporteerd; ontbrekende tellers worden niet geschat. De zichtbare pagina vernieuwt elke 20 seconden en biedt handmatig vernieuwen.

CLI-gebruik registreert één aanroep en de door de CLI gemelde tokentellers. Cumulatieve snapshots vervangen eerdere snapshots; herhaalde rapporten per stap worden ontdubbeld. Cache- en redeneertellers worden volgens het betreffende CLI-protocol gecombineerd zonder subsets dubbel te tellen. Geannuleerde aanroepen en gedeeltelijke antwoorden met een mislukte afsluiting behouden hun echte resultaat.

Strands-aanroepen worden toegeschreven aan de agent Strands. De engine heeft geen eigen modelprovider; elke modelaanroep die hij doet, loopt via de Ollama- of pluginproviders van Libre WebUI. Aanroepen buiten LWUI worden niet geïmporteerd. Oudere records zonder tokentellers blijven ongemeten.

Het eindpunt levert deze begrensde uitsplitsing in agents, met alle vijf ondersteunde namen ook wanneer de tellers nul zijn. Lezen ontdekt geen CLI-modellen, start geen agents en benadert geen providers. Oudere servers zonder dit veld kunnen geregistreerde agents uit hun provideroverzicht tonen; ontbrekende vermeldingen op zulke servers worden niet als bevestigd nulgebruik weergegeven.

Modellen en providers verkennen​

Modelkleuren verbinden de daggrafiek, de jaarlijkse activiteitenkalender, de modeltabel en de providerbalken. Naast de kleuren staan modelnamen, waarden en selectie-indicatoren. De activiteitenkalender beslaat altijd de laatste 365 dagen, los van het gekozen bereik; de kleur van elke dag duidt het meest gebruikte model aan.

De daggrafiek wisselt tussen Aanroepen en Tokens. Beweeg de muis over een model in de legenda of geef het toetsenbordfocus om de lijn van dat model te volgen. Selecteer het model om het gemarkeerd te houden, selecteer het nogmaals om dat los te laten, of kies Alle modellen tonen om terug te zetten. Ook de modeltabel biedt een markeeractie. Markeren verandert alleen de nadruk en laat dagtotalen, tabelwaarden en providertotalen intact.

Beweeg de aanwijzer over de grafiek of gebruik Dagelijks gebruik bekijken om het totaal van een dag en de verdeling per model te bekijken. De dagschuifregelaar werkt met het toetsenbord: pijltoetsen verspringen per dag, Home/End gaan naar de eerste en laatste dag. Dagbuckets en hun labels gebruiken UTC.

Standaard toont de grafiek de twaalf modelnamen met de meeste aanroepen in de gekozen periode, ook in de tokenweergave. Elk model blijft afzonderlijk inspecteerbaar: focus of selecteer een model in de tabel of in de providerdetails om zijn exacte daglijn te laden, ook buiten die twaalf. Een laadmelding noemt het opgevraagde model terwijl de geschiedenis wordt opgehaald.

De lijn van een extra model wordt gescheiden van Overige modellen, en de resterende groep telt de aanroepen, gemelde tokens en fouten daarvan niet mee. De grafiek bevat hoogstens dertien benoemde modellijnen plus de resterende groep, en hun dagwaarden sluiten nog steeds aan op dezelfde totalen. Kies Alle modellen tonen om terug te keren naar de standaardweergave.

Daglijnen voegen aanroepen met dezelfde vastgelegde modelnaam over providers heen samen. De modeltabel houdt provider/model-regels apart, zodat hetzelfde model onder meer dan één provider kan staan. Benoemde modellen houden eigen kleuren in de tabel en de providerbalken, ook modellen buiten de standaardgrafiek.

Providerdetails tonen het aandeel verzoeken per provider, een balk verdeeld per model, gemelde tokens, mislukte of geannuleerde aanroepen en de gemiddelde responstijd. De verdeling van mogelijkheden blijft beschikbaar onder de model- en provideruitsplitsingen.

Tokentotalen omvatten alleen aanroepen waarvoor de provider gebruiksmetagegevens meldde. Het dekkingspercentage maakt gedeeltelijke rapportage zichtbaar; ontbrekende tokenaantallen worden nooit geschat uit verzoeken of uit een ander model. Een periode zonder gemelde tokens toont een uitleg in de weergave Tokens, en de verzoekgeschiedenis blijft beschikbaar in Aanroepen.

Het eindpunt bevat dagelijkse modelpunten in modelSeries. Een optionele queryparameter model vraagt één exact vastgelegde modelnaam op naast de standaard twaalf, bijvoorbeeld GET /api/plugins/usage?days=30&model=<encoded-model-name>. Dit is hetzelfde eindpunt alleen voor beheerders en alleen-lezen: het bevraagt het lokale gebruiksgrootboek en roept nooit een modelprovider aan om geschiedenis op te halen.

Een optionele parameter to legt de eindgrens van het verzoek vast op een Unix-tijdstempel in milliseconden. Hij vereist model en accepteert alleen een niet-negatief veilig geheel getal dat niet later is dan de huidige servertijd. De browser stuurt de range.to van het overzicht bij het laden van een afzonderlijk model, behoudt daarmee de UTC-dag- en jaargrenzen en sluit aanroepen na dat tijdstempel uit. Zonder to gebruikt het eindpunt de huidige tijd.

Een model laden laat de kaarten, tabel, providertotalen en kleuren van het overzicht ongewijzigd. De daglijn wordt alleen toegevoegd wanneer de tijdgrenzen en dagtotalen van het antwoord bij dat overzicht passen. De tijdgrens bevriest de database niet: veranderen historische aanvullingen of verwijderingen die totalen, dan vernieuwt de browser eerst het overzicht voordat de modellijn verschijnt.

Laat een oudere server modelSeries weg, dan toont de grafiek de samengevoegde reeks Alle modellen met een uitleg dat de modeluitsplitsing niet beschikbaar is. De modeltabel blijft beschikbaar; de browser leidt geen dagelijkse modelgeschiedenis af uit periodetotalen of de jaarkalender.

Er is geen schakelaar om meting uit te schakelen. Omdat de gegevens over accounts worden samengevoegd, mogen alleen beheerders ze bekijken.

De pagina Gebruik meldt aanroepen, eenheden, tokens, latentie en uitkomsten. Voeg Kostenbeheer toe wanneer deze gebeurtenissen tarieven met ingangsdatum, uitsplitsingen van uitgaven, budgetten, waarschuwingen of boekhoudkundige export vereisen. Gebeurtenissen zonder passend tarief of door de provider gemeld gebruik blijven zichtbaar ongeprijsd in plaats van als gratis te worden beschouwd.

OpenRouter-toeschrijving​

Sinds 0.18.0 identificeren verzoeken aan OpenRouter de toepassing via de app-toeschrijvingsheaders van OpenRouter (HTTP-Referer: https://librewebui.org, een toepassingstitel en categorieaanwijzingen). Deze headers worden alleen verzonden wanneer het verzoek naar https://openrouter.ai zelf gaat — nooit naar een aangepaste of zelfgehoste route — en voegen niets toe aan wat lokaal wordt opgeslagen.

Gerelateerde documentatie​