Observability
Ada dua jalur: log lokal terstruktur di stdout/stderr dan exporter OpenTelemetry opsional untuk HTTP, durable jobs, counter, serta record warning/error. Tidak ada yang dikirim ke proyek Libre WebUI; tanpa endpoint, OpenTelemetry nonaktif. Sistem dan penggunaan terpisah.
Log terstruktur
LOG_FORMAT=text menghasilkan teks biasa; LOG_FORMAT=json menghasilkan satu JSON per baris:
LOG_LEVEL=info
LOG_FORMAT=json
Setiap record berisi waktu ISO, level/scope, pesan, request/job correlation ID, dan detail terbatas. Setiap permintaan HTTP memiliki X-Request-Id; diterima 8–64 huruf, angka, ., _, -, selain itu UUID. Query string dihapus.
LOG_LEVEL: silent, error, warn, info, debug. Lindungi log debug seperti data.
Batas redaction
Field yang menyerupai password, secret, token, key, authorization, cookie, credential, bearer, atau JWT dihapus; string dibatasi 512 karakter; array, depth, dan attribute juga dibatasi; error hanya menyisakan nama dan pesan pendek. Ini defense in depth, bukan izin mencatat prompt. Catat ID dan hasil, batasi akses dan retensi.
OpenTelemetry
OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.example.com:4318
OTEL_EXPORTER_OTLP_HEADERS=authorization=Bearer example-collector-token
OTEL_SERVICE_NAME=libre-webui
/v1/traces, /v1/metrics, dan /v1/logs ditambahkan ke URL. OTEL_EXPORTER_OTLP_HEADERS adalah daftar key=value yang dipisahkan koma. Simpan secret sebagai deployment secret. OTEL_SERVICE_NAME bawaan libre-webui.
Tanpa endpoint semuanya no-op. Dalam mode team, app dan worker mengekspor secara terpisah.
Sinyal
HTTP span/counter, durable-job span/counter, dan record warning/error yang sudah di-redact dengan correlation ID. Tidak ada propagasi trace parent, tree lintas layanan, atau instrumentasi penuh browser/provider. Token/media usage tersedia di analitik dan biaya lokal.
Pengiriman
Maksimum 2.048 span dan record, 512 series; flush sekitar 5 detik; timeout 3 detik. Error membuang batch tanpa merusak permintaan. Ini bukan audit atau accounting.
Pemecahan masalah
Periksa OTEL_EXPORTER_OTLP_ENDPOINT, tiga path standar, dan authorization=Bearer .... Restart setelah mengubah environment. Permintaan sengaja tetap bekerja saat collector gagal. Field hilang/terpotong disebabkan redaction.