dd-trace 5.81.0 → 5.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +7 -0
- package/loader-hook.mjs +7 -2
- package/package.json +13 -18
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +8 -7
- package/packages/datadog-esbuild/src/utils.js +14 -2
- package/packages/datadog-instrumentations/src/aerospike.js +3 -2
- package/packages/datadog-instrumentations/src/ai.js +2 -2
- package/packages/datadog-instrumentations/src/amqp10.js +1 -1
- package/packages/datadog-instrumentations/src/amqplib.js +4 -4
- package/packages/datadog-instrumentations/src/anthropic.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
- package/packages/datadog-instrumentations/src/apollo.js +3 -2
- package/packages/datadog-instrumentations/src/avsc.js +1 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
- package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
- package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
- package/packages/datadog-instrumentations/src/bluebird.js +1 -1
- package/packages/datadog-instrumentations/src/bullmq.js +11 -0
- package/packages/datadog-instrumentations/src/bunyan.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
- package/packages/datadog-instrumentations/src/child_process.js +2 -2
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
- package/packages/datadog-instrumentations/src/couchbase.js +1 -1
- package/packages/datadog-instrumentations/src/crypto.js +1 -1
- package/packages/datadog-instrumentations/src/cucumber.js +12 -13
- package/packages/datadog-instrumentations/src/cypress.js +1 -1
- package/packages/datadog-instrumentations/src/dns.js +1 -1
- package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
- package/packages/datadog-instrumentations/src/express.js +1 -1
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
- package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
- package/packages/datadog-instrumentations/src/google-genai.js +3 -3
- package/packages/datadog-instrumentations/src/graphql.js +1 -1
- package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
- package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/register.js +6 -4
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
- package/packages/datadog-instrumentations/src/hono.js +55 -10
- package/packages/datadog-instrumentations/src/ioredis.js +1 -1
- package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +2 -2
- package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
- package/packages/datadog-instrumentations/src/knex.js +1 -1
- package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
- package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
- package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
- package/packages/datadog-instrumentations/src/lodash.js +1 -2
- package/packages/datadog-instrumentations/src/mariadb.js +1 -2
- package/packages/datadog-instrumentations/src/memcached.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb.js +1 -1
- package/packages/datadog-instrumentations/src/mongoose.js +1 -1
- package/packages/datadog-instrumentations/src/mquery.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +1 -1
- package/packages/datadog-instrumentations/src/mysql2.js +1 -1
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/nyc.js +1 -1
- package/packages/datadog-instrumentations/src/openai.js +2 -2
- package/packages/datadog-instrumentations/src/opensearch.js +1 -1
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +3 -3
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +1 -1
- package/packages/datadog-instrumentations/src/prisma.js +52 -37
- package/packages/datadog-instrumentations/src/process.js +1 -1
- package/packages/datadog-instrumentations/src/promise-js.js +1 -1
- package/packages/datadog-instrumentations/src/promise.js +1 -1
- package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
- package/packages/datadog-instrumentations/src/q.js +1 -1
- package/packages/datadog-instrumentations/src/redis.js +1 -1
- package/packages/datadog-instrumentations/src/rhea.js +1 -1
- package/packages/datadog-instrumentations/src/selenium.js +1 -1
- package/packages/datadog-instrumentations/src/sequelize.js +1 -2
- package/packages/datadog-instrumentations/src/sharedb.js +1 -1
- package/packages/datadog-instrumentations/src/tedious.js +1 -1
- package/packages/datadog-instrumentations/src/undici.js +4 -4
- package/packages/datadog-instrumentations/src/url.js +1 -1
- package/packages/datadog-instrumentations/src/vitest.js +1 -1
- package/packages/datadog-instrumentations/src/vm.js +1 -1
- package/packages/datadog-instrumentations/src/when.js +1 -1
- package/packages/datadog-instrumentations/src/winston.js +1 -1
- package/packages/datadog-instrumentations/src/ws.js +3 -2
- package/packages/datadog-plugin-amqp10/src/index.js +1 -1
- package/packages/datadog-plugin-amqplib/src/index.js +1 -1
- package/packages/datadog-plugin-anthropic/src/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
- package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
- package/packages/datadog-plugin-azure-event-hubs/src/producer.js +19 -5
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -0
- package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
- package/packages/datadog-plugin-bullmq/src/index.js +18 -0
- package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
- package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
- package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
- package/packages/datadog-plugin-google-genai/src/index.js +1 -1
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-grpc/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/client.js +2 -1
- package/packages/datadog-plugin-http/src/index.js +25 -5
- package/packages/datadog-plugin-http2/src/client.js +2 -2
- package/packages/datadog-plugin-http2/src/index.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-langchain/src/index.js +1 -1
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +6 -2
- package/packages/datadog-plugin-openai/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
- package/packages/datadog-plugin-openai/src/tracing.js +2 -2
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-ws/src/close.js +56 -3
- package/packages/datadog-plugin-ws/src/index.js +4 -0
- package/packages/datadog-plugin-ws/src/producer.js +39 -4
- package/packages/datadog-plugin-ws/src/receiver.js +39 -3
- package/packages/datadog-plugin-ws/src/server.js +13 -1
- package/packages/datadog-plugin-ws/src/util.js +107 -0
- package/packages/datadog-shimmer/src/shimmer.js +2 -2
- package/packages/dd-trace/src/aiguard/sdk.js +3 -3
- package/packages/dd-trace/src/appsec/graphql.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +5 -5
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +10 -14
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
- package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
- package/packages/dd-trace/src/appsec/index.js +8 -8
- package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/index.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
- package/packages/dd-trace/src/appsec/rc-products.js +10 -0
- package/packages/dd-trace/src/appsec/recommended.json +230 -3
- package/packages/dd-trace/src/appsec/remote_config.js +177 -0
- package/packages/dd-trace/src/appsec/reporter.js +3 -3
- package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
- package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
- package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
- package/packages/dd-trace/src/appsec/waf/index.js +17 -3
- package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
- package/packages/dd-trace/src/azure_metadata.js +8 -2
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
- package/packages/dd-trace/src/config/remote_config.js +34 -0
- package/packages/dd-trace/src/config.js +29 -28
- package/packages/dd-trace/src/config_defaults.js +2 -1
- package/packages/dd-trace/src/constants.js +5 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +10 -1
- package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
- package/packages/dd-trace/src/datastreams/index.js +1 -1
- package/packages/dd-trace/src/datastreams/pathway.js +7 -7
- package/packages/dd-trace/src/datastreams/processor.js +2 -2
- package/packages/dd-trace/src/datastreams/writer.js +2 -2
- package/packages/dd-trace/src/debugger/config.js +1 -0
- package/packages/dd-trace/src/debugger/devtools_client/config.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -2
- package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -3
- package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +5 -5
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/status.js +2 -2
- package/packages/dd-trace/src/debugger/index.js +1 -1
- package/packages/dd-trace/src/dogstatsd.js +3 -2
- package/packages/dd-trace/src/encode/0.4.js +1 -1
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/span-stats.js +6 -1
- package/packages/dd-trace/src/exporter.js +2 -2
- package/packages/dd-trace/src/exporters/agent/index.js +1 -1
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +1 -1
- package/packages/dd-trace/src/exporters/common/request.js +2 -2
- package/packages/dd-trace/src/exporters/common/writer.js +1 -1
- package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
- package/packages/dd-trace/src/external-logger/src/index.js +1 -2
- package/packages/dd-trace/src/flare/index.js +1 -1
- package/packages/dd-trace/src/guardrails/index.js +6 -3
- package/packages/dd-trace/src/id.js +1 -1
- package/packages/dd-trace/src/index.js +1 -1
- package/packages/dd-trace/src/lambda/handler.js +4 -4
- package/packages/dd-trace/src/lambda/index.js +1 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
- package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
- package/packages/dd-trace/src/llmobs/constants/tags.js +7 -1
- package/packages/dd-trace/src/llmobs/index.js +8 -9
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
- package/packages/dd-trace/src/llmobs/plugins/openai/index.js +16 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +22 -10
- package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
- package/packages/dd-trace/src/llmobs/sdk.js +15 -22
- package/packages/dd-trace/src/llmobs/span_processor.js +9 -13
- package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
- package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
- package/packages/dd-trace/src/llmobs/writers/spans.js +1 -2
- package/packages/dd-trace/src/log/index.js +1 -1
- package/packages/dd-trace/src/noop/proxy.js +2 -2
- package/packages/dd-trace/src/noop/span.js +1 -1
- package/packages/dd-trace/src/openfeature/index.js +2 -2
- package/packages/dd-trace/src/openfeature/noop.js +14 -14
- package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
- package/packages/dd-trace/src/openfeature/writers/base.js +5 -5
- package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
- package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +1 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +9 -8
- package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
- package/packages/dd-trace/src/opentelemetry/metrics/meter.js +2 -2
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +4 -4
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +36 -11
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +11 -10
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
- package/packages/dd-trace/src/opentelemetry/span.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +3 -3
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +24 -8
- package/packages/dd-trace/src/opentracing/span.js +3 -3
- package/packages/dd-trace/src/opentracing/tracer.js +5 -5
- package/packages/dd-trace/src/payload-tagging/index.js +6 -2
- package/packages/dd-trace/src/plugin_manager.js +1 -1
- package/packages/dd-trace/src/plugins/apollo.js +1 -1
- package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
- package/packages/dd-trace/src/plugins/database.js +1 -1
- package/packages/dd-trace/src/plugins/index.js +5 -1
- package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/outbound.js +1 -1
- package/packages/dd-trace/src/plugins/tracing.js +1 -1
- package/packages/dd-trace/src/plugins/util/ci.js +1 -1
- package/packages/dd-trace/src/plugins/util/git.js +8 -8
- package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +24 -24
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
- package/packages/dd-trace/src/plugins/util/web.js +8 -5
- package/packages/dd-trace/src/priority_sampler.js +15 -16
- package/packages/dd-trace/src/process-tags/index.js +31 -29
- package/packages/dd-trace/src/profiling/config.js +32 -21
- package/packages/dd-trace/src/profiling/exporter_cli.js +4 -4
- package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
- package/packages/dd-trace/src/profiling/index.js +1 -1
- package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
- package/packages/dd-trace/src/profiling/profiler.js +4 -5
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
- package/packages/dd-trace/src/proxy.js +12 -18
- package/packages/dd-trace/src/remote_config/index.js +541 -137
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +50 -27
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
- package/packages/dd-trace/src/serverless.js +16 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
- package/packages/dd-trace/src/span_format.js +1 -1
- package/packages/dd-trace/src/span_processor.js +2 -2
- package/packages/dd-trace/src/span_stats.js +6 -4
- package/packages/dd-trace/src/standalone/index.js +1 -1
- package/packages/dd-trace/src/startup-log.js +3 -3
- package/packages/dd-trace/src/supported-configurations.json +3 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
- package/packages/dd-trace/src/telemetry/endpoints.js +8 -8
- package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/telemetry/telemetry.js +11 -6
- package/packages/dd-trace/src/tracer.js +3 -3
- package/packages/dd-trace/src/tracer_metadata.js +19 -15
- package/packages/dd-trace/src/remote_config/manager.js +0 -368
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const plugins = {
|
|
4
4
|
get '@anthropic-ai/sdk' () { return require('../../../datadog-plugin-anthropic/src') },
|
|
5
5
|
get '@apollo/gateway' () { return require('../../../datadog-plugin-apollo/src') },
|
|
6
6
|
get '@aws-sdk/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
@@ -26,6 +26,7 @@ module.exports = {
|
|
|
26
26
|
get '@node-redis/client' () { return require('../../../datadog-plugin-redis/src') },
|
|
27
27
|
get '@opensearch-project/opensearch' () { return require('../../../datadog-plugin-opensearch/src') },
|
|
28
28
|
get '@prisma/client' () { return require('../../../datadog-plugin-prisma/src') },
|
|
29
|
+
get './runtime/library.js' () { return require('../../../datadog-plugin-prisma/src') },
|
|
29
30
|
get '@redis/client' () { return require('../../../datadog-plugin-redis/src') },
|
|
30
31
|
get '@smithy/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
31
32
|
get '@vitest/runner' () { return require('../../../datadog-plugin-vitest/src') },
|
|
@@ -35,6 +36,7 @@ module.exports = {
|
|
|
35
36
|
get amqplib () { return require('../../../datadog-plugin-amqplib/src') },
|
|
36
37
|
get avsc () { return require('../../../datadog-plugin-avsc/src') },
|
|
37
38
|
get 'aws-sdk' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
39
|
+
get bullmq () { return require('../../../datadog-plugin-bullmq/src') },
|
|
38
40
|
get bunyan () { return require('../../../datadog-plugin-bunyan/src') },
|
|
39
41
|
get 'cassandra-driver' () { return require('../../../datadog-plugin-cassandra-driver/src') },
|
|
40
42
|
get child_process () { return require('../../../datadog-plugin-child_process/src') },
|
|
@@ -110,3 +112,5 @@ module.exports = {
|
|
|
110
112
|
get winston () { return require('../../../datadog-plugin-winston/src') },
|
|
111
113
|
get ws () { return require('../../../datadog-plugin-ws/src') }
|
|
112
114
|
}
|
|
115
|
+
|
|
116
|
+
module.exports = plugins
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { LOG } = require('../../../../ext/formats')
|
|
4
|
-
const Plugin = require('./plugin')
|
|
5
4
|
const { storage } = require('../../../datadog-core')
|
|
5
|
+
const Plugin = require('./plugin')
|
|
6
6
|
|
|
7
7
|
function messageProxy (message, holder) {
|
|
8
8
|
return new Proxy(message, {
|
|
@@ -6,9 +6,9 @@ const {
|
|
|
6
6
|
PEER_SERVICE_SOURCE_KEY,
|
|
7
7
|
PEER_SERVICE_REMAP_KEY
|
|
8
8
|
} = require('../constants')
|
|
9
|
-
const TracingPlugin = require('./tracing')
|
|
10
9
|
const { exitTags } = require('../../../datadog-code-origin')
|
|
11
10
|
const { storage } = require('../../../datadog-core')
|
|
11
|
+
const TracingPlugin = require('./tracing')
|
|
12
12
|
|
|
13
13
|
const COMMON_PEER_SVC_SOURCE_TAGS = [
|
|
14
14
|
'net.peer.name',
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const Plugin = require('./plugin')
|
|
4
3
|
const { storage } = require('../../../datadog-core')
|
|
5
4
|
const analyticsSampler = require('../analytics_sampler')
|
|
6
5
|
const { COMPONENT } = require('../constants')
|
|
6
|
+
const Plugin = require('./plugin')
|
|
7
7
|
|
|
8
8
|
class TracingPlugin extends Plugin {
|
|
9
9
|
constructor (...args) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { readFileSync } = require('fs')
|
|
4
|
+
const { getEnvironmentVariable, getEnvironmentVariables } = require('../../config-helper')
|
|
4
5
|
const {
|
|
5
6
|
GIT_BRANCH,
|
|
6
7
|
GIT_COMMIT_SHA,
|
|
@@ -32,7 +33,6 @@ const {
|
|
|
32
33
|
GIT_PULL_REQUEST_BASE_BRANCH_HEAD_SHA
|
|
33
34
|
} = require('./tags')
|
|
34
35
|
const { filterSensitiveInfoFromRepository } = require('./url')
|
|
35
|
-
const { getEnvironmentVariable, getEnvironmentVariables } = require('../../config-helper')
|
|
36
36
|
|
|
37
37
|
// Receives a string with the form 'John Doe <john.doe@gmail.com>'
|
|
38
38
|
// and returns { name: 'John Doe', email: 'john.doe@gmail.com' }
|
|
@@ -5,6 +5,14 @@ const path = require('path')
|
|
|
5
5
|
const fs = require('fs')
|
|
6
6
|
|
|
7
7
|
const log = require('../../log')
|
|
8
|
+
const {
|
|
9
|
+
incrementCountMetric,
|
|
10
|
+
distributionMetric,
|
|
11
|
+
TELEMETRY_GIT_COMMAND,
|
|
12
|
+
TELEMETRY_GIT_COMMAND_MS,
|
|
13
|
+
TELEMETRY_GIT_COMMAND_ERRORS
|
|
14
|
+
} = require('../../ci-visibility/telemetry')
|
|
15
|
+
const { storage } = require('../../../../datadog-core')
|
|
8
16
|
const {
|
|
9
17
|
GIT_COMMIT_SHA,
|
|
10
18
|
GIT_BRANCH,
|
|
@@ -26,15 +34,7 @@ const {
|
|
|
26
34
|
GIT_COMMIT_HEAD_COMMITTER_NAME,
|
|
27
35
|
GIT_COMMIT_HEAD_MESSAGE
|
|
28
36
|
} = require('./tags')
|
|
29
|
-
const {
|
|
30
|
-
incrementCountMetric,
|
|
31
|
-
distributionMetric,
|
|
32
|
-
TELEMETRY_GIT_COMMAND,
|
|
33
|
-
TELEMETRY_GIT_COMMAND_MS,
|
|
34
|
-
TELEMETRY_GIT_COMMAND_ERRORS
|
|
35
|
-
} = require('../../ci-visibility/telemetry')
|
|
36
37
|
const { filterSensitiveInfoFromRepository } = require('./url')
|
|
37
|
-
const { storage } = require('../../../../datadog-core')
|
|
38
38
|
const { cachedExec } = require('./git-cache')
|
|
39
39
|
|
|
40
40
|
const GIT_REV_LIST_MAX_BUFFER = 12 * 1024 * 1024 // 12MB
|
|
@@ -72,7 +72,7 @@ function parseUserLandFrames (stack, limit = Infinity) {
|
|
|
72
72
|
* @param {number} end - The end index of the line to parse within the stack trace.
|
|
73
73
|
* @returns {StackFrame|undefined} The parsed frame if it is a user frame, `undefined` otherwise.
|
|
74
74
|
*
|
|
75
|
-
* @typedef {
|
|
75
|
+
* @typedef {object} StackFrame
|
|
76
76
|
* @property {string} fileName - The file name of the frame.
|
|
77
77
|
* @property {string} lineNumber - The line number of the frame.
|
|
78
78
|
* @property {string} columnNumber - The column number of the frame.
|
|
@@ -10,20 +10,17 @@ const satisfies = require('../../../../../vendor/dist/semifies')
|
|
|
10
10
|
const istanbul = require('../../../../../vendor/dist/istanbul-lib-coverage')
|
|
11
11
|
const ignore = require('../../../../../vendor/dist/ignore')
|
|
12
12
|
|
|
13
|
+
const id = require('../../id')
|
|
13
14
|
const {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
} = require('./git')
|
|
24
|
-
const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
|
|
25
|
-
const { getCIMetadata } = require('./ci')
|
|
26
|
-
const { getRuntimeAndOSMetadata } = require('./env')
|
|
15
|
+
incrementCountMetric,
|
|
16
|
+
TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
|
|
17
|
+
TELEMETRY_GIT_SHA_MATCH
|
|
18
|
+
} = require('../../ci-visibility/telemetry')
|
|
19
|
+
|
|
20
|
+
const { SPAN_TYPE, RESOURCE_NAME, SAMPLING_PRIORITY } = require('../../../../../ext/tags')
|
|
21
|
+
const { SAMPLING_RULE_DECISION } = require('../../constants')
|
|
22
|
+
const { AUTO_KEEP } = require('../../../../../ext/priority')
|
|
23
|
+
const { version: ddTraceVersion } = require('../../../../../package.json')
|
|
27
24
|
const {
|
|
28
25
|
GIT_BRANCH,
|
|
29
26
|
GIT_COMMIT_SHA,
|
|
@@ -37,17 +34,20 @@ const {
|
|
|
37
34
|
CI_JOB_NAME,
|
|
38
35
|
GIT_COMMIT_HEAD_SHA
|
|
39
36
|
} = require('./tags')
|
|
40
|
-
const
|
|
37
|
+
const { getRuntimeAndOSMetadata } = require('./env')
|
|
38
|
+
const { getCIMetadata } = require('./ci')
|
|
39
|
+
const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
|
|
41
40
|
const {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
getGitMetadata,
|
|
42
|
+
getGitInformationDiscrepancy,
|
|
43
|
+
getGitDiff,
|
|
44
|
+
getGitRemoteName,
|
|
45
|
+
getSourceBranch,
|
|
46
|
+
checkAndFetchBranch,
|
|
47
|
+
getLocalBranches,
|
|
48
|
+
getMergeBase,
|
|
49
|
+
getCounts
|
|
50
|
+
} = require('./git')
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* JSDoc types for test environment metadata helpers.
|
|
@@ -813,7 +813,7 @@ function getTestEndLine (testFn, startLine = 0) {
|
|
|
813
813
|
|
|
814
814
|
/**
|
|
815
815
|
* Gets an object of test tags from an Playwright annotations array.
|
|
816
|
-
* @param {
|
|
816
|
+
* @param {object[]} annotations - Annotations from a Playwright test.
|
|
817
817
|
* @param {string} annotations[].type - Type of annotation. A string of the shape DD_TAGS[$tag_name].
|
|
818
818
|
* @param {string} annotations[].description - Value of the tag.
|
|
819
819
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { getEnvironmentVariables } = require('../../config-helper')
|
|
3
4
|
const {
|
|
4
5
|
GIT_COMMIT_SHA,
|
|
5
6
|
GIT_BRANCH,
|
|
@@ -19,7 +20,6 @@ const {
|
|
|
19
20
|
|
|
20
21
|
const { normalizeRef } = require('./ci')
|
|
21
22
|
const { filterSensitiveInfoFromRepository } = require('./url')
|
|
22
|
-
const { getEnvironmentVariables } = require('../../config-helper')
|
|
23
23
|
|
|
24
24
|
function removeEmptyValues (tags) {
|
|
25
25
|
return Object.keys(tags).reduce((filteredTags, tag) => {
|
|
@@ -7,10 +7,10 @@ const log = require('../../log')
|
|
|
7
7
|
const tags = require('../../../../../ext/tags')
|
|
8
8
|
const types = require('../../../../../ext/types')
|
|
9
9
|
const kinds = require('../../../../../ext/kinds')
|
|
10
|
-
const urlFilter = require('./urlfilter')
|
|
11
10
|
const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK } = require('../../constants')
|
|
12
|
-
const { createInferredProxySpan, finishInferredProxySpan } = require('./inferred_proxy')
|
|
13
11
|
const TracingPlugin = require('../tracing')
|
|
12
|
+
const urlFilter = require('./urlfilter')
|
|
13
|
+
const { createInferredProxySpan, finishInferredProxySpan } = require('./inferred_proxy')
|
|
14
14
|
const { extractURL, obfuscateQs, calculateHttpEndpoint } = require('./url')
|
|
15
15
|
|
|
16
16
|
let extractIp
|
|
@@ -274,11 +274,14 @@ const web = {
|
|
|
274
274
|
return context.middleware.at(-1)
|
|
275
275
|
},
|
|
276
276
|
|
|
277
|
-
// Extract the parent span from the headers and start a new span as its child
|
|
278
277
|
startChildSpan (tracer, config, name, req, traceCtx) {
|
|
279
278
|
const headers = req.headers
|
|
280
279
|
const reqCtx = contexts.get(req)
|
|
281
|
-
|
|
280
|
+
const { storage } = require('../../../../datadog-core')
|
|
281
|
+
const store = storage('legacy').getStore()
|
|
282
|
+
const pubsubSpan = store?.span?._name === 'pubsub.push.receive' ? store.span : null
|
|
283
|
+
|
|
284
|
+
let childOf = pubsubSpan || tracer.extract(FORMAT_HTTP_HEADERS, headers)
|
|
282
285
|
|
|
283
286
|
// we may have headers signaling a router proxy span should be created (such as for AWS API Gateway)
|
|
284
287
|
if (tracer._config?.inferredProxyServicesEnabled) {
|
|
@@ -503,7 +506,7 @@ function addResourceTag (context) {
|
|
|
503
506
|
const { req, span } = context
|
|
504
507
|
const tags = span.context()._tags
|
|
505
508
|
|
|
506
|
-
if (tags[
|
|
509
|
+
if (tags[RESOURCE_NAME]) return
|
|
507
510
|
|
|
508
511
|
const resource = [req.method, tags[HTTP_ROUTE]]
|
|
509
512
|
.filter(Boolean)
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const {
|
|
4
|
+
tags: {
|
|
5
|
+
MANUAL_KEEP,
|
|
6
|
+
MANUAL_DROP,
|
|
7
|
+
SAMPLING_PRIORITY,
|
|
8
|
+
SERVICE_NAME
|
|
9
|
+
},
|
|
10
|
+
priority: {
|
|
11
|
+
AUTO_REJECT,
|
|
12
|
+
AUTO_KEEP,
|
|
13
|
+
USER_REJECT,
|
|
14
|
+
USER_KEEP
|
|
15
|
+
}
|
|
16
|
+
} = require('../../../ext')
|
|
3
17
|
const log = require('./log')
|
|
4
18
|
const RateLimiter = require('./rate_limiter')
|
|
5
19
|
const Sampler = require('./sampler')
|
|
@@ -19,21 +33,6 @@ const {
|
|
|
19
33
|
DECISION_MAKER_KEY
|
|
20
34
|
} = require('./constants')
|
|
21
35
|
|
|
22
|
-
const {
|
|
23
|
-
tags: {
|
|
24
|
-
MANUAL_KEEP,
|
|
25
|
-
MANUAL_DROP,
|
|
26
|
-
SAMPLING_PRIORITY,
|
|
27
|
-
SERVICE_NAME
|
|
28
|
-
},
|
|
29
|
-
priority: {
|
|
30
|
-
AUTO_REJECT,
|
|
31
|
-
AUTO_KEEP,
|
|
32
|
-
USER_REJECT,
|
|
33
|
-
USER_KEEP
|
|
34
|
-
}
|
|
35
|
-
} = require('../../../ext')
|
|
36
|
-
|
|
37
36
|
const DEFAULT_KEY = 'service:,env:'
|
|
38
37
|
|
|
39
38
|
const defaultSampler = new Sampler(AUTO_KEEP)
|
|
@@ -54,7 +53,7 @@ class PrioritySampler {
|
|
|
54
53
|
/**
|
|
55
54
|
* Creates an instance of PrioritySampler.
|
|
56
55
|
*
|
|
57
|
-
* @typedef {
|
|
56
|
+
* @typedef {object} SamplingConfig
|
|
58
57
|
* @property {number} [sampleRate] - The default sample rate for traces.
|
|
59
58
|
* @property {string} [provenance] - Optional rule provenance ("customer" or "dynamic").
|
|
60
59
|
* @property {number} [rateLimit=100] - The maximum number of traces to sample per second.
|
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const path = require('node:path')
|
|
4
|
-
const pkg = require('../pkg')
|
|
5
4
|
|
|
6
5
|
const CURRENT_WORKING_DIRECTORY = process.cwd()
|
|
7
6
|
const ENTRYPOINT_PATH = require.main?.filename || ''
|
|
8
7
|
|
|
9
|
-
const TRACING_FIELD_NAME = '_dd.tags.process'
|
|
10
|
-
const DSM_FIELD_NAME = 'ProcessTags'
|
|
11
|
-
const PROFILING_FIELD_NAME = 'process_tags'
|
|
12
|
-
|
|
13
|
-
module.exports.TRACING_FIELD_NAME = TRACING_FIELD_NAME
|
|
14
|
-
module.exports.DSM_FIELD_NAME = DSM_FIELD_NAME
|
|
15
|
-
module.exports.PROFILING_FIELD_NAME = PROFILING_FIELD_NAME
|
|
16
|
-
|
|
17
|
-
// TODO CRASH_TRACKING_FIELD_NAME /process_tags /application/process_tags
|
|
18
|
-
// TODO: TELEMETRY_FIELD_NAME /application/process_tags
|
|
19
|
-
// TODO: DYNAMIC_INSTRUMENTATION_FIELD_NAME process_tags
|
|
20
|
-
// TODO: CLIENT_TRACE_STATISTICS_FIELD_NAME process_tags
|
|
21
|
-
// TODO: REMOTE_CONFIG_FIELD_NAME process_tags
|
|
22
|
-
|
|
23
8
|
// $ cd /foo/bar && node baz/banana.js
|
|
24
9
|
// entrypoint.workdir = bar
|
|
25
10
|
// entrypoint.name = banana
|
|
@@ -27,7 +12,11 @@ module.exports.PROFILING_FIELD_NAME = PROFILING_FIELD_NAME
|
|
|
27
12
|
// entrypoint.basedir = baz
|
|
28
13
|
// package.json.name = <from package.json>
|
|
29
14
|
|
|
30
|
-
|
|
15
|
+
// process tags are constant throughout the lifetime of a process
|
|
16
|
+
function getProcessTags () {
|
|
17
|
+
// Lazy load pkg to avoid issues with require.main during test initialization
|
|
18
|
+
const pkg = require('../pkg')
|
|
19
|
+
|
|
31
20
|
// this list is sorted alphabetically for consistent serialization
|
|
32
21
|
const tags = [
|
|
33
22
|
// the parent directory name of the entrypoint script, e.g. /foo/bar/baz/banana.js -> baz
|
|
@@ -46,25 +35,38 @@ module.exports = function getProcessTags () {
|
|
|
46
35
|
['package.json.name', pkg.name || undefined]
|
|
47
36
|
]
|
|
48
37
|
|
|
49
|
-
const
|
|
38
|
+
const tagsArray = []
|
|
39
|
+
const tagsObject = {}
|
|
50
40
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
for (const [key, value] of tags) {
|
|
42
|
+
if (value !== undefined) {
|
|
43
|
+
const sanitizedValue = sanitize(value)
|
|
44
|
+
tagsArray.push(`${key}:${sanitizedValue}`)
|
|
45
|
+
tagsObject[key] = sanitizedValue
|
|
46
|
+
}
|
|
54
47
|
}
|
|
55
|
-
}
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
const serialized = tagsArray.join(',')
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
tags,
|
|
53
|
+
serialized,
|
|
54
|
+
tagsObject,
|
|
55
|
+
tagsArray
|
|
63
56
|
}
|
|
64
|
-
return intermediary.join(',')
|
|
65
57
|
}
|
|
66
58
|
|
|
67
|
-
|
|
59
|
+
// Export the singleton
|
|
60
|
+
module.exports = getProcessTags()
|
|
61
|
+
|
|
62
|
+
module.exports.TRACING_FIELD_NAME = '_dd.tags.process'
|
|
63
|
+
module.exports.DSM_FIELD_NAME = 'ProcessTags'
|
|
64
|
+
module.exports.PROFILING_FIELD_NAME = 'process_tags'
|
|
65
|
+
module.exports.DYNAMIC_INSTRUMENTATION_FIELD_NAME = 'process_tags'
|
|
66
|
+
module.exports.TELEMETRY_FIELD_NAME = 'process_tags'
|
|
67
|
+
module.exports.REMOTE_CONFIG_FIELD_NAME = 'process_tags'
|
|
68
|
+
module.exports.CRASH_TRACKING_FIELD_NAME = 'process_tags'
|
|
69
|
+
module.exports.CLIENT_TRACE_STATISTICS_FIELD_NAME = 'ProcessTags'
|
|
68
70
|
|
|
69
71
|
/**
|
|
70
72
|
* Sanitize a process tag value
|
|
@@ -4,6 +4,12 @@ const os = require('os')
|
|
|
4
4
|
const path = require('path')
|
|
5
5
|
const { URL, format, pathToFileURL } = require('url')
|
|
6
6
|
const satisfies = require('../../../../vendor/dist/semifies')
|
|
7
|
+
const { GIT_REPOSITORY_URL, GIT_COMMIT_SHA } = require('../plugins/util/tags')
|
|
8
|
+
const { getIsAzureFunction } = require('../serverless')
|
|
9
|
+
const { isFalse, isTrue } = require('../util')
|
|
10
|
+
const { getAzureTagsFromMetadata, getAzureAppMetadata, getAzureFunctionMetadata } = require('../azure_metadata')
|
|
11
|
+
const { getEnvironmentVariables } = require('../config-helper')
|
|
12
|
+
const defaults = require('../config_defaults')
|
|
7
13
|
const { AgentExporter } = require('./exporters/agent')
|
|
8
14
|
const { FileExporter } = require('./exporters/file')
|
|
9
15
|
const { ConsoleLogger } = require('./loggers/console')
|
|
@@ -11,12 +17,7 @@ const WallProfiler = require('./profilers/wall')
|
|
|
11
17
|
const SpaceProfiler = require('./profilers/space')
|
|
12
18
|
const EventsProfiler = require('./profilers/events')
|
|
13
19
|
const { oomExportStrategies, snapshotKinds } = require('./constants')
|
|
14
|
-
const { GIT_REPOSITORY_URL, GIT_COMMIT_SHA } = require('../plugins/util/tags')
|
|
15
20
|
const { tagger } = require('./tagger')
|
|
16
|
-
const { isFalse, isTrue } = require('../util')
|
|
17
|
-
const { getAzureTagsFromMetadata, getAzureAppMetadata } = require('../azure_metadata')
|
|
18
|
-
const { getEnvironmentVariables } = require('../config-helper')
|
|
19
|
-
const defaults = require('../config_defaults')
|
|
20
21
|
|
|
21
22
|
class Config {
|
|
22
23
|
constructor (options = {}) {
|
|
@@ -73,7 +74,7 @@ class Config {
|
|
|
73
74
|
tagger.parse(DD_TAGS),
|
|
74
75
|
tagger.parse(options.tags),
|
|
75
76
|
tagger.parse({ env, host, service, version, functionname }),
|
|
76
|
-
getAzureTagsFromMetadata(getAzureAppMetadata())
|
|
77
|
+
getAzureTagsFromMetadata(getIsAzureFunction() ? getAzureFunctionMetadata() : getAzureAppMetadata())
|
|
77
78
|
)
|
|
78
79
|
|
|
79
80
|
// Add source code integration tags if available
|
|
@@ -178,6 +179,9 @@ class Config {
|
|
|
178
179
|
|
|
179
180
|
this.heapSamplingInterval = options.heapSamplingInterval ??
|
|
180
181
|
(Number(DD_PROFILING_HEAP_SAMPLING_INTERVAL) || 512 * 1024)
|
|
182
|
+
|
|
183
|
+
const isAtLeast24 = satisfies(process.versions.node, '>=24.0.0')
|
|
184
|
+
|
|
181
185
|
const uploadCompression0 = options.uploadCompression ?? DD_PROFILING_DEBUG_UPLOAD_COMPRESSION ?? 'on'
|
|
182
186
|
let [uploadCompression, level0] = uploadCompression0.split('-')
|
|
183
187
|
if (!['on', 'off', 'gzip', 'zstd'].includes(uploadCompression)) {
|
|
@@ -205,9 +209,12 @@ class Config {
|
|
|
205
209
|
}
|
|
206
210
|
}
|
|
207
211
|
|
|
208
|
-
// Default to gzip
|
|
212
|
+
// Default to either zstd (on Node.js 24+) or gzip (earlier Node.js). We could default to ztsd
|
|
213
|
+
// everywhere as we ship a Rust zstd compressor for older Node.js versions, but on 24+ we use
|
|
214
|
+
// the built-in one that runs asynchronously on libuv worker threads, just as gzip does. This is
|
|
215
|
+
// the least disruptive choice.
|
|
209
216
|
if (uploadCompression === 'on') {
|
|
210
|
-
uploadCompression = 'gzip'
|
|
217
|
+
uploadCompression = isAtLeast24 ? 'zstd' : 'gzip'
|
|
211
218
|
}
|
|
212
219
|
|
|
213
220
|
this.uploadCompression = { method: uploadCompression, level }
|
|
@@ -221,20 +228,24 @@ class Config {
|
|
|
221
228
|
|
|
222
229
|
const hasExecArg = (arg) => process.execArgv.includes(arg) || String(NODE_OPTIONS).includes(arg)
|
|
223
230
|
|
|
224
|
-
|
|
225
|
-
if (
|
|
226
|
-
if (
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
let canUseAsyncContextFrame = false
|
|
232
|
+
if (samplingContextsAvailable) {
|
|
233
|
+
if (isAtLeast24) {
|
|
234
|
+
canUseAsyncContextFrame = !hasExecArg('--no-async-context-frame')
|
|
235
|
+
} else if (satisfies(process.versions.node, '>=22.9.0')) {
|
|
236
|
+
canUseAsyncContextFrame = hasExecArg('--experimental-async-context-frame')
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
this.asyncContextFrameEnabled = isTrue(DD_PROFILING_ASYNC_CONTEXT_FRAME_ENABLED ?? canUseAsyncContextFrame)
|
|
240
|
+
if (this.asyncContextFrameEnabled && !canUseAsyncContextFrame) {
|
|
241
|
+
if (!samplingContextsAvailable) {
|
|
242
|
+
turnOffAsyncContextFrame(`on ${process.platform}`)
|
|
243
|
+
} else if (isAtLeast24) {
|
|
244
|
+
turnOffAsyncContextFrame('with --no-async-context-frame')
|
|
245
|
+
} else if (satisfies(process.versions.node, '>=22.9.0')) {
|
|
246
|
+
turnOffAsyncContextFrame('without --experimental-async-context-frame')
|
|
234
247
|
} else {
|
|
235
|
-
|
|
236
|
-
// AsyncContextFrame debuted, but it would require a change in pprof-nodejs too.
|
|
237
|
-
turnOffAsyncContextFrame('but it requires at least Node.js 23')
|
|
248
|
+
turnOffAsyncContextFrame('but it requires at least Node.js 22.9.0')
|
|
238
249
|
}
|
|
239
250
|
}
|
|
240
251
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const fs = require('fs')
|
|
4
|
+
const { fileURLToPath } = require('url')
|
|
5
|
+
const { SourceMapper, heap, encode } = require('@datadog/pprof')
|
|
6
|
+
const { getEnvironmentVariable } = require('../config-helper')
|
|
3
7
|
const { AgentExporter } = require('./exporters/agent')
|
|
4
8
|
const { FileExporter } = require('./exporters/file')
|
|
5
9
|
|
|
6
|
-
const { SourceMapper, heap, encode } = require('@datadog/pprof')
|
|
7
10
|
const { ConsoleLogger } = require('./loggers/console')
|
|
8
11
|
const { tagger } = require('./tagger')
|
|
9
|
-
const fs = require('fs')
|
|
10
|
-
const { fileURLToPath } = require('url')
|
|
11
|
-
const { getEnvironmentVariable } = require('../config-helper')
|
|
12
12
|
|
|
13
13
|
const logger = new ConsoleLogger()
|
|
14
14
|
const timeoutMs = 15 * 1000
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const retry = require('../../../../../vendor/dist/retry')
|
|
4
3
|
const { request: httpRequest } = require('http')
|
|
5
4
|
const { request: httpsRequest } = require('https')
|
|
6
|
-
const
|
|
5
|
+
const perf = require('perf_hooks').performance
|
|
6
|
+
const { urlToHttpOptions } = require('url')
|
|
7
7
|
|
|
8
|
+
const retry = require('../../../../../vendor/dist/retry')
|
|
8
9
|
// TODO: avoid using dd-trace internals. Make this a separate module?
|
|
9
10
|
const docker = require('../../exporters/common/docker')
|
|
10
11
|
const FormData = require('../../exporters/common/form-data')
|
|
11
12
|
const { storage } = require('../../../../datadog-core')
|
|
12
13
|
const version = require('../../../../../package.json').version
|
|
13
|
-
const { urlToHttpOptions } = require('url')
|
|
14
|
-
const perf = require('perf_hooks').performance
|
|
15
|
-
|
|
16
14
|
const telemetryMetrics = require('../../telemetry/metrics')
|
|
15
|
+
const { EventSerializer } = require('./event_serializer')
|
|
16
|
+
|
|
17
17
|
const profilersNamespace = telemetryMetrics.manager.namespace('profilers')
|
|
18
18
|
|
|
19
19
|
const statusCodeCounters = []
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { getEnvironmentVariable } = require('../config-helper')
|
|
3
4
|
const { Profiler, ServerlessProfiler } = require('./profiler')
|
|
4
5
|
const WallProfiler = require('./profilers/wall')
|
|
5
6
|
const SpaceProfiler = require('./profilers/space')
|
|
6
7
|
const { AgentExporter } = require('./exporters/agent')
|
|
7
8
|
const { FileExporter } = require('./exporters/file')
|
|
8
9
|
const { ConsoleLogger } = require('./loggers/console')
|
|
9
|
-
const { getEnvironmentVariable } = require('../config-helper')
|
|
10
10
|
|
|
11
11
|
const profiler = getEnvironmentVariable('AWS_LAMBDA_FUNCTION_NAME') ? new ServerlessProfiler() : new Profiler()
|
|
12
12
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { EventEmitter } = require('events')
|
|
4
|
+
const { promisify } = require('util')
|
|
5
|
+
const zlib = require('zlib')
|
|
6
|
+
const dc = require('dc-polyfill')
|
|
7
|
+
const crashtracker = require('../crashtracking')
|
|
4
8
|
const { Config } = require('./config')
|
|
5
9
|
const { snapshotKinds } = require('./constants')
|
|
6
10
|
const { threadNamePrefix } = require('./profilers/shared')
|
|
7
11
|
const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('./webspan-utils')
|
|
8
|
-
const dc = require('dc-polyfill')
|
|
9
|
-
const crashtracker = require('../crashtracking')
|
|
10
|
-
|
|
11
|
-
const { promisify } = require('util')
|
|
12
|
-
const zlib = require('zlib')
|
|
13
12
|
|
|
14
13
|
const profileSubmittedChannel = dc.channel('datadog:profiling:profile-submitted')
|
|
15
14
|
const spanFinishedChannel = dc.channel('dd-trace:span:finish')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const TracingPlugin = require('../../../plugins/tracing')
|
|
4
3
|
const { performance } = require('perf_hooks')
|
|
4
|
+
const TracingPlugin = require('../../../plugins/tracing')
|
|
5
5
|
|
|
6
6
|
// We are leveraging the TracingPlugin class for its functionality to bind
|
|
7
7
|
// start/error/finish methods to the appropriate diagnostic channels.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { performance, constants, PerformanceObserver } = require('perf_hooks')
|
|
4
|
-
const { END_TIMESTAMP_LABEL, SPAN_ID_LABEL, LOCAL_ROOT_SPAN_ID_LABEL, encodeProfileAsync } = require('./shared')
|
|
5
4
|
const {
|
|
6
5
|
Function,
|
|
7
6
|
Label,
|
|
@@ -12,8 +11,9 @@ const {
|
|
|
12
11
|
StringTable,
|
|
13
12
|
ValueType
|
|
14
13
|
} = require('../../../../../vendor/dist/pprof-format')
|
|
15
|
-
const PoissonProcessSamplingFilter = require('./poisson')
|
|
16
14
|
const { availableParallelism, effectiveLibuvThreadCount } = require('../libuv-size')
|
|
15
|
+
const { END_TIMESTAMP_LABEL, SPAN_ID_LABEL, LOCAL_ROOT_SPAN_ID_LABEL, encodeProfileAsync } = require('./shared')
|
|
16
|
+
const PoissonProcessSamplingFilter = require('./poisson')
|
|
17
17
|
// perf_hooks uses millis, with fractional part representing nanos. We emit nanos into the pprof file.
|
|
18
18
|
const MS_TO_NS = 1_000_000
|
|
19
19
|
// The number of sampling intervals that need to pass before we reset the Poisson process sampling instant.
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { storage } = require('../../../../datadog-core')
|
|
4
|
-
|
|
5
3
|
const dc = require('dc-polyfill')
|
|
4
|
+
|
|
5
|
+
const { storage } = require('../../../../datadog-core')
|
|
6
6
|
const runtimeMetrics = require('../../runtime_metrics')
|
|
7
7
|
const telemetryMetrics = require('../../telemetry/metrics')
|
|
8
|
+
const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('../webspan-utils')
|
|
9
|
+
|
|
8
10
|
const {
|
|
9
11
|
END_TIMESTAMP_LABEL,
|
|
10
12
|
SPAN_ID_LABEL,
|
|
@@ -15,8 +17,6 @@ const {
|
|
|
15
17
|
} = require('./shared')
|
|
16
18
|
const TRACE_ENDPOINT_LABEL = 'trace endpoint'
|
|
17
19
|
|
|
18
|
-
const { isWebServerSpan, endpointNameFromTags, getStartedSpans } = require('../webspan-utils')
|
|
19
|
-
|
|
20
20
|
let beforeCh
|
|
21
21
|
const enterCh = dc.channel('dd-trace:storage:enter')
|
|
22
22
|
const spanFinishCh = dc.channel('dd-trace:span:finish')
|