リリース

バージョン

Datadog Node.js のトレーシングライブラリのバージョンは、semver に従っています。新しいメジャーバージョンがリリースされると、それが主要なリリースラインとなり、すべての新機能、バグ修正、セキュリティパッチがそこに置かれます。以下は、semver の各タイプの変更を構成するものの概要です。

メジャーマイナーパッチ
旧バージョンと互換性のない変更点。旧バージョンとの互換性がある (壊れない) ものを追加する。セキュリティ修正
旧バージョンと互換性のない API の変更点。API の追加バグ修正
旧バージョンと互換性のない機能の変更点。機能の追加
Node.js のバージョン、対応ライブラリ、その他の機能など、あらゆるもののサポートを打ち切る。Node.js のバージョン、対応ライブラリ、その他の機能など、あらゆるもののテスト済みのサポートを追加する。

When a release has changes that could go in multiple semver categories, the highest one is chosen. Release notes are posted with each GitHub release.

メンテナンス

_メンテナンスモード_とは、可能な限りセキュリティとバグ修正のみを行い、新しい機能はケースバイケースで提供しない期間のことです。dd-trace のメジャーバージョンは、後続の dd-trace のメジャーバージョンがリリースされた時点でメンテナンスモードに移行します。メンテナンスモードの期間は、後続バージョンのリリース日から 1 年間です。

例えば、dd-trace のバージョン 5.0.0 が 2023 年 5 月 4 日にリリースされた場合、4.x.x リリースラインは 2024 年 5 月 4 日までメンテナンスモードベースでサポートされます。このメンテナンスモード期間中は、セキュリティパッチやバグパッチが可能な限り適用されます。

もし、特定のバージョンの dd-trace-js のサポートについて質問や懸念がある場合は、サポートにお問い合わせください。

Node.js のバージョンサポート

Node.js プロジェクトが LTS のメジャーリリースラインのサポートを終了すると (EOL になると)、次のメジャーバージョンの dd-trace でそのサポートが停止されます。 dd-trace ライブラリの最後のメジャーサポートリリースラインは、メンテナンスモードベースで、少なくともあと 1 年間はその EOL バージョンの Node.js をサポートします。

いくつかの問題は dd-trace で解決できず、代わりに Node.js で解決しなければなりません。このような場合、問題のある Node.js のリリースが EOL であれば、EOL ではない別のリリースに移行しなければ問題を解決することは不可能です。 Datadog は、LTS でない Node.js のメジャーリリースライン (奇数バージョン) に対する特定のサポートを提供するために、dd-trace の新しいリリースを作成することはありません。

最高のサポートレベルを得るためには、常に最新の LTS リリースの Node.js と、最新のメジャーバージョンの dd-trace を実行します。Node.js のどのリリースラインを使用する場合でも、最新のセキュリティ修正を確実に行うために、そのリリースラインの最新バージョンの Node.js を使用します。

Node.js のリリースについては、Node.js の公式ドキュメントを参照してください。

オペレーティングシステム対応

以下のオペレーティングシステムが dd-trace によって公式にサポートされています。リストにないオペレーティングシステムも動作する可能性はありますが、例えば ASM やプロファイリング、ランタイムメトリクスなど、いくつかの機能が欠けています。一般的には、メジャーバージョンの最初のリリース時に活発にメンテナンスされているオペレーティングシステムがサポートされます。

dd-trace バージョンオペレーティングシステムアーキテクチャ最小バージョン
3.xLinux (glibc)arm、arm64、x64CentOS 7、Debian 9、RHEL 7、Ubuntu 14.04
Linux (musl)arm、arm64、x64Alpine 3.13
macOSarm64、x64Catalina (10.15)
Windowsia32、x64Windows 8.1、Windows Server 2012
2.xLinux (glibc)arm、arm64、ia32、x64CentOS 7、Debian 9、RHEL 7、Ubuntu 14.04
Linux (musl)arm、arm64、ia32、x64Alpine 3.10
macOSarm64、x64Yosemite (10.10)
Windowsia32、x64Windows 8.1、Windows Server 2012

対応インテグレーション

APM は、プラグインシステムを使用することで追加設定なしで使用できる装置を多くの一般的なフレームワークやライブラリ向けに提供しています。一覧にないモジュールのサポートをご希望の場合は、サポートチームまでお問い合わせください。

プラグインの切り替え方法と構成方法の詳細については、API ドキュメントをご確認ください。

Web フレームワークの互換性

