From 352875a081b53d0cd2bc572c66fd5f564df9b8a4 Mon Sep 17 00:00:00 2001 From: James Singleton Date: Thu, 7 May 2026 16:36:10 -0500 Subject: [PATCH] Export OTEL logs for api --- apps/api/package.json | 2 ++ apps/api/src/instrumentation.ts | 3 +++ pnpm-lock.yaml | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/apps/api/package.json b/apps/api/package.json index 816b5e8eb..f5728b677 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -34,6 +34,7 @@ "@octokit/webhooks": "^13.7.4", "@octokit/webhooks-types": "^7.5.1", "@opentelemetry/api": "^1.9.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.217.0", "@opentelemetry/exporter-metrics-otlp-http": "^0.217.0", "@opentelemetry/exporter-trace-otlp-http": "^0.217.0", "@opentelemetry/instrumentation-express": "^0.65.0", @@ -41,6 +42,7 @@ "@opentelemetry/instrumentation-pg": "^0.69.0", "@opentelemetry/instrumentation-runtime-node": "^0.30.0", "@opentelemetry/resources": "^2.7.1", + "@opentelemetry/sdk-logs": "^0.217.0", "@opentelemetry/sdk-metrics": "^2.7.1", "@opentelemetry/sdk-node": "^0.217.0", "@opentelemetry/sdk-trace-node": "^2.7.1", diff --git a/apps/api/src/instrumentation.ts b/apps/api/src/instrumentation.ts index eddcd8012..1cc6f817a 100644 --- a/apps/api/src/instrumentation.ts +++ b/apps/api/src/instrumentation.ts @@ -1,3 +1,4 @@ +import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http"; import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { @@ -8,6 +9,7 @@ import { HttpInstrumentation } from "@opentelemetry/instrumentation-http"; import { PgInstrumentation } from "@opentelemetry/instrumentation-pg"; import { RuntimeNodeInstrumentation } from "@opentelemetry/instrumentation-runtime-node"; import { resourceFromAttributes } from "@opentelemetry/resources"; +import { BatchLogRecordProcessor } from "@opentelemetry/sdk-logs"; import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"; import { NodeSDK } from "@opentelemetry/sdk-node"; import { @@ -30,6 +32,7 @@ const sdk = new NodeSDK({ exporter: new OTLPMetricExporter(), exportIntervalMillis: 10_000, }), + logRecordProcessors: [new BatchLogRecordProcessor(new OTLPLogExporter())], instrumentations: [ new HttpInstrumentation({ ignoreIncomingRequestHook: (req) => req.url === "/api/healthz", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ae5a46e4..daaceb03b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,6 +156,9 @@ importers: '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 + '@opentelemetry/exporter-logs-otlp-http': + specifier: ^0.217.0 + version: 0.217.0(@opentelemetry/api@1.9.0) '@opentelemetry/exporter-metrics-otlp-http': specifier: ^0.217.0 version: 0.217.0(@opentelemetry/api@1.9.0) @@ -177,6 +180,9 @@ importers: '@opentelemetry/resources': specifier: ^2.7.1 version: 2.7.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': + specifier: ^0.217.0 + version: 0.217.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': specifier: ^2.7.1 version: 2.7.1(@opentelemetry/api@1.9.0)