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
55 lines
1.6 KiB
TypeScript
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")
|
|
}
|
|
}
|