Open
Description
What version of OpenTelemetry are you using?
{
"@opentelemetry/api": "1.9.0",
"@opentelemetry/api-logs": "0.56.0",
"@opentelemetry/core": "1.29.0",
"@opentelemetry/exporter-logs-otlp-http": "0.56.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.56.0",
"@opentelemetry/exporter-trace-otlp-http": "0.56.0",
"@opentelemetry/instrumentation": "0.56.0",
"@opentelemetry/auto-instrumentations-node": "0.54.0",
"@opentelemetry/resources": "1.29.0",
"@opentelemetry/sdk-logs": "0.56.0",
"@opentelemetry/sdk-metrics": "1.29.0",
"@opentelemetry/sdk-node": "0.56.0",
"@opentelemetry/sdk-trace-base": "1.29.0",
"@opentelemetry/sdk-trace-node": "1.29.0",
"@opentelemetry/semantic-conventions": "1.28.0",
"express": "4.18.2"
}
What version of Node are you using?
v18.20.4
What did you do?
/*
* otel.js
*/
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
import { Resource } from '@opentelemetry/resources'
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
import { registerInstrumentations } from '@opentelemetry/instrumentation'
const exporter = new OTLPTraceExporter({
url: 'http://localhost/jaeger/v1/traces',
})
const provider = new NodeTracerProvider({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: 'api-local',
}),
})
provider.addSpanProcessor(new SimpleSpanProcessor(exporter))
provider.register()
registerInstrumentations({
instrumentations: [
getNodeAutoInstrumentations(),
],
})
/*
* index.js
*/
import './otel.js'
import http from 'http'
import express from 'express'
const app = express()
const { Router } = express
const router = Router()
const workspaceUserRouter = Router({ mergeParams: true })
router.route('/').get(
(req, res, next) => {
return res.status(200).json([{email: '[email protected]'}])
}
)
router.use('/workspaces/:workspaceId/users', workspaceUserRouter)
app.use('/v0/api', router)
const httpServer = http.createServer(app)
httpServer.listen(3000)
What did you expect to see?
Whole endpoint url to be present at root span attributes
What did you see instead?
Only router prefix set to span attributes