11import type { Span } from "@opentelemetry/api" ;
22import {
3- metrics ,
43 propagation ,
54 ROOT_CONTEXT ,
65 SpanKind ,
@@ -9,11 +8,9 @@ import {
98} from "@opentelemetry/api" ;
109import { logs , SeverityNumber } from "@opentelemetry/api-logs" ;
1110import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http" ;
12- import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http" ;
1311import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http" ;
1412import { resourceFromAttributes } from "@opentelemetry/resources" ;
1513import { BatchLogRecordProcessor } from "@opentelemetry/sdk-logs" ;
16- import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics" ;
1714import { NodeSDK } from "@opentelemetry/sdk-node" ;
1815import {
1916 ATTR_SERVICE_NAME ,
@@ -45,9 +42,9 @@ const noopHistogram: HistogramLike = {
4542 record : ( ) => { } ,
4643} ;
4744
48- let httpRequestsTotal : CounterLike = noopCounter ;
49- let httpRequestDurationMs : HistogramLike = noopHistogram ;
50- let cacheLookupsTotal : CounterLike = noopCounter ;
45+ const httpRequestsTotal : CounterLike = noopCounter ;
46+ const httpRequestDurationMs : HistogramLike = noopHistogram ;
47+ const cacheLookupsTotal : CounterLike = noopCounter ;
5148
5249const requestStarts = new WeakMap < FastifyRequest , bigint > ( ) ;
5350const requestSpans = new WeakMap < FastifyRequest , Span > ( ) ;
@@ -143,16 +140,12 @@ function toMilliseconds(start: bigint): number {
143140 return Number ( process . hrtime . bigint ( ) - start ) / 1_000_000 ;
144141}
145142
146- function buildSignalUrl (
147- endpoint : string ,
148- signal : "traces" | "metrics" | "logs" ,
149- ) : string {
143+ function buildSignalUrl ( endpoint : string , signal : "traces" | "logs" ) : string {
150144 const normalized = endpoint . endsWith ( "/" )
151145 ? endpoint . slice ( 0 , - 1 )
152146 : endpoint ;
153147 const withoutSignalPath = normalized
154148 . replace ( / \/ v 1 \/ t r a c e s $ / , "" )
155- . replace ( / \/ v 1 \/ m e t r i c s $ / , "" )
156149 . replace ( / \/ v 1 \/ l o g s $ / , "" ) ;
157150 return `${ withoutSignalPath } /v1/${ signal } ` ;
158151}
@@ -182,26 +175,6 @@ function parseOtlpHeaders(raw?: string): Record<string, string> {
182175 return headers ;
183176}
184177
185- function initializeMetricInstruments ( ) : void {
186- const meter = metrics . getMeter ( "esptransit-server" , SERVICE_VERSION ) ;
187-
188- httpRequestsTotal = meter . createCounter ( "esptransit_http_requests_total" , {
189- description : "Total HTTP requests handled by the ESPTransit server." ,
190- } ) ;
191-
192- httpRequestDurationMs = meter . createHistogram (
193- "esptransit_http_request_duration_ms" ,
194- {
195- description : "HTTP request duration in milliseconds." ,
196- unit : "ms" ,
197- } ,
198- ) ;
199-
200- cacheLookupsTotal = meter . createCounter ( "esptransit_cache_lookups_total" , {
201- description : "Cache lookup outcomes per route." ,
202- } ) ;
203- }
204-
205178export function startObservability (
206179 config : ObservabilityConfig ,
207180) : ObservabilityHandle {
@@ -234,22 +207,12 @@ export function startObservability(
234207 headers,
235208 timeoutMillis : config . exportTimeoutMs ,
236209 } ) ;
237- const metricExporter = new OTLPMetricExporter ( {
238- url : buildSignalUrl ( endpoint , "metrics" ) ,
239- headers,
240- timeoutMillis : config . exportTimeoutMs ,
241- } ) ;
242210 const logExporter = new OTLPLogExporter ( {
243211 url : buildSignalUrl ( endpoint , "logs" ) ,
244212 headers,
245213 timeoutMillis : config . exportTimeoutMs ,
246214 } ) ;
247215 const logRecordProcessor = new BatchLogRecordProcessor ( logExporter ) ;
248- const metricReader = new PeriodicExportingMetricReader ( {
249- exporter : metricExporter ,
250- exportIntervalMillis : config . exportIntervalMs ,
251- exportTimeoutMillis : config . exportTimeoutMs ,
252- } ) ;
253216
254217 const resourceAttributes : Record < string , string > = {
255218 [ ATTR_SERVICE_NAME ] : config . serviceName ,
@@ -264,13 +227,11 @@ export function startObservability(
264227 const sdk = new NodeSDK ( {
265228 resource : resourceFromAttributes ( resourceAttributes ) ,
266229 traceExporter,
267- metricReaders : [ metricReader ] ,
268230 logRecordProcessors : [ logRecordProcessor ] ,
269231 } ) ;
270232
271233 try {
272234 sdk . start ( ) ;
273- initializeMetricInstruments ( ) ;
274235 logInfo ( `[otel] enabled endpoint=${ endpoint } logs=enabled` ) ;
275236 return {
276237 enabled : true ,
0 commit comments