Sari la conținutul principal

Observabilitate

Libre WebUI oferă două căi:

  • loguri structurate locale în stdout/stderr;
  • export OpenTelemetry opțional pentru HTTP, jobs persistente, counters și warning/error.

Niciuna nu trimite telemetrie proiectului Libre. OpenTelemetry este off până la configurarea collectorului. Paginile System și Usage citesc instalația, nu collectorul.

Loguri structurate

LOG_FORMAT=text păstrează consola. Pentru un JSON per linie setați LOG_FORMAT=json:

LOG_LEVEL=info
LOG_FORMAT=json

Fiecare linie are timestamp ISO, nivel/scope, mesaj, correlation id și detalii limitate.

Fiecare HTTP primește X-Request-Id. Un ID primit este acceptat doar cu 8–64 litere, cifre, ., _, -; altfel UUID. Se întoarce și urmărește lucrul async. Access logs păstrează metodă, cale fără query, status și durată, deoarece query poate avea conținut sau credentiale.

LOG_LEVEL: silent, error, warn, info, debug. Debug poate expune detalii; folosiți doar la diagnostic și protejați logurile.

Limita de redactare

Detaliile și telemetria trec prin același helper limitat:

  • câmpuri ca password, secret, token, key, authorization, cookie, credential, bearer, JWT se omit;
  • șiruri la 512 caractere;
  • arrays, nesting și atribute limitate;
  • errors păstrează name și mesaj limitat, nu graph arbitrar.

Este defense in depth, nu permisiune pentru prompturi/secrete. Extensiile trebuie să scrie ID-uri și rezultate, nu bodies, documente, tool results sau payload provider. Limitați accesul și retention.

Activarea OpenTelemetry

Libre exportă OTLP/HTTP JSON direct, fără SDK. Indicați base URL al collectorului:

OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.example.com:4318
OTEL_EXPORTER_OTLP_HEADERS=authorization=Bearer example-collector-token
OTEL_SERVICE_NAME=libre-webui

Se adaugă /v1/traces, /v1/metrics, /v1/logs. OTEL_EXPORTER_OTLP_HEADERS este listă key=value separată prin virgule. Păstrați credentialele ca secrets. Implicit OTEL_SERVICE_NAME are valoarea implicită libre-webui.

Fără endpoint, spans/metrici/loguri sunt no-op. În team, aplicația și workers exportă independent; nume diferit per rol ajută dashboardurile.

Semnale exportate

SemnalCe se înregistrează
HTTP spansMetodă/cale fără query, status, durată, rezultat, request id
HTTP countersCount monoton per metodă/clasă status
Job spansTip, încercare, durată, rezultat
Job countersCount monoton per tip/rezultat
Log recordsWarning/error redactate cu scope și IDs

Spans sunt locale finalizate. Nu se propagă trace parent, nu există arbori între servicii și nu se instrumentează browserul sau fiecare call. Token/media aparțin Usage Analytics și Cost Governance.

Livrare

  • Buffere până la 2.048 spans și 2.048 logs, elimină cel mai vechi sub presiune.
  • Până la 512 serii; flush la circa 5 s; timeout HTTP 3 s.
  • Eroarea collectorului aruncă batchul și nu blochează/nu eșuează cereri sau jobs.

Nu este audit log sau contabilitate. Folosiți security audit append-only, ledger SQL și retention/alerts ale collectorului.

Depanare

Nu ajunge telemetrie. Verificați OTEL_EXPORTER_OTLP_ENDPOINT în procesul exact, doar base URL și suport OTLP/HTTP JSON pe cele trei căi.

Unauthorized. Verificați headerele și authorization=Bearer ...; reporniți după env.

Cererile reușesc când collectorul e jos. Așteptat: fail-open, fără retry persistent.

Câmp lipsă/scurtat. Cheile secrete și valorile lungi/adânci sunt limitate. Logați un ID sigur.

Documentație asociată