39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
/**
|
|
* @name registerInstrumentation
|
|
* @description This file is used to register Baselime instrumentation for your Next.js application.
|
|
*
|
|
* Please set the MONITORING_PROVIDER environment variable to 'baselime' to register Baselime instrumentation.
|
|
*/
|
|
export async function registerInstrumentation() {
|
|
if (process.env.ENABLE_MONITORING_INSTRUMENTATION !== 'true') {
|
|
return;
|
|
}
|
|
|
|
const serviceName = process.env.INSTRUMENTATION_SERVICE_NAME;
|
|
|
|
if (!serviceName) {
|
|
throw new Error(`
|
|
You have set the Baselime instrumentation provider, but have not set the INSTRUMENTATION_SERVICE_NAME environment variable.
|
|
Please set the INSTRUMENTATION_SERVICE_NAME environment variable.
|
|
`);
|
|
}
|
|
|
|
if (process.env.NEXT_RUNTIME === 'nodejs') {
|
|
const { BaselimeSDK, BetterHttpInstrumentation, VercelPlugin } =
|
|
await import('@baselime/node-opentelemetry');
|
|
|
|
const sdk = new BaselimeSDK({
|
|
serverless: true,
|
|
service: serviceName,
|
|
baselimeKey: process.env.NEXT_PUBLIC_BASELIME_KEY,
|
|
instrumentations: [
|
|
new BetterHttpInstrumentation({
|
|
plugins: [new VercelPlugin()],
|
|
}),
|
|
],
|
|
});
|
|
|
|
sdk.start();
|
|
}
|
|
}
|