next-enterprise/instrumentation.ts

43 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-09-19 19:22:43 -05:00
import { context, diag, DiagConsoleLogger, DiagLogLevel, propagation, trace } from "@opentelemetry/api"
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto"
import { Resource } from "@opentelemetry/resources"
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base"
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"
2023-04-21 12:11:00 +02:00
import { registerOTel } from "@vercel/otel"
2024-09-19 19:22:43 -05:00
// Configuración del logger de diagnóstico
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ERROR)
// Verificación de registro previo de OpenTelemetry
function isAlreadyRegistered() {
return trace.getTracerProvider() || context.active() || propagation.setGlobalPropagator
}
// Inicialización de OpenTelemetry
function initializeOpenTelemetry() {
const resource = new Resource({
"service.name": "next-app", // Cambia el nombre del servicio según tu proyecto
})
const provider = new NodeTracerProvider({
resource,
})
const traceExporter = new OTLPTraceExporter({
url: "http://localhost:4318/v1/traces", // Asegúrate de que el servicio OTLP esté corriendo
})
provider.addSpanProcessor(new BatchSpanProcessor(traceExporter))
provider.register()
}
// Registrar OpenTelemetry si no está registrado
if (!isAlreadyRegistered()) {
initializeOpenTelemetry()
}
// Registrar la configuración de OpenTelemetry
2023-04-21 12:11:00 +02:00
export function register() {
2024-09-19 19:22:43 -05:00
registerOTel("next-app") // Mismo nombre de servicio
2023-04-21 12:11:00 +02:00
}