Μετάβαση στο κύριο περιεχόμενο

Παρατηρησιμότητα

Το Libre WebUI προσφέρει δύο διαδρομές:

  • δομημένα application logs σε standard output/error·
  • προαιρετικό OpenTelemetry exporter για HTTP, μόνιμες εργασίες, counters και warning/error records.

Καμία δεν στέλνει τηλεμετρία στο έργο Libre. Το OpenTelemetry μένει off μέχρι να ρυθμιστεί collector. Οι σελίδες System και Usage διαβάζουν την εγκατάσταση, όχι collector.

Δομημένα logs

Το LOG_FORMAT=text κρατά το γνώριμο console output. Ορίστε LOG_FORMAT=json για JSON ανά γραμμή:

LOG_LEVEL=info
LOG_FORMAT=json

Κάθε γραμμή έχει ISO timestamp, level/scope, μήνυμα, correlation id αίτησης ή job και bounded details.

Κάθε HTTP παίρνει X-Request-Id. Εισερχόμενο ID γίνεται δεκτό μόνο με 8–64 γράμματα, ψηφία, ., _, -, αλλιώς UUID. Επιστρέφεται και ακολουθεί async work. Τα access logs κρατούν method, path χωρίς query, status και duration επειδή queries μπορεί να έχουν περιεχόμενο ή credentials.

Το LOG_LEVEL δέχεται silent, error, warn, info, debug. Το debug μπορεί να αποκαλύψει λειτουργικά στοιχεία· μόνο για διάγνωση και με προστασία.

Όριο απόκρυψης

Details και telemetry περνούν τον ίδιο bounded helper:

  • ονόματα σαν password, secret, token, key, authorization, cookie, credential, bearer, JWT αφαιρούνται·
  • strings έως 512 χαρακτήρες·
  • arrays, nesting και attributes περιορίζονται·
  • errors κρατούν name και bounded message, όχι αυθαίρετο graph.

Αυτό είναι defense in depth, όχι άδεια για prompt ή secrets. Μικρό user string μπορεί ακόμη να γίνει log. Extensions πρέπει να γράφουν IDs και outcomes, όχι bodies, prompt, έγγραφα, tool results ή provider payload. Περιορίστε πρόσβαση και retention.

Ενεργοποίηση OpenTelemetry

Το Libre εξάγει OTLP/HTTP JSON απευθείας χωρίς SDK. Ορίστε HTTP base URL collector:

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, /v1/logs. Το OTEL_EXPORTER_OTLP_HEADERS είναι comma-separated key=value. Φυλάξτε credentials ως deployment secrets. Προεπιλογή OTEL_SERVICE_NAME είναι libre-webui.

Χωρίς endpoint, spans/metrics/logs είναι no-op και τίποτε δεν φεύγει. Σε team, application και external workers εξάγουν ανεξάρτητα. Διαφορετικό service name ανά ρόλο βοηθά dashboards.

Εξαγόμενα σήματα

ΣήμαΤι καταγράφεται
HTTP server spansMethod/path χωρίς query, status, duration, success/failure, request id
HTTP countersΜονότονο count ανά method και status class
Durable-job spansJob type, attempt, duration, outcome
Durable-job countersΜονότονο execution count ανά type/outcome
Log recordsRedacted warning/error με scope και correlation ids

Τα spans είναι τοπικά ολοκληρωμένα. Δεν διαδίδεται trace parent, δεν χτίζονται δέντρα μεταξύ υπηρεσιών και δεν instrumentείται browser ή κάθε provider call. Token/media ανήκουν στα τοπικά Usage Analytics και Cost Governance.

Συμπεριφορά παράδοσης

Η τηλεμετρία είναι best-effort:

  • buffers έως 2.048 spans και 2.048 logs, drop παλιότερου υπό πίεση·
  • έως 512 counter series·
  • flush περίπου κάθε 5 s·
  • timeout HTTP 3 s·
  • collector error απορρίπτει batch και ποτέ δεν μπλοκάρει αίτημα ή job.

Δεν είναι audit log ή accounting. Χρησιμοποιήστε append-only security audit, SQL usage ledger και retention/alerts του collector.

Αντιμετώπιση προβλημάτων

Δεν φτάνει telemetry. Επιβεβαιώστε OTEL_EXPORTER_OTLP_ENDPOINT στη σωστή διεργασία, μόνο base URL και αποδοχή OTLP/HTTP JSON στις τρεις διαδρομές.

Unauthorized collector. Ελέγξτε comma-separated headers και authorization=Bearer .... Κάντε restart μετά env αλλαγές.

Τα αιτήματα επιτυγχάνουν όταν collector είναι down. Αναμενόμενο: fail-open χωρίς persistence failed batches.

Πεδίο λείπει ή κόπηκε. Secret-like keys αφαιρούνται και μεγάλες/βαθιές τιμές περιορίζονται. Γράψτε ασφαλές ID ή σύνοψη.

Σχετική τεκμηρίωση