Supported Node.js libraries and frameworks

The Instana Node.js Tracer packages support tracing for the following Node.js libraries and frameworks. For more information about monitoring Node.js applications, see Monitoring Node.js.

The "npm package version" column indicates the minimum version of the Instana Node.js Tracer package that is required for a particular library or framework. For more information, see the GitHub changelog.

HTTP

The following table outlines the HTTP libraries that the Instana Node.js Tracer packages support:

Table 1. Supported HTTP libraries
Library Support policy npm package version Instrumentation identifier[1]
Express Error handling and path templates 45 days 1.32.0, 1.43.0 express
Fastify 45 days 1.44.0 fastify
HTTP or HTTPs clients 0 day 1.10.0 httpClient
HTTP or HTTPs servers 0 day 1.10.0 httpServer
HTTP/2 clients 0 day 1.103.0 http2Client
HTTP/2 servers 0 day 1.103.0 http2Server
hapi path templates 45 days 1.68.0 hapi
koa-router path templates 45 days 1.56.0 koa
request-promise[2] Deprecated 1.10.0
request[3] Deprecated 1.10.0
superagent 45 days 1.102.0 superagent
fetch 0 day 2.15.0 nativefetch
tsoa 45 days 1.140.0 tsoa

RPC

The following table outlines the RPC libraries that the Instana Node.js Tracer packages support:

Table 2. Supported RPC libraries
Library Support policy npm package version Instrumentation identifier[1:1]
Apollo Federation[4] Deprecated 1.87.0 graphql
Apollo Server 45 days 4.12.0 graphql
Apollo Subgraph 45 days 3.1.2 graphql
JavaScript gRPC 45 days 1.5.7 grpc
GraphQL 45 days 1.69.0 graphql

Databases

The following table outlines the database libraries that are supported by the Instana Node.js Tracers:

Table 3. Supported database libraries
Library Support policy npm package version Instrumentation identifier[1:2]
Elasticsearch Client (@elastic/elasticsearch) 45 days 1.96.0 elasticsearch
Memcached(>= 2.2.2) 45 days 1.126.0 memcached
MongoDB(>= 2.2) 45 days 1.13.0 mongodb
Mongoose 45 days 1.13.0 mongoose
MySQL 45 days 1.29.0 mysql
MySQL2 45 days 1.37.1 mysql2
MSSQL 45 days 1.47.0 mssql
Prisma 45 days 2.11.0 prisma
Postgres 45 days 1.44.2 pg
Postgres (pg-native) 45 days 1.86.0 pgnative
Redis 45 days 1.31.0 redis
Redis (ioredis) 45 days 1.33.0 ioredis
Sequelize 45 days Depends on the specific version of a driver [5] sequelize
IBM Db2 45 days 2.2.0 db2
Couchbase 45 days 2.21.0 couchbase

Messaging

The following table outlines the messaging libraries that the Instana Node.js Tracer packages support:

Table 4. Supported messaging libraries
Library Support policy npm package version Instrumentation identifier[1:3]
NATS streaming Deprecated 1.72.0 natStreaming
NATS 45 days 1.72.0 nats
RabbitMQ/amqplib 45 days 1.51.0 amqplib
kafka-node Deprecated 1.20.0 kafkanode
kafkajs 45 days 1.83.0 kafkajs
node-rdkafka 45 days 1.139.0 rdkafka
kafka-avro Deprecated 1.139.0
Bull 45 days 1.119.0 bull

Cloud services

The following table outlines the cloud services libraries that the Instana Node.js Tracer packages support:

Table 5. Supported cloud services libraries
Library Support policy npm package version Instrumentation identifier[1:4]
AWS SDK v2 SQS[6] [7] 45 days 1.114.0 aws-sdk/v2
AWS SDK v3 SQS[6:1] [7:1] 45 days 1.132.0 aws-sdk/v3
AWS SDK v2 S3 45 days 1.115.0 aws-sdk/v2
AWS SDK v3 S3 45 days 1.129.0 aws-sdk/v3
AWS SDK v2 DynamoDB 45 days 1.116.0 aws-sdk/v2
AWS SDK v3 DynamoDB 45 days 1.127.0 aws-sdk/v3
AWS SDK v2 SNS 45 days 1.136.0 aws-sdk/v2
AWS SDK v2 Kinesis 45 days 1.120.0 aws-sdk/v2
AWS SDK v3 Kinesis 45 days 2.30.0 aws-sdk/v3
AWS SDK v2 Lambda 45 days 1.122.0 aws-sdk/v2
AWS SDK v3 Lambda 45 days 2.34.0 aws-sdk/v3
Google Cloud Storage 45 days 1.105.0 gcp/storage
Google Cloud PubSub[6:2] (>= 1.2.0) 45 days 1.107.0 gcp/pubsub
SQS Consumer 45 days 1.119.3 sqs-consumer
Azure Storage Blob 45 days 3.4.0 azure/blob

