11import { type Span , SpanStatusCode , trace } from "@opentelemetry/api" ;
22import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto" ;
3+ import { resourceFromAttributes } from "@opentelemetry/resources" ;
34import { NodeSDK } from "@opentelemetry/sdk-node" ;
45import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-node" ;
6+ import {
7+ ATTR_SERVICE_NAME ,
8+ ATTR_SERVICE_VERSION ,
9+ } from "@opentelemetry/semantic-conventions" ;
10+ import pkg from "../../package.json" ;
511
612let sdk : NodeSDK | null = null ;
713
@@ -14,6 +20,10 @@ export function initTracing(): void {
1420 }
1521
1622 sdk = new NodeSDK ( {
23+ resource : resourceFromAttributes ( {
24+ [ ATTR_SERVICE_NAME ] : "basket" ,
25+ [ ATTR_SERVICE_VERSION ] : pkg . version ,
26+ } ) ,
1727 traceExporter : new OTLPTraceExporter ( {
1828 url : "https://api.axiom.co/v1/traces" ,
1929 headers : {
@@ -50,10 +60,7 @@ function getTracer() {
5060/**
5161 * Create a span - replaces @elysiajs/opentelemetry record
5262 */
53- export function record < T > (
54- name : string ,
55- fn : ( ) => Promise < T > | T
56- ) : Promise < T > {
63+ export function record < T > ( name : string , fn : ( ) => Promise < T > | T ) : Promise < T > {
5764 const tracer = getTracer ( ) ;
5865 return tracer . startActiveSpan ( name , async ( span ) => {
5966 try {
@@ -65,7 +72,9 @@ export function record<T>(
6572 code : SpanStatusCode . ERROR ,
6673 message : error instanceof Error ? error . message : String ( error ) ,
6774 } ) ;
68- span . recordException ( error instanceof Error ? error : new Error ( String ( error ) ) ) ;
75+ span . recordException (
76+ error instanceof Error ? error : new Error ( String ( error ) )
77+ ) ;
6978 throw error ;
7079 } finally {
7180 span . end ( ) ;
@@ -90,7 +99,11 @@ export function setAttributes(
9099/**
91100 * Start HTTP request span
92101 */
93- export function startRequestSpan ( method : string , path : string , route ?: string ) : Span {
102+ export function startRequestSpan (
103+ method : string ,
104+ path : string ,
105+ route ?: string
106+ ) : Span {
94107 const tracer = getTracer ( ) ;
95108 return tracer . startSpan ( `${ method } ${ route ?? path } ` , {
96109 kind : 1 , // SERVER
@@ -105,7 +118,11 @@ export function startRequestSpan(method: string, path: string, route?: string):
105118/**
106119 * End HTTP request span
107120 */
108- export function endRequestSpan ( span : Span , statusCode : number , startTime : number ) : void {
121+ export function endRequestSpan (
122+ span : Span ,
123+ statusCode : number ,
124+ startTime : number
125+ ) : void {
109126 span . setAttribute ( "http.status_code" , statusCode ) ;
110127 span . setAttribute ( "http.response.duration_ms" , Date . now ( ) - startTime ) ;
111128 span . setStatus ( {
0 commit comments