The monitoring instrumentation methodology has been simplified for both Baselime and Sentry providers by aligning their registration functions and error handling processes. Specifically, function names have been standardized to 'registerInstrumentation' and handling for the absence of the INSTRUMENTATION_SERVICE_NAME environment variable is now conducted within these functions. In addition, the MONITORING_INSTRUMENTATION_PROVIDER variable has been renamed to MONITORING_PROVIDER.
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
/**
|
|
* @name registerInstrumentation
|
|
* @description This file is used to register Sentry instrumentation for your Next.js application.
|
|
*
|
|
* Please set the MONITORING_PROVIDER environment variable to 'sentry' to register Sentry instrumentation.
|
|
*/
|
|
export async function registerInstrumentation() {
|
|
const serviceName = process.env.INSTRUMENTATION_SERVICE_NAME;
|
|
|
|
if (!serviceName) {
|
|
throw new Error(
|
|
`You have set the Sentry instrumentation provider, but have not set the INSTRUMENTATION_SERVICE_NAME environment variable. Please set the INSTRUMENTATION_SERVICE_NAME environment variable.`,
|
|
);
|
|
}
|
|
|
|
const { Resource } = await import('@opentelemetry/resources');
|
|
const { NodeSDK } = await import('@opentelemetry/sdk-node');
|
|
|
|
const { SEMRESATTRS_SERVICE_NAME } = await import(
|
|
'@opentelemetry/semantic-conventions'
|
|
);
|
|
|
|
const { SentrySpanProcessor, SentryPropagator } = await import(
|
|
'@sentry/opentelemetry-node'
|
|
);
|
|
|
|
const sdk = new NodeSDK({
|
|
resource: new Resource({
|
|
[SEMRESATTRS_SERVICE_NAME]: serviceName,
|
|
}),
|
|
spanProcessor: new SentrySpanProcessor(),
|
|
textMapPropagator: new SentryPropagator(),
|
|
});
|
|
|
|
sdk.start();
|
|
}
|