Khả năng quan sát
Có hai đường: log local có cấu trúc trên stdout/stderr và exporter OpenTelemetry tùy chọn cho HTTP, durable jobs, counter cùng record warning/error. Không gì được gửi đến dự án Libre WebUI; không có endpoint thì OpenTelemetry tắt. Hệ thống và sử dụng tách riêng.
Log có cấu trúc
LOG_FORMAT=text tạo text thường; LOG_FORMAT=json tạo một JSON mỗi dòng:
LOG_LEVEL=info
LOG_FORMAT=json
Mỗi record chứa thời gian ISO, level/scope, message, request/job correlation ID và detail bounded. Mỗi HTTP request có X-Request-Id; chấp nhận 8–64 chữ, số, ., _, -, nếu không dùng UUID. Query string bị bỏ.
LOG_LEVEL: silent, error, warn, info, debug. Bảo vệ debug log như dữ liệu.
Giới hạn redaction
Field giống password, secret, token, key, authorization, cookie, credential, bearer hoặc JWT bị bỏ; string giới hạn 512 ký tự; array, depth, attribute cũng bounded; error chỉ giữ name và message ngắn. Đây là defense in depth, không phải quyền log prompt. Log ID và outcome, giới hạn access và retention.
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 và /v1/logs được thêm vào URL. OTEL_EXPORTER_OTLP_HEADERS là danh sách key=value phân tách bằng dấu phẩy. Lưu secret như deployment secret. OTEL_SERVICE_NAME mặc định libre-webui.
Không endpoint thì mọi thứ no-op. Trong mode team, app và worker xuất riêng.
Tín hiệu
HTTP span/counter, durable-job span/counter và record warning/error đã redact với correlation ID. Không có propagation trace parent, tree liên dịch vụ hay instrument đầy đủ browser/provider. Token/media usage có trong phân tích và chi phí local.
Phân phối
Tối đa 2.048 span/record, 512 series; flush khoảng 5 giây; timeout 3 giây. Error bỏ batch mà không hỏng request. Đây không phải audit hay accounting.
Khắc phục sự cố
Kiểm tra OTEL_EXPORTER_OTLP_ENDPOINT, ba path chuẩn và authorization=Bearer .... Restart sau khi đổi environment. Request cố ý vẫn hoạt động khi collector lỗi. Field thiếu/bị cắt do redaction.