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
| Semnal | Ce se înregistrează |
|---|---|
| HTTP spans | Metodă/cale fără query, status, durată, rezultat, request id |
| HTTP counters | Count monoton per metodă/clasă status |
| Job spans | Tip, încercare, durată, rezultat |
| Job counters | Count monoton per tip/rezultat |
| Log records | Warning/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.