Skip to content

Add diagnostics_channel based instrumentation to supported Node libraries #15107

@mydea

Description

@mydea

Description

Today, we use import-in-the-middle and require-in-the-middle based instrumentation for Node libraries in our Node SDK, e.g. for express, mysql, etc.

This has some downsides:

  1. For ESM, to have import-in-the-middle work reliably it should be configured via --import in the Node CLI
  2. import-in-the-middle is flawed in a couple of ways that means it can't be used to wrap all libraries
  3. Neither import-in-the-middle or require-in-the-middle work with bundled code (as it instruments import/require, basically)

To "fix" this, we want to migrate to using diagnostics_channel for the packages we instrument. With this, both of these downsides disappear.

In order to achieve this, we need to actually PR the libraries themselves (e.g. express, mysql, ...) and make them emit diagnostics_channel (or a tracing channel). Then, the OTEL instrumentation can be updated to use this instead of using import-in-the-middle.

This will be a gradual approach, we can update libraries as we go, starting with more important ones.

### Libraries to update
- [ ] http
- [ ] express
- [ ] fastify
- [ ] graphql
- [ ] mongo
- [ ] mongoose
- [ ] mysql
- [ ] mysql2
- [ ] redis
- [ ] postgres
- [ ] hapi
- [ ] koa
- [ ] connect
- [ ] tedious
- [ ] genericPool
- [ ] kafka
- [ ] amqlib
- [ ] lruMemoizer
- [ ] vercelAIIntergation (?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions