Skip to content

Investigate the spans emitted with NEXT_OTEL_VERBOSE #18533

@logaretm

Description

@logaretm

This got brought up in our weekly syncs, the Next.js OTEL guide page says:

Next.js traces more spans than are emitted by default. To see more spans, you must set NEXT_OTEL_VERBOSE=1.

Which is a bit of a wonky wording but worth checking out to see what are the extra spans that are emitted and if they can be of any use to the user.

We can probably turn it on by manually by setting process.env.NEXT_OTEL_VERBOSE to 1 in the instrumentation init script.

I ran a preliminary scan of the Next.js repository for the NEXT_OTEL_VERBOSE flag and made a list of possible new spans that should be emitted with the env flag turned on, you can find those below.

Span Lists

Spans Normally Emitted (in NextVanillaSpanAllowlist):

Always Included (15 spans):

  • Middleware.execute
  • BaseServer.handleRequest
  • Render.getServerSideProps
  • Render.getStaticProps
  • AppRender.fetch
  • AppRender.getBodyResult
  • Render.renderDocument
  • Node.runHandler
  • AppRouteRouteHandlers.runHandler
  • ResolveMetadata.generateMetadata
  • ResolveMetadata.generateViewport
  • NextNodeServer.createComponentTree
  • NextNodeServer.findPageComponents
  • NextNodeServer.getLayoutOrPageModule
  • NextNodeServer.startResponse
  • NextNodeServer.clientComponentLoading

Additional Spans Only with Verbose Mode (48 more spans):

BaseServerSpan (11 additional):

  • BaseServer.run
  • BaseServer.pipe
  • BaseServer.getStaticHTML
  • BaseServer.render
  • BaseServer.renderToResponseWithComponents
  • BaseServer.renderToResponse
  • BaseServer.renderToHTML
  • BaseServer.renderError
  • BaseServer.renderErrorToResponse
  • BaseServer.renderErrorToHTML
  • BaseServer.render404

LoadComponentsSpan (2):

  • LoadComponents.loadDefaultErrorComponents
  • LoadComponents.loadComponents

NextServerSpan (5):

  • NextServer.getRequestHandler
  • NextServer.getRequestHandlerWithMetadata
  • NextServer.getServer
  • NextServer.getServerRequestHandler
  • createServer. createServer

NextNodeServerSpan (19 additional):

  • NextNodeServer.compression
  • NextNodeServer.getBuildId
  • NextNodeServer.generateStaticRoutes
  • NextNodeServer.generateFsStaticRoutes
  • NextNodeServer.generatePublicRoutes
  • NextNodeServer.generateImageRoutes. route
  • NextNodeServer.sendRenderResult
  • NextNodeServer.proxyRequest
  • NextNodeServer.runApi
  • NextNodeServer.render
  • NextNodeServer.renderHTML
  • NextNodeServer.imageOptimizer
  • NextNodeServer.getPagePath
  • NextNodeServer.getRoutesManifest
  • NextNodeServer.getFontManifest
  • NextNodeServer.getServerComponentManifest
  • NextNodeServer.getRequestHandler
  • NextNodeServer.renderToHTML
  • NextNodeServer.renderError
  • NextNodeServer.renderErrorToHTML
  • NextNodeServer.render404
  • route
  • onProxyReq
  • apiResolver
  • internalFetch

StartServerSpan (1):

  • startServer.startServer

RenderSpan (2 additional):

  • Render.renderToString
  • Render.createBodyResult

AppRenderSpan (2 additional):

  • AppRender.renderToString
  • AppRender.renderToReadableStream

RouterSpan (1):

  • Router.executeRoute

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions