From 18aa214e72b9e5a87a9e1a2729e92a8eab1e8300 Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Tue, 27 Oct 2026 15:53:25 +0100 Subject: [PATCH] refactor(node): Use convention constants for attribute keys Co-Authored-By: GPT-6 --- packages/node/src/integrations/context.ts | 96 ++++++++++++------- .../http/httpServerSpansIntegration.ts | 6 +- .../src/integrations/nodeRuntimeMetrics.ts | 7 +- packages/node/src/integrations/pino.ts | 3 +- packages/node/src/integrations/winston.ts | 3 +- packages/node/src/logs/capture.ts | 3 +- packages/node/src/sdk/client.ts | 3 +- 7 files changed, 76 insertions(+), 45 deletions(-) diff --git a/packages/node/src/integrations/context.ts b/packages/node/src/integrations/context.ts index c35f74b350c6..ef967476b57f 100644 --- a/packages/node/src/integrations/context.ts +++ b/packages/node/src/integrations/context.ts @@ -1,5 +1,28 @@ /* eslint-disable max-lines */ +import { + APP_START_TIME, + CLOUD_ACCOUNT_ID, + CLOUD_AVAILABILITY_ZONE, + CLOUD_PLATFORM, + CLOUD_PROVIDER, + CLOUD_REGION, + CULTURE_LOCALE, + CULTURE_TIMEZONE, + DEVICE_ARCHS, + DEVICE_BOOT_TIME, + DEVICE_CPU_DESCRIPTION, + DEVICE_FREE_MEMORY, + DEVICE_MEMORY_SIZE, + DEVICE_PROCESSOR_COUNT, + DEVICE_PROCESSOR_FREQUENCY, + OS_BUILD, + OS_KERNEL_VERSION, + OS_NAME, + OS_VERSION, + PROCESS_RUNTIME_ENGINE_NAME, + PROCESS_RUNTIME_ENGINE_VERSION, +} from '@sentry/conventions/attributes'; import { execFile } from 'node:child_process'; import { readdir, readFile } from 'node:fs'; import * as os from 'node:os'; @@ -54,8 +77,8 @@ const _nodeContextIntegration = ((options: ContextOptions = {}) => { // Map static context data to span attributes const cachedSpanAttributes: Record = { - 'process.runtime.engine.name': 'v8', - 'process.runtime.engine.version': process.versions.v8, + [PROCESS_RUNTIME_ENGINE_NAME]: 'v8', + [PROCESS_RUNTIME_ENGINE_VERSION]: process.versions.v8, ...contextsToSpanAttributes({ app: appContext, device: deviceContext, @@ -156,52 +179,53 @@ export function contextsToSpanAttributes(contexts: Contexts): Record Math.max(0, (ns - resolutionNs) / 1e9); - const METRIC_ATTRIBUTES = { attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } }; - const METRIC_ATTRIBUTES_BYTE = { unit: 'byte', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } }; - const METRIC_ATTRIBUTES_SECOND = { unit: 'second', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } }; + const METRIC_ATTRIBUTES = { attributes: { [SENTRY_ORIGIN]: 'auto.node.runtime_metrics' } }; + const METRIC_ATTRIBUTES_BYTE = { unit: 'byte', attributes: { [SENTRY_ORIGIN]: 'auto.node.runtime_metrics' } }; + const METRIC_ATTRIBUTES_SECOND = { unit: 'second', attributes: { [SENTRY_ORIGIN]: 'auto.node.runtime_metrics' } }; function collectMetrics(): void { const now = _INTERNAL_safeDateNow(); diff --git a/packages/node/src/integrations/pino.ts b/packages/node/src/integrations/pino.ts index c5560f0c34d5..e058975a3511 100644 --- a/packages/node/src/integrations/pino.ts +++ b/packages/node/src/integrations/pino.ts @@ -1,3 +1,4 @@ +import { SENTRY_ORIGIN } from '@sentry/conventions/attributes'; import type { IntegrationFn, LogSeverityLevel } from '@sentry/core'; import { _INTERNAL_captureLog, @@ -142,7 +143,7 @@ const _pinoIntegration = defineIntegration((userOptions: DeepPartial = { ...resultObj, - 'sentry.origin': 'auto.log.pino', + [SENTRY_ORIGIN]: 'auto.log.pino', 'pino.logger.level': levelNumber, }; diff --git a/packages/node/src/integrations/winston.ts b/packages/node/src/integrations/winston.ts index fd0d510599d4..289d3463dab4 100644 --- a/packages/node/src/integrations/winston.ts +++ b/packages/node/src/integrations/winston.ts @@ -1,3 +1,4 @@ +import { SENTRY_ORIGIN } from '@sentry/conventions/attributes'; /* eslint-disable @typescript-eslint/ban-ts-comment */ import type { LogSeverityLevel } from '@sentry/core'; import { debug, isObjectLike } from '@sentry/core'; @@ -109,7 +110,7 @@ export function createSentryWinstonTransport { attributes[`sentry.message.parameter.${index}`] = param; }); diff --git a/packages/node/src/sdk/client.ts b/packages/node/src/sdk/client.ts index e9dd30bf7bac..835a4dab387f 100644 --- a/packages/node/src/sdk/client.ts +++ b/packages/node/src/sdk/client.ts @@ -1,3 +1,4 @@ +import { SERVER_ADDRESS } from '@sentry/conventions/attributes'; import * as os from 'node:os'; import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; @@ -68,7 +69,7 @@ export class NodeClient extends ServerRuntimeClient { this.on('beforeCaptureLog', log => { log.attributes = { ...log.attributes, - 'server.address': serverName, + [SERVER_ADDRESS]: serverName, }; }); }