Logging

The following table outlines the logging libraries that are supported by the Instana Node.js Tracers:

Table 6. Supported logging libraries
Library Support policy npm package version Instrumentation identifier[1:5]
Bunyan 45 days 1.54.0 bunyan
express-winston 45 days 1.88.0 winston
log4js 45 days 1.84.0 log4js
Pino 45 days 1.52.0 pino
Winston(>= 3.x). 45 days 1.53.0 winston
Winston(<= 2.x) 45 days 1.88.0 winston

Async

The following table outlines the async libraries that are supported by the Instana Node.js Tracers:

Table 7. Supported Async libraries
Library Support policy npm package version Instrumentation identifier[1:6]
async 45 days 1.10.0
Bluebird 45 days 1.35.0 bluebird
Native Promises 0 day 1.10.0
Timers 0 day 1.10.0

Other

The following table outlines other libraries that are supported by the Instana Node.js Tracers:

Table 8. Other supported libraries
Library Support policy npm package version Comment
Apigee Microgateway/edgemicro (2.4, 2.5, >= 3.x) 45 days 1.89.0 Requires extra installation steps.[8]
  • For NATS: Because NATS has no message headers. For more information, see NATS tracing docs.
  • For NATS streaming: Because NATS streaming has no message headers. For more information, see NATS tracing docs.
  • When you use the npm package kafka-node to send or consume messages: Because that package does not support Kafka record headers. For more information, see kafka-node#763 and kafka-node#1309. Trace continuity is supported for Kafka in general starting with Kafka 0.11 for other runtimes and also when you use the package kafkajs. Therefore, you must use kafkajs instead of kafka-node when you use Kafka and Instana in your Node.js application.
  • When you use node-rdkafka or kafka-avro to produce messages as streams where the objectMode option is not set to true.

OpenTelemetry instrumentations

Instana uses certain OpenTelemetry instrumentations to increase the library coverage.

The following table outlines the OpenTelemetry instrumentations supported by the Instana Node.js Tracers:

Table 9. Supported OpenTelemetry instrumentations
Library Support policy npm package version Instrumentation identifier[1:7]
socket.io 45 days 2.24.0
socket.io-client 45 days 2.24.0
restify 45 days 2.24.0
fs 45 days 2.24.0
tedious 45 days 3.2.0

If you encounter issues with the OpenTelemetry integration, you can disable it. For more information about how to disable the integration, see Disabling OpenTelemetry integration.


  1. The Instrumentation identifier is the internal name that is used in the application configuration to enable or disable tracing for a specific library. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. The npm request-promise library is officially deprecated. For more information, see request-promise. ↩︎

  3. The npm request library is officially deprecated. For more information, see request. ↩︎

  4. The Apollo Federation library is officially deprecated. For more information, see Apollo Federation. ↩︎

  5. Instana does not instrument Sequelize directly, but rather the underlying database drivers. Visibility into sequelize actions depends on the database library that you are using together with sequelize (mysql, mysql2, mssql, pg, and pg-native). ↩︎

  6. To capture subsequent calls correctly after you receive a message with AWS SQS, kafkajs, kafka-node, node-rdkafka, kafka-avro, RabbitMQ, amqplib, NATS, NATS streaming, or Google Cloud PubSub, you need to use span.disableAutoEnd() and span.end(). For more information, see ending spans manually. ↩︎ ↩︎ ↩︎

  7. AWS SQS requires manual async context restoration when you use promises with async or await. ↩︎ ↩︎

  8. Using Apigee Microgateway or edgemicro requires extra installation steps. For more information about this use case, see installation instructions. ↩︎