Guide
Server Composables
Instrument your server routes manually with useOtelTracer and useOtelLogger
The module provides two composables for manual instrumentation in your server routes.
Use the tracer composable
useOtelTracer(namespace) creates a tracer that wraps async operations in OpenTelemetry spans:
import { defineEventHandler } from 'h3'
export default defineEventHandler(async () => {
const { trace } = useOtelTracer('checkout')
const result = await trace('process-payment', async () => {
// This runs inside an OpenTelemetry span named "checkout.process-payment"
const payment = await processPayment()
return payment
})
return result
})
Use the logger composable
useOtelLogger() returns an OpenTelemetry logger instance for emitting structured logs:
import { defineEventHandler } from 'h3'
export default defineEventHandler(async () => {
const logger = useOtelLogger()
logger.emit({
severityNumber: 9,
body: 'Payment processed',
attributes: { amount: 42, currency: 'USD' },
})
})
Logs and spans created with these composables automatically appear in the DevTools UI when devtools are enabled.