All checks were successful
Release / Test backend (push) Successful in 40s
Release / Check ui (push) Successful in 1m5s
Release / Docker / caddy (push) Successful in 1m9s
Release / Docker / backend (push) Successful in 3m14s
Release / Docker / runner (push) Successful in 4m7s
Release / Upload source maps (push) Successful in 2m11s
Release / Docker / ui (push) Successful in 2m23s
Release / Gitea Release (push) Successful in 40s
- Add @grafana/faro-web-sdk to UI; wire initializeFaro in hooks.client.ts gated on PUBLIC_FARO_COLLECTOR_URL (no-op in dev) - Add Grafana Alloy service (faro.receiver) to homelab compose; Faro endpoint → alloy:12347 (faro.libnovel.cc via cloudflared) - Add PUBLIC_FARO_COLLECTOR_URL env var to docker-compose.yml UI service - Add Web Vitals dashboard (web-vitals.json): LCP/INP/CLS/TTFB/FCP p75 stats + LCP/TTFB time-series + Faro exception logs from Loki - Fix runner.json: strip libnovel_ prefix from all metric names - Fix backend.json: replace 5 dead http_client_* panels with spanmetrics-based equivalents (Request Rate by Span Name + Latency by Span Name p95) - Fix OTel collector: add service.telemetry.metrics.address: 0.0.0.0:8888 so Prometheus can scrape collector self-metrics - Add Grafana link to admin nav external tools; add admin_nav_grafana message key to all 5 locale files; recompile paraglide
72 lines
1.5 KiB
YAML
72 lines
1.5 KiB
YAML
# OTel Collector config
|
|
#
|
|
# Receivers: OTLP (gRPC + HTTP) from backend, ui, runner
|
|
# Processors: batch for efficiency, resource detection for host metadata
|
|
# Exporters: Tempo (traces), Prometheus (metrics), Loki (logs)
|
|
|
|
receivers:
|
|
otlp:
|
|
protocols:
|
|
grpc:
|
|
endpoint: 0.0.0.0:4317
|
|
http:
|
|
endpoint: 0.0.0.0:4318
|
|
|
|
processors:
|
|
batch:
|
|
timeout: 5s
|
|
send_batch_size: 512
|
|
|
|
# Attach host metadata to all telemetry
|
|
resourcedetection:
|
|
detectors: [env, system]
|
|
timeout: 5s
|
|
|
|
exporters:
|
|
# Traces → Tempo
|
|
otlp/tempo:
|
|
endpoint: tempo:4317
|
|
tls:
|
|
insecure: true
|
|
|
|
# Metrics → Prometheus (remote write)
|
|
prometheusremotewrite:
|
|
endpoint: "http://prometheus:9090/api/v1/write"
|
|
tls:
|
|
insecure_skip_verify: true
|
|
|
|
# Logs → Loki (via OTLP HTTP endpoint)
|
|
otlphttp/loki:
|
|
endpoint: "http://loki:3100/otlp"
|
|
tls:
|
|
insecure: true
|
|
|
|
# Collector self-observability (optional debug)
|
|
debug:
|
|
verbosity: basic
|
|
|
|
extensions:
|
|
health_check:
|
|
endpoint: 0.0.0.0:13133
|
|
pprof:
|
|
endpoint: 0.0.0.0:1777
|
|
|
|
service:
|
|
extensions: [health_check, pprof]
|
|
telemetry:
|
|
metrics:
|
|
address: 0.0.0.0:8888
|
|
pipelines:
|
|
traces:
|
|
receivers: [otlp]
|
|
processors: [resourcedetection, batch]
|
|
exporters: [otlp/tempo]
|
|
metrics:
|
|
receivers: [otlp]
|
|
processors: [resourcedetection, batch]
|
|
exporters: [prometheusremotewrite]
|
|
logs:
|
|
receivers: [otlp]
|
|
processors: [resourcedetection, batch]
|
|
exporters: [otlphttp/loki]
|