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
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import * as Sentry from '@sentry/sveltekit';
|
|
import { env } from '$env/dynamic/public';
|
|
import { initializeFaro, getWebInstrumentations } from '@grafana/faro-web-sdk';
|
|
|
|
// Sentry / GlitchTip client-side error tracking.
|
|
// No-op when PUBLIC_GLITCHTIP_DSN is unset (e.g. local dev).
|
|
if (env.PUBLIC_GLITCHTIP_DSN) {
|
|
Sentry.init({
|
|
dsn: env.PUBLIC_GLITCHTIP_DSN,
|
|
tracesSampleRate: 0.1,
|
|
// Must match the release name used when uploading source maps in CI
|
|
// (BUILD_VERSION injected by Dockerfile as PUBLIC_BUILD_VERSION).
|
|
release: env.PUBLIC_BUILD_VERSION || undefined
|
|
});
|
|
}
|
|
|
|
// Grafana Faro RUM — browser performance monitoring (Web Vitals, traces, errors).
|
|
// No-op when PUBLIC_FARO_COLLECTOR_URL is unset (e.g. local dev).
|
|
if (env.PUBLIC_FARO_COLLECTOR_URL) {
|
|
initializeFaro({
|
|
url: env.PUBLIC_FARO_COLLECTOR_URL,
|
|
app: {
|
|
name: 'libnovel-ui',
|
|
version: env.PUBLIC_BUILD_VERSION || 'dev',
|
|
environment: 'production'
|
|
},
|
|
instrumentations: [
|
|
// Core Web Vitals (LCP, CLS, INP, TTFB, FCP) + JS errors + console
|
|
...getWebInstrumentations({ captureConsole: false })
|
|
]
|
|
});
|
|
}
|
|
|
|
export const handleError = Sentry.handleErrorWithSentry();
|