-
Notifications
You must be signed in to change notification settings - Fork 2
Description
In Deno 2.2, OTEL support is at a point where traces and logs show up with minimal configuration in Grafana. You can test it out by following this: https://deno.com/blog/v2.2#built-in-opentelemetry
When using acorn in Deno, the router should fallback to Deno.serve(), so I expected Grafana to easily pick up everything.
However, if you use this code:
import { Router } from '@oak/acorn';
const router = new Router({
logger: { // this setting does not matter, Grafana can't make the Trace Span -> Log connection either way
console: true,
},
});
router.get('/', (ctx) => {
console.log(ctx);
return { hello: 'world' };
});
router.listen({ port: 4001 });
And then hit http://0.0.0.0:4001 and go into Grafana, it's almost completely working - which is very exciting - save for if you try to access logs from a trace. If you go into Tempo in Grafana, and then click a trace, and then click the service's span, and then click Logs for this span
, you'll see that Grafana can't link the span to the logs.
However, if you run some basic Deno.serve code, it works just fine:
export default {
async fetch(_req) {
const JSON_ROUTE = new URLPattern({ pathname: '/' });
console.log(_req);
if (JSON_ROUTE.exec(_req.url)) {
return Response.json({ hello: 'world' });
}
},
};
Linking this commit diff incase it's helpful for pinning this down: denoland/deno@bf79971#diff-847a11c353dfb7aeae6e35bc104b83a091ef797bdfc559d22ccfc804a3615000