モジュールバージョンサポートの種類
connect2 以降完全対応
express4 以降完全対応Sails、Loopback、その他に対応
fastify1 以降完全対応
graphql0.10 以降完全対応Apollo Server および express-graphql に対応
graphql-yoga>=3.6.0完全対応Supports graphql-yoga v3 executor
gRPC>=1.13完全対応
hapi2 以降完全対応対応 [@hapi/hapi] バージョン 17.9 以降
koa2 以降完全対応
microgateway-core2.1 以降完全対応Apigee Edge 用のコアライブラリ。edgemicro CLI への対応には @datadog/cli を使用した静的パッチが必要。
moleculer>=0.14完全対応
next>=9.5完全対応See note on Complex framework usage.

The tracer supports the following Next.js features:
  • Standalone (output: 'standalone')
  • App Router
  • Middleware: Not traced, use tracer versions 4.18.0 and 3.39.0 or higher for best experience.
paperplane2.3 以降完全対応serverless-mode では非対応
restify3 以降完全対応

Complex framework usage

Some modern complex Node.js frameworks, such as Next.js and Nest.js, provide their own entry-point into an application. For example, instead of running node app.js, you may need to run next start. In these cases, the entry point is a file that ships in the framework package, not a local application file (app.js).

Loading the Datadog tracer early in your application code isn’t effective because the framework could have already loaded modules that should be instrumented.

To load the tracer before the framework, use one of the following methods:

Prefix all commands you run with an environment variable:

NODE_OPTIONS='--require dd-trace/init' npm start

Or, modify the package.json file if you typically start an application with npm or yarn run scripts:

    // existing command
    "start": "next start",

    // suggested command
    "start": "node --require dd-trace/initialize ./node_modules/next start",
    "start": "NODE_OPTIONS='--require dd-trace/initialize' ./node_modules/next start",

Note: The previous examples use Next.js, but the same approach applies to other frameworks with custom entry points, such as Nest.js. Adapt the commands to fit your specific framework and setup. Either command should work, but using NODE_OPTIONS also applies to any child Node.js processes.

Native module compatibility

ModuleSupport TypeNotes
dns完全対応
http完全対応
httpsFully supported
http2Partially supportedOnly HTTP2 clients are currently supported and not servers.
netFully supported

Data store compatibility

ModuleVersionsSupport TypeNotes
cassandra-driver>=3Fully supported
couchbase^2.4.2Fully supported
elasticsearch>=10Fully supportedSupports @elastic/elasticsearch versions >=5
ioredis>=2Fully supported
knex>=0.8Fully supportedThis integration is only for context propagation
mariadb>=3Fully supported
memcached>=2.2Fully supported
mongodb-core>=2Fully supportedSupports Mongoose
mysql>=2Fully supported
mysql2>=1Fully supported
oracledb>=5Fully supported
pg>=4Fully supportedSupports pg-native when used with pg
redis>=0.12Fully supported
sharedb>=1Fully supported
tedious>=1Fully supportedSQL Server driver for mssql and sequelize

Worker compatibility

ModuleVersionsSupport TypeNotes
@google-cloud/pubsub>=1.2Fully supported
amqp10>=3Fully supportedSupports AMQP 1.0 brokers (such as ActiveMQ, or Apache Qpid)
amqplib>=0.5Fully supportedSupports AMQP 0.9 brokers (such as RabbitMQ, or Apache Qpid)
generic-pool>=2Fully supported
kafkajs>=1.4Fully supported
rhea>=1Fully supported

SDK compatibility

ModuleVersionsSupport TypeNotes
aws-sdk>=2.1.35Fully supportedCloudWatch, DynamoDB, Kinesis, Redshift, S3, SNS, SQS, and generic requests.
openai3.xFully supported

Promise library compatibility

ModuleVersionsSupport Type
bluebird>=2Fully supported
promise>=7Fully supported
promise-js>=0.0.3Fully supported
q>=1Fully supported
when>=3Fully supported

Logger compatibility

ModuleVersionsSupport Type
bunyan>=1Fully supported
paperplane>=2.3.2Fully supported
pino>=2Fully supported
winston>=1Fully supported

Unsupported libraries

Fibers

fibers is incompatible with async_hooks, a Node.js module that is used by dd-trace-js to track asynchronous contexts thereby ensuring accurate tracing. Interactions between fibers and async_hooks may lead to unpreventable crashes and undefined behavior. So, the use of dd-trace-js with applications that invoke fibers directly or indirectly through frameworks such as Meteor may result in instability (crashes) or incorrect tracing.

For additional information or to discuss leave a comment on this github issue or reach out to support to discuss further.

Further Reading

お役に立つドキュメント、リンクや記事:

PREVIEWING: may/unit-testing