Refactor monitoring instrumentation setup

Removed the MONITORING_PROVIDER constant from the monitoring package, replaced it with direct process.env access. This ensures that environment variables are accessed directly at the time of use without intermediate variables. In the apps/web/instrumentation.ts file, refactored condition checks for runtime environment and instrumentation enablement, using direct access environmental variables. This change simplifies the code and improves readability.
This commit is contained in:
giancarlo
2024-04-15 14:41:48 +08:00
parent e75fcfc750
commit f1e3a44c89
4 changed files with 13 additions and 19 deletions

View File

@@ -53,4 +53,8 @@ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
NEXT_PUBLIC_ENABLE_ACCOUNT_DELETION=true NEXT_PUBLIC_ENABLE_ACCOUNT_DELETION=true
NEXT_PUBLIC_ENABLE_PERSONAL_ACCOUNT_BILLING=true NEXT_PUBLIC_ENABLE_PERSONAL_ACCOUNT_BILLING=true
NEXT_PUBLIC_ENABLE_ORGANIZATION_DELETION=true NEXT_PUBLIC_ENABLE_ORGANIZATION_DELETION=true
NEXT_PUBLIC_ENABLE_ORGANIZATION_BILLING=true NEXT_PUBLIC_ENABLE_ORGANIZATION_BILLING=true
# MONITORING
MONITORING_PROVIDER=
MONITORING_INSTRUMENTATION_ENABLED=false

View File

@@ -3,14 +3,12 @@
* for your Next.js application. * for your Next.js application.
*/ */
const RUNTIME = process.env.NEXT_RUNTIME;
const ENABLE_INSTRUMENTATION =
process.env.MONITORING_INSTRUMENTATION_ENABLED === 'true';
export async function register() { export async function register() {
// only run in nodejs runtime // only run in nodejs runtime
if (RUNTIME === 'nodejs' && ENABLE_INSTRUMENTATION) { if (
process.env.NEXT_RUNTIME === 'nodejs' &&
process.env.MONITORING_INSTRUMENTATION_ENABLED
) {
const { registerMonitoringInstrumentation } = await import( const { registerMonitoringInstrumentation } = await import(
'@kit/monitoring/instrumentation' '@kit/monitoring/instrumentation'
); );

View File

@@ -28,7 +28,7 @@ export async function registerInstrumentation() {
resource: new Resource({ resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: serviceName, [SEMRESATTRS_SERVICE_NAME]: serviceName,
}), }),
spanProcessor: new SentrySpanProcessor(), spanProcessors: [new SentrySpanProcessor()],
textMapPropagator: new SentryPropagator(), textMapPropagator: new SentryPropagator(),
}); });

View File

@@ -1,13 +1,5 @@
import { InstrumentationProvider } from './monitoring-providers.enum'; import { InstrumentationProvider } from './monitoring-providers.enum';
/**
* @name MONITORING_PROVIDER
* @description Register monitoring instrumentation based on the MONITORING_PROVIDER environment variable.
*/
const MONITORING_PROVIDER = process.env.MONITORING_PROVIDER as
| InstrumentationProvider
| undefined;
/** /**
* @name registerMonitoringInstrumentation * @name registerMonitoringInstrumentation
* @description Register monitoring instrumentation based on the MONITORING_PROVIDER environment variable. * @description Register monitoring instrumentation based on the MONITORING_PROVIDER environment variable.
@@ -15,13 +7,13 @@ const MONITORING_PROVIDER = process.env.MONITORING_PROVIDER as
* Please set the MONITORING_PROVIDER environment variable to register the monitoring instrumentation provider. * Please set the MONITORING_PROVIDER environment variable to register the monitoring instrumentation provider.
*/ */
export async function registerMonitoringInstrumentation() { export async function registerMonitoringInstrumentation() {
if (!MONITORING_PROVIDER) { if (!process.env.MONITORING_PROVIDER) {
console.info(`No instrumentation provider specified. Skipping...`); console.info(`No instrumentation provider specified. Skipping...`);
return; return;
} }
switch (MONITORING_PROVIDER) { switch (process.env.MONITORING_PROVIDER as InstrumentationProvider) {
case InstrumentationProvider.Baselime: { case InstrumentationProvider.Baselime: {
const { registerInstrumentation } = await import( const { registerInstrumentation } = await import(
'@kit/baselime/instrumentation' '@kit/baselime/instrumentation'
@@ -40,7 +32,7 @@ export async function registerMonitoringInstrumentation() {
default: default:
throw new Error( throw new Error(
`Unknown instrumentation provider: ${MONITORING_PROVIDER as string}`, `Unknown instrumentation provider: ${process.env.MONITORING_PROVIDER}`,
); );
} }
} }