1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-13 02:52:54 -05:00
denoland-deno/tests/specs/cli/otel_basic/main.ts
Luca Casonato 594a99817c
feat(runtime): remove public OTEL trace API (#26854)
This PR removes the public Deno.tracing.Span API.
We are not confident we can ship an API that is
better than the `@opentelemetry/api` API, because
V8 CPED does not support us using `using` to
manage span context. If this changes, we can
revisit this decision. For now, users wanting
custom spans can instrument their code using
the `@opentelemetry/api` API and `@deno/otel`.

This PR also speeds up the OTEL trace generation
by a 30% by using Uint8Array instead of
strings for the trace ID and span ID.
2024-11-18 23:55:22 +00:00

38 lines
1 KiB
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
const data = {
spans: [],
logs: [],
};
const server = Deno.serve(
{
port: 0,
onListen({ port }) {
const command = new Deno.Command(Deno.execPath(), {
args: ["run", "-A", "-q", "--unstable-otel", Deno.args[0]],
env: {
OTEL_EXPORTER_OTLP_PROTOCOL: "http/json",
OTEL_EXPORTER_OTLP_ENDPOINT: `http://localhost:${port}`,
},
stdout: "null",
});
const child = command.spawn();
child.output().then(() => {
server.shutdown();
console.log(JSON.stringify(data, null, 2));
});
},
async handler(req) {
const body = await req.json();
if (body.resourceLogs) {
data.logs.push(...body.resourceLogs[0].scopeLogs[0].logRecords);
}
if (body.resourceSpans) {
data.spans.push(...body.resourceSpans[0].scopeSpans[0].spans);
}
return Response.json({ partialSuccess: {} }, { status: 200 });
},
},
);