Files
web/apps/scandic-web/instrumentation.ts
Joakim Jäderberg fa63b20ed0 Merged in feature/redis (pull request #1478)
Distributed cache

* cache deleteKey now uses an options object instead of a lonely argument variable fuzzy

* merge

* remove debug logs and cleanup

* cleanup

* add fault handling

* add fault handling

* add pid when logging redis client creation

* add identifier when logging redis client creation

* cleanup

* feat: add redis-api as it's own app

* feature: use http wrapper for redis

* feat: add the possibility to fallback to unstable_cache

* Add error handling if redis cache is unresponsive

* add logging for unstable_cache

* merge

* don't cache errors

* fix: metadatabase on branchdeploys

* Handle when /en/destinations throws
add ErrorBoundary

* Add sentry-logging when ErrorBoundary catches exception

* Fix error handling for distributed cache

* cleanup code

* Added Application Insights back

* Update generateApiKeys script and remove duplicate

* Merge branch 'feature/redis' of bitbucket.org:scandic-swap/web into feature/redis

* merge


Approved-by: Linus Flood
2025-03-14 07:54:21 +00:00

55 lines
1.6 KiB
TypeScript

import * as Sentry from "@sentry/nextjs"
import { env } from "./env/server"
import { isEdge } from "./utils/isEdge"
export async function register() {
/*
Order matters!
Sentry hooks into OpenTelemetry, modifying its behavior.
Application Insights relies on OpenTelemetry exporters,
and these may not work correctly if Sentry has already altered the instrumentation pipeline.
*/
await configureApplicationInsights()
await configureSentry()
}
export const onRequestError = Sentry.captureRequestError
async function configureApplicationInsights() {
if (
process.env.NEXT_RUNTIME === "nodejs" &&
env.APPLICATION_INSIGHTS_CONNECTION_STRING
) {
const { AzureMonitorTraceExporter, AzureMonitorMetricExporter } =
await import("@azure/monitor-opentelemetry-exporter")
const { registerOTel } = await import("@vercel/otel")
const { PeriodicExportingMetricReader } = await import(
"@opentelemetry/sdk-metrics"
)
const connectionString: string = env.APPLICATION_INSIGHTS_CONNECTION_STRING
const traceExporter = new AzureMonitorTraceExporter({ connectionString })
const azureMetricExporter = new AzureMonitorMetricExporter({
connectionString,
})
const azureMetricReader = new PeriodicExportingMetricReader({
exporter: azureMetricExporter,
exportIntervalMillis: 10000,
})
registerOTel({
serviceName: "scandic-web",
traceExporter,
metricReader: azureMetricReader,
})
}
}
async function configureSentry() {
if (isEdge) {
await import("./sentry.edge.config")
} else {
await import("./sentry.server.config")
}
}