dd-trace 5.81.0 → 5.83.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/LICENSE-3rdparty.csv +78 -79
- package/ci/init.js +6 -6
- package/index.d.ts +159 -3
- package/loader-hook.mjs +8 -3
- package/package.json +64 -66
- package/packages/datadog-core/src/storage.js +7 -7
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +14 -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 +9 -5
- 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 +3 -3
- 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 +13 -14
- 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 +2 -2
- 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/instrumentations.js +4 -3
- package/packages/datadog-instrumentations/src/helpers/register.js +9 -11
- 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/http/client.js +2 -2
- 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 +37 -16
- package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
- package/packages/datadog-instrumentations/src/knex.js +1 -1
- package/packages/datadog-instrumentations/src/koa.js +2 -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/mocha/main.js +2 -2
- package/packages/datadog-instrumentations/src/mocha/worker.js +1 -1
- package/packages/datadog-instrumentations/src/mocha.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 +2 -2
- package/packages/datadog-instrumentations/src/mysql2.js +3 -3
- package/packages/datadog-instrumentations/src/net.js +14 -6
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/nyc.js +2 -2
- 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 +5 -5
- package/packages/datadog-instrumentations/src/pg.js +7 -5
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +4 -4
- 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 +3 -3
- 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 +15 -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/base.js +4 -4
- 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 +21 -7
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +6 -2
- 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-cucumber/src/index.js +2 -2
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +2 -2
- package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -2
- package/packages/datadog-plugin-express/src/code_origin.js +21 -15
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/code_origin.js +17 -4
- 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-jest/src/index.js +2 -2
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-langchain/src/index.js +1 -1
- package/packages/datadog-plugin-mocha/src/index.js +2 -2
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +8 -4
- 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-playwright/src/index.js +3 -3
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-undici/src/index.js +305 -2
- package/packages/datadog-plugin-vitest/src/index.js +5 -5
- 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/index.js +19 -0
- 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 +11 -15
- 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 +3 -5
- 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 +15 -4
- package/packages/dd-trace/src/baggage.js +36 -11
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -1
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -3
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +5 -5
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +4 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +4 -4
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +2 -2
- package/packages/dd-trace/src/{config_defaults.js → config/defaults.js} +5 -4
- package/packages/dd-trace/src/{config-helper.js → config/helper.js} +88 -15
- package/packages/dd-trace/src/{config.js → config/index.js} +115 -67
- package/packages/dd-trace/src/config/remote_config.js +202 -0
- package/packages/dd-trace/src/{config_stable.js → config/stable.js} +20 -32
- package/packages/dd-trace/src/{supported-configurations.json → config/supported-configurations.json} +5 -0
- package/packages/dd-trace/src/constants.js +5 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +11 -2
- 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 +3 -3
- package/packages/dd-trace/src/datastreams/writer.js +3 -3
- package/packages/dd-trace/src/debugger/config.js +1 -0
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
- 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 +6 -6
- 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/constants.js +1 -1
- 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 +84 -16
- package/packages/dd-trace/src/dogstatsd.js +5 -4
- package/packages/dd-trace/src/encode/0.4.js +3 -3
- 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 +2 -4
- package/packages/dd-trace/src/exporters/agent/writer.js +9 -14
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
- package/packages/dd-trace/src/exporters/common/docker.js +2 -2
- package/packages/dd-trace/src/exporters/common/request.js +3 -3
- package/packages/dd-trace/src/exporters/common/util.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 +2 -2
- package/packages/dd-trace/src/guardrails/index.js +6 -3
- package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
- package/packages/dd-trace/src/id.js +1 -1
- package/packages/dd-trace/src/index.js +4 -4
- package/packages/dd-trace/src/lambda/handler.js +5 -5
- package/packages/dd-trace/src/lambda/index.js +2 -2
- package/packages/dd-trace/src/lambda/runtime/patch.js +6 -6
- package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +14 -1
- package/packages/dd-trace/src/llmobs/index.js +10 -11
- package/packages/dd-trace/src/llmobs/noop.js +2 -0
- 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 +19 -5
- 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 +46 -26
- package/packages/dd-trace/src/llmobs/span_processor.js +26 -20
- package/packages/dd-trace/src/llmobs/tagger.js +175 -1
- package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
- package/packages/dd-trace/src/llmobs/writers/base.js +117 -38
- package/packages/dd-trace/src/llmobs/writers/spans.js +5 -5
- package/packages/dd-trace/src/log/index.js +5 -5
- package/packages/dd-trace/src/noop/proxy.js +5 -5
- 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 +12 -13
- 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_http_exporter_base.js +2 -2
- 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 +51 -9
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +68 -28
- package/packages/dd-trace/src/opentracing/span.js +7 -7
- 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 +8 -6
- 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 +5 -8
- package/packages/dd-trace/src/plugins/util/git-cache.js +3 -3
- 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 +25 -25
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +41 -43
- 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/profiler.js +4 -39
- package/packages/dd-trace/src/profiling/config.js +104 -50
- package/packages/dd-trace/src/profiling/exporter_cli.js +8 -8
- package/packages/dd-trace/src/profiling/exporters/agent.js +6 -6
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +9 -2
- 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 +61 -7
- 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 +43 -20
- package/packages/dd-trace/src/remote_config/capabilities.js +3 -0
- 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 +58 -31
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
- package/packages/dd-trace/src/serverless.js +17 -1
- 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 +4 -4
- 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 +7 -16
- package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
- package/packages/dd-trace/src/telemetry/endpoints.js +75 -13
- package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/telemetry/send-data.js +103 -4
- package/packages/dd-trace/src/telemetry/telemetry.js +238 -114
- 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
- /package/packages/dd-trace/src/{git_properties.js → config/git_properties.js} +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const lookup = require('dns').lookup // cache to avoid instrumentation
|
|
4
|
-
const request = require('./exporters/common/request')
|
|
5
4
|
const dgram = require('dgram')
|
|
6
5
|
const isIP = require('net').isIP
|
|
7
|
-
const log = require('./log')
|
|
8
6
|
const { URL, format } = require('url')
|
|
7
|
+
|
|
8
|
+
const request = require('./exporters/common/request')
|
|
9
|
+
const log = require('./log')
|
|
9
10
|
const Histogram = require('./histogram')
|
|
10
|
-
const defaults = require('./
|
|
11
|
+
const defaults = require('./config/defaults')
|
|
11
12
|
|
|
12
13
|
const MAX_BUFFER_SIZE = 1024 // limit from the agent
|
|
13
14
|
|
|
@@ -359,7 +360,7 @@ class CustomMetrics {
|
|
|
359
360
|
// TODO(bengl) this magic number should be configurable
|
|
360
361
|
setInterval(flush, 10 * 1000).unref()
|
|
361
362
|
|
|
362
|
-
|
|
363
|
+
globalThis[Symbol.for('dd-trace')].beforeExitHandlers.add(flush)
|
|
363
364
|
}
|
|
364
365
|
|
|
365
366
|
increment (stat, value = 1, tags) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { truncateSpan, normalizeSpan } = require('./tags-processors')
|
|
4
3
|
const { MsgpackChunk, MsgpackEncoder } = require('../msgpack')
|
|
5
4
|
const log = require('../log')
|
|
6
5
|
const { isTrue } = require('../util')
|
|
7
6
|
const { memoize } = require('../log/utils')
|
|
8
|
-
const {
|
|
7
|
+
const { getValueFromEnvSources } = require('../config/helper')
|
|
8
|
+
const { truncateSpan, normalizeSpan } = require('./tags-processors')
|
|
9
9
|
|
|
10
10
|
const SOFT_LIMIT = 8 * 1024 * 1024 // 8MB
|
|
11
11
|
|
|
@@ -31,7 +31,7 @@ class AgentEncoder {
|
|
|
31
31
|
this._stringBytes = new MsgpackChunk()
|
|
32
32
|
this._writer = writer
|
|
33
33
|
this._reset()
|
|
34
|
-
this._debugEncoding = isTrue(
|
|
34
|
+
this._debugEncoding = isTrue(getValueFromEnvSources('DD_TRACE_ENCODING_DEBUG'))
|
|
35
35
|
this._config = this._writer?._config
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
'use strict'
|
|
2
|
-
const { truncateSpan, normalizeSpan } = require('./tags-processors')
|
|
3
|
-
const { AgentEncoder } = require('./0.4')
|
|
4
2
|
const { version: ddTraceVersion } = require('../../../../package.json')
|
|
5
3
|
const { ITR_CORRELATION_ID } = require('../../src/plugins/util/test')
|
|
6
4
|
const id = require('../../src/id')
|
|
@@ -9,6 +7,8 @@ const {
|
|
|
9
7
|
TELEMETRY_ENDPOINT_PAYLOAD_SERIALIZATION_MS,
|
|
10
8
|
TELEMETRY_ENDPOINT_PAYLOAD_EVENTS_COUNT
|
|
11
9
|
} = require('../ci-visibility/telemetry')
|
|
10
|
+
const { AgentEncoder } = require('./0.4')
|
|
11
|
+
const { truncateSpan, normalizeSpan } = require('./tags-processors')
|
|
12
12
|
|
|
13
13
|
const ENCODING_VERSION = 1
|
|
14
14
|
const ALLOWED_CONTENT_TYPES = new Set(['test_session_end', 'test_module_end', 'test_suite_end', 'test'])
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict'
|
|
2
|
-
const { AgentEncoder } = require('./0.4')
|
|
3
2
|
const { MsgpackChunk } = require('../msgpack')
|
|
4
3
|
|
|
5
4
|
const {
|
|
@@ -8,6 +7,7 @@ const {
|
|
|
8
7
|
TELEMETRY_ENDPOINT_PAYLOAD_EVENTS_COUNT
|
|
9
8
|
} = require('../ci-visibility/telemetry')
|
|
10
9
|
const FormData = require('../exporters/common/form-data')
|
|
10
|
+
const { AgentEncoder } = require('./0.4')
|
|
11
11
|
|
|
12
12
|
const COVERAGE_PAYLOAD_VERSION = 2
|
|
13
13
|
const COVERAGE_KEYS_LENGTH = 2
|
|
@@ -95,7 +95,7 @@ class SpanStatsEncoder extends AgentEncoder {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
_encode (bytes, stats) {
|
|
98
|
-
this._encodeMapPrefix(bytes, 8)
|
|
98
|
+
this._encodeMapPrefix(bytes, stats.ProcessTags ? 9 : 8)
|
|
99
99
|
|
|
100
100
|
this._encodeString(bytes, 'Hostname')
|
|
101
101
|
this._encodeString(bytes, stats.Hostname)
|
|
@@ -123,6 +123,11 @@ class SpanStatsEncoder extends AgentEncoder {
|
|
|
123
123
|
|
|
124
124
|
this._encodeString(bytes, 'Sequence')
|
|
125
125
|
this._encodeLong(bytes, stats.Sequence)
|
|
126
|
+
|
|
127
|
+
if (stats.ProcessTags) {
|
|
128
|
+
this._encodeString(bytes, 'ProcessTags')
|
|
129
|
+
this._encodeString(bytes, stats.ProcessTags)
|
|
130
|
+
}
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const exporters = require('../../../ext/exporters')
|
|
4
3
|
const fs = require('fs')
|
|
4
|
+
const exporters = require('../../../ext/exporters')
|
|
5
|
+
const { getEnvironmentVariable } = require('../../dd-trace/src/config/helper')
|
|
5
6
|
const constants = require('./constants')
|
|
6
|
-
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
7
7
|
|
|
8
8
|
module.exports = function getExporter (name) {
|
|
9
9
|
switch (name) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const { URL, format } = require('url')
|
|
4
4
|
const log = require('../../log')
|
|
5
|
+
const defaults = require('../../config/defaults')
|
|
5
6
|
const Writer = require('./writer')
|
|
6
|
-
const defaults = require('../../config_defaults')
|
|
7
7
|
|
|
8
8
|
class AgentExporter {
|
|
9
9
|
#timer
|
|
@@ -31,9 +31,7 @@ class AgentExporter {
|
|
|
31
31
|
config
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
this.flush()
|
|
36
|
-
})
|
|
34
|
+
globalThis[Symbol.for('dd-trace')].beforeExitHandlers.add(this.flush.bind(this))
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
setUrl (url) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { inspect } = require('util')
|
|
4
|
+
|
|
3
5
|
const request = require('../common/request')
|
|
4
6
|
const { startupLog } = require('../../startup-log')
|
|
5
7
|
const runtimeMetrics = require('../../runtime_metrics')
|
|
@@ -26,7 +28,10 @@ class AgentWriter extends BaseWriter {
|
|
|
26
28
|
runtimeMetrics.increment(`${METRIC_PREFIX}.requests`, true)
|
|
27
29
|
|
|
28
30
|
const { _headers, _lookup, _protocolVersion, _url } = this
|
|
29
|
-
makeRequest(_protocolVersion, data, count, _url, _headers, _lookup,
|
|
31
|
+
makeRequest(_protocolVersion, data, count, _url, _headers, _lookup, (err, res, status) => {
|
|
32
|
+
// Note that logging will only happen once, regardless of how many times this is called.
|
|
33
|
+
startupLog(status !== 404 && status !== 200 ? { status, message: err?.message ?? inspect(err) } : undefined)
|
|
34
|
+
|
|
30
35
|
if (status) {
|
|
31
36
|
runtimeMetrics.increment(`${METRIC_PREFIX}.responses`, true)
|
|
32
37
|
runtimeMetrics.increment(`${METRIC_PREFIX}.responses.by.status`, `status:${status}`, true)
|
|
@@ -39,8 +44,6 @@ class AgentWriter extends BaseWriter {
|
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
46
|
|
|
42
|
-
startupLog({ agentError: err })
|
|
43
|
-
|
|
44
47
|
if (err) {
|
|
45
48
|
log.errorWithoutTelemetry('Error sending payload to the agent (status code: %s)', err.status, err)
|
|
46
49
|
done()
|
|
@@ -68,7 +71,7 @@ function getEncoder (protocolVersion) {
|
|
|
68
71
|
: require('../../encode/0.4').AgentEncoder
|
|
69
72
|
}
|
|
70
73
|
|
|
71
|
-
function makeRequest (version, data, count, url, headers, lookup,
|
|
74
|
+
function makeRequest (version, data, count, url, headers, lookup, cb) {
|
|
72
75
|
const options = {
|
|
73
76
|
path: `/v${version}/traces`,
|
|
74
77
|
method: 'PUT',
|
|
@@ -79,7 +82,7 @@ function makeRequest (version, data, count, url, headers, lookup, needsStartupLo
|
|
|
79
82
|
'X-Datadog-Trace-Count': String(count),
|
|
80
83
|
'Datadog-Meta-Lang': 'nodejs',
|
|
81
84
|
'Datadog-Meta-Lang-Version': process.version,
|
|
82
|
-
'Datadog-Meta-Lang-Interpreter': process.
|
|
85
|
+
'Datadog-Meta-Lang-Interpreter': process.versions.bun ? 'JavaScriptCore' : 'v8'
|
|
83
86
|
},
|
|
84
87
|
lookup,
|
|
85
88
|
url
|
|
@@ -87,15 +90,7 @@ function makeRequest (version, data, count, url, headers, lookup, needsStartupLo
|
|
|
87
90
|
|
|
88
91
|
log.debug('Request to the agent: %j', options)
|
|
89
92
|
|
|
90
|
-
request(data, options,
|
|
91
|
-
if (needsStartupLog) {
|
|
92
|
-
// Note that logging will only happen once, regardless of how many times this is called.
|
|
93
|
-
startupLog({
|
|
94
|
-
agentError: status !== 404 && status !== 200 ? err : undefined
|
|
95
|
-
})
|
|
96
|
-
}
|
|
97
|
-
cb(err, res, status)
|
|
98
|
-
})
|
|
93
|
+
request(data, options, cb)
|
|
99
94
|
}
|
|
100
95
|
|
|
101
96
|
module.exports = AgentWriter
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
const { URL, format } = require('url')
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const defaults = require('../../config_defaults')
|
|
5
|
+
const defaults = require('../../config/defaults')
|
|
7
6
|
const { incrementCountMetric, TELEMETRY_EVENTS_ENQUEUED_FOR_SERIALIZATION } = require('../../ci-visibility/telemetry')
|
|
7
|
+
const request = require('./request')
|
|
8
8
|
|
|
9
9
|
function fetchAgentInfo (url, callback) {
|
|
10
10
|
request('', {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const fs = require('fs')
|
|
4
|
-
const {
|
|
4
|
+
const { getValueFromEnvSources } = require('../../config/helper')
|
|
5
5
|
|
|
6
|
-
const DD_EXTERNAL_ENV =
|
|
6
|
+
const DD_EXTERNAL_ENV = getValueFromEnvSources('DD_EXTERNAL_ENV')
|
|
7
7
|
|
|
8
8
|
// The second part is the PCF / Garden regexp. We currently assume no suffix($) to avoid matching pod UIDs
|
|
9
9
|
// See https://github.com/DataDog/datadog-agent/blob/7.40.x/pkg/util/cgroups/reader.go#L50
|
|
@@ -8,11 +8,11 @@ const http = require('http')
|
|
|
8
8
|
const https = require('https')
|
|
9
9
|
const zlib = require('zlib')
|
|
10
10
|
|
|
11
|
+
const { storage } = require('../../../../datadog-core')
|
|
12
|
+
const log = require('../../log')
|
|
11
13
|
const { urlToHttpOptions } = require('./url-to-http-options-polyfill')
|
|
12
14
|
const docker = require('./docker')
|
|
13
15
|
const { httpAgent, httpsAgent } = require('./agents')
|
|
14
|
-
const { storage } = require('../../../../datadog-core')
|
|
15
|
-
const log = require('../../log')
|
|
16
16
|
|
|
17
17
|
const maxActiveRequests = 8
|
|
18
18
|
|
|
@@ -77,7 +77,7 @@ function request (data, options, callback) {
|
|
|
77
77
|
res.on('data', chunk => {
|
|
78
78
|
chunks.push(chunk)
|
|
79
79
|
})
|
|
80
|
-
res.
|
|
80
|
+
res.once('end', () => {
|
|
81
81
|
activeRequests--
|
|
82
82
|
const buffer = Buffer.concat(chunks)
|
|
83
83
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
3
|
+
const { getValueFromEnvSources } = require('../../config/helper')
|
|
4
4
|
|
|
5
5
|
function safeJSONStringify (value) {
|
|
6
6
|
return JSON.stringify(
|
|
7
7
|
value,
|
|
8
8
|
(key, value) => key === 'dd-api-key' ? undefined : value,
|
|
9
|
-
|
|
9
|
+
getValueFromEnvSources('DD_TRACE_BEAUTIFUL_LOGS') ? 2 : undefined
|
|
10
10
|
)
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const tracerLogger = require('../../log')// path to require tracer logger
|
|
4
|
-
|
|
5
3
|
const https = require('https')
|
|
4
|
+
const tracerLogger = require('../../log')// path to require tracer logger
|
|
6
5
|
|
|
7
6
|
class ExternalLogger {
|
|
8
7
|
// Note: these attribute names match the corresponding entry in the JSON payload.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
const log = require('../log')
|
|
4
4
|
const startupLog = require('../startup-log')
|
|
5
|
-
const FlareFile = require('./file')
|
|
6
5
|
const { LogChannel } = require('../log/channels')
|
|
7
6
|
const request = require('../exporters/common/request')
|
|
8
7
|
const FormData = require('../exporters/common/form-data')
|
|
8
|
+
const FlareFile = require('./file')
|
|
9
9
|
|
|
10
10
|
const MAX_LOG_SIZE = 12 * 1024 * 1024 // 12MB soft limit
|
|
11
11
|
const TIMEOUT = 20 * 1000 * 60
|
|
@@ -64,7 +64,7 @@ const flare = {
|
|
|
64
64
|
},
|
|
65
65
|
|
|
66
66
|
_sendFile (task, file, filename) {
|
|
67
|
-
if (!file) return
|
|
67
|
+
if (!file || file.length === 0) return
|
|
68
68
|
|
|
69
69
|
const form = new FormData()
|
|
70
70
|
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var path = require('path')
|
|
4
4
|
var Module = require('module')
|
|
5
|
+
|
|
6
|
+
var nodeVersion = require('../../../../version')
|
|
5
7
|
var isTrue = require('./util').isTrue
|
|
6
8
|
var log = require('./log')
|
|
7
9
|
var telemetry = require('./telemetry')
|
|
8
|
-
var nodeVersion = require('../../../../version')
|
|
9
10
|
|
|
10
11
|
var NODE_MAJOR = nodeVersion.NODE_MAJOR
|
|
11
12
|
|
|
@@ -14,7 +15,9 @@ function guard (fn) {
|
|
|
14
15
|
var clobberBailout = false
|
|
15
16
|
var forced = isTrue(process.env.DD_INJECT_FORCE)
|
|
16
17
|
var engines = require('../../../../package.json').engines
|
|
17
|
-
var
|
|
18
|
+
var versions = engines.node.match(/^>=(\d+) <(\d+)$/)
|
|
19
|
+
var minMajor = versions[1]
|
|
20
|
+
var nextMajor = versions[2]
|
|
18
21
|
var version = process.versions.node
|
|
19
22
|
|
|
20
23
|
if (process.env.DD_INJECTION_ENABLED) {
|
|
@@ -40,7 +43,7 @@ function guard (fn) {
|
|
|
40
43
|
|
|
41
44
|
// If the runtime doesn't match the engines field in package.json, then we
|
|
42
45
|
// should not initialize the tracer.
|
|
43
|
-
if (!clobberBailout && NODE_MAJOR < minMajor) {
|
|
46
|
+
if (!clobberBailout && (NODE_MAJOR < minMajor || NODE_MAJOR >= nextMajor)) {
|
|
44
47
|
initBailout = true
|
|
45
48
|
telemetry([
|
|
46
49
|
{ name: 'abort', tags: ['reason:incompatible_runtime'] },
|
|
@@ -80,7 +80,7 @@ function sendTelemetry (name, tags, resultMetadata) {
|
|
|
80
80
|
proc.on('error', function () {
|
|
81
81
|
log.error('Failed to spawn telemetry forwarder')
|
|
82
82
|
})
|
|
83
|
-
proc.
|
|
83
|
+
proc.once('exit', function (code) {
|
|
84
84
|
if (code !== 0) {
|
|
85
85
|
log.error('Telemetry forwarder exited with code', code)
|
|
86
86
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { getValueFromEnvSources } = require('./config/helper')
|
|
3
4
|
const { isFalse } = require('./util')
|
|
4
|
-
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
5
5
|
|
|
6
6
|
// Global `jest` is only present in Jest workers.
|
|
7
7
|
const inJestWorker = typeof jest !== 'undefined'
|
|
8
8
|
|
|
9
|
-
const ddTraceDisabled =
|
|
10
|
-
? isFalse(
|
|
11
|
-
: String(
|
|
9
|
+
const ddTraceDisabled = getValueFromEnvSources('DD_TRACE_ENABLED')
|
|
10
|
+
? isFalse(getValueFromEnvSources('DD_TRACE_ENABLED'))
|
|
11
|
+
: String(getValueFromEnvSources('OTEL_TRACES_EXPORTER')).toLowerCase() === 'none'
|
|
12
12
|
|
|
13
13
|
module.exports = ddTraceDisabled || inJestWorker
|
|
14
14
|
? require('./noop/proxy')
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
const log = require('../log')
|
|
4
4
|
const { channel } = require('../../../datadog-instrumentations/src/helpers/instrument')
|
|
5
5
|
const { ERROR_MESSAGE, ERROR_TYPE } = require('../constants')
|
|
6
|
+
const { getValueFromEnvSources } = require('../config/helper')
|
|
6
7
|
const { ImpendingTimeout } = require('./runtime/errors')
|
|
7
|
-
const { getEnvironmentVariable } = require('../config-helper')
|
|
8
8
|
|
|
9
9
|
const globalTracer = global._ddtrace
|
|
10
10
|
const tracer = globalTracer._tracer
|
|
@@ -21,12 +21,12 @@ let __lambdaTimeout
|
|
|
21
21
|
* Publishes to the `apm:aws:lambda:timeout` channel when
|
|
22
22
|
* the AWS Lambda run time is about to end.
|
|
23
23
|
*
|
|
24
|
-
* @param {
|
|
24
|
+
* @param {object} context AWS Lambda context object.
|
|
25
25
|
*/
|
|
26
26
|
function checkTimeout (context) {
|
|
27
27
|
const remainingTimeInMillis = context.getRemainingTimeInMillis()
|
|
28
28
|
|
|
29
|
-
let apmFlushDeadline = Number.parseInt(
|
|
29
|
+
let apmFlushDeadline = Number.parseInt(getValueFromEnvSources('DD_APM_FLUSH_DEADLINE_MILLISECONDS')) || 100
|
|
30
30
|
apmFlushDeadline = apmFlushDeadline < 0 ? 100 : apmFlushDeadline
|
|
31
31
|
|
|
32
32
|
__lambdaTimeout = setTimeout(() => {
|
|
@@ -63,7 +63,7 @@ function crashFlush () {
|
|
|
63
63
|
/**
|
|
64
64
|
* Extracts the context from the given Lambda handler arguments.
|
|
65
65
|
*
|
|
66
|
-
* @param {
|
|
66
|
+
* @param {unknown[]} args any amount of arguments
|
|
67
67
|
* @returns the context, if extraction was succesful.
|
|
68
68
|
*/
|
|
69
69
|
function extractContext (args) {
|
|
@@ -80,7 +80,7 @@ function extractContext (args) {
|
|
|
80
80
|
/**
|
|
81
81
|
* Patches your AWS Lambda handler function to add some tracing support.
|
|
82
82
|
*
|
|
83
|
-
* @param {
|
|
83
|
+
* @param {Function} lambdaHandler a Lambda handler function.
|
|
84
84
|
*/
|
|
85
85
|
exports.datadog = function datadog (lambdaHandler) {
|
|
86
86
|
return (...args) => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { getValueFromEnvSources } = require('../config/helper')
|
|
3
4
|
const { registerLambdaHook } = require('./runtime/ritm')
|
|
4
|
-
const { getEnvironmentVariable } = require('../config-helper')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* It is safe to do it this way, since customers will never be expected to disable
|
|
8
8
|
* this specific instrumentation through the init config object.
|
|
9
9
|
*/
|
|
10
|
-
const _DD_TRACE_DISABLED_INSTRUMENTATIONS =
|
|
10
|
+
const _DD_TRACE_DISABLED_INSTRUMENTATIONS = getValueFromEnvSources('DD_TRACE_DISABLED_INSTRUMENTATIONS') || ''
|
|
11
11
|
const _disabledInstrumentations = new Set(
|
|
12
12
|
_DD_TRACE_DISABLED_INSTRUMENTATIONS ? _DD_TRACE_DISABLED_INSTRUMENTATIONS.split(',') : []
|
|
13
13
|
)
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
const path = require('path')
|
|
4
4
|
|
|
5
|
-
const { _extractModuleNameAndHandlerPath, _extractModuleRootAndHandler, _getLambdaFilePaths } = require('./ritm')
|
|
6
5
|
const { datadog } = require('../handler')
|
|
7
6
|
const { addHook } = require('../../../../datadog-instrumentations/src/helpers/instrument')
|
|
8
7
|
const shimmer = require('../../../../datadog-shimmer')
|
|
9
|
-
const { getEnvironmentVariable } = require('../../config
|
|
8
|
+
const { getEnvironmentVariable, getValueFromEnvSources } = require('../../config/helper')
|
|
9
|
+
const { _extractModuleNameAndHandlerPath, _extractModuleRootAndHandler, _getLambdaFilePaths } = require('./ritm')
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Patches a Datadog Lambda module by calling `patchDatadogLambdaHandler`
|
|
13
13
|
* with the handler name `datadog`.
|
|
14
14
|
*
|
|
15
|
-
* @param {
|
|
15
|
+
* @param {object} datadogLambdaModule node module to be patched.
|
|
16
16
|
* @returns a Datadog Lambda module with the `datadog` function from
|
|
17
17
|
* `datadog-lambda-js` patched.
|
|
18
18
|
*/
|
|
@@ -27,7 +27,7 @@ const patchDatadogLambdaModule = (datadogLambdaModule) => {
|
|
|
27
27
|
* Datadog instrumentation by getting the Lambda handler from its
|
|
28
28
|
* arguments.
|
|
29
29
|
*
|
|
30
|
-
* @param {
|
|
30
|
+
* @param {Function} datadogHandler the Datadog Lambda handler to destructure.
|
|
31
31
|
* @returns the datadogHandler with its arguments patched.
|
|
32
32
|
*/
|
|
33
33
|
function patchDatadogLambdaHandler (datadogHandler) {
|
|
@@ -51,7 +51,7 @@ const patchLambdaModule = (handlerPath) => (lambdaModule) => {
|
|
|
51
51
|
/**
|
|
52
52
|
* Patches a Lambda handler in order to do Datadog instrumentation.
|
|
53
53
|
*
|
|
54
|
-
* @param {
|
|
54
|
+
* @param {Function} lambdaHandler the Lambda handler to be patched.
|
|
55
55
|
* @returns a function which patches the given Lambda handler.
|
|
56
56
|
*/
|
|
57
57
|
function patchLambdaHandler (lambdaHandler) {
|
|
@@ -59,7 +59,7 @@ function patchLambdaHandler (lambdaHandler) {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
const lambdaTaskRoot = getEnvironmentVariable('LAMBDA_TASK_ROOT')
|
|
62
|
-
const originalLambdaHandler =
|
|
62
|
+
const originalLambdaHandler = getValueFromEnvSources('DD_LAMBDA_HANDLER')
|
|
63
63
|
|
|
64
64
|
if (originalLambdaHandler === undefined) {
|
|
65
65
|
// Instrumentation is done manually.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
const path = require('path')
|
|
11
11
|
|
|
12
12
|
const log = require('../../log')
|
|
13
|
-
const { getEnvironmentVariable } = require('../../config
|
|
13
|
+
const { getEnvironmentVariable, getValueFromEnvSources } = require('../../config/helper')
|
|
14
14
|
const Hook = require('../../../../datadog-instrumentations/src/helpers/hook')
|
|
15
15
|
const instrumentations = require('../../../../datadog-instrumentations/src/helpers/instrumentations')
|
|
16
16
|
const {
|
|
@@ -61,7 +61,7 @@ function _extractModuleNameAndHandlerPath (handler) {
|
|
|
61
61
|
/**
|
|
62
62
|
* Returns all possible paths of the files to be patched when required.
|
|
63
63
|
*
|
|
64
|
-
* @param {
|
|
64
|
+
* @param {string} lambdaStylePath the path comprised of the `LAMBDA_TASK_ROOT`,
|
|
65
65
|
* the root of the module of the Lambda handler, and the module name.
|
|
66
66
|
* @returns the lambdaStylePath with appropiate extensions for the hook.
|
|
67
67
|
*/
|
|
@@ -79,7 +79,7 @@ function _getLambdaFilePaths (lambdaStylePath) {
|
|
|
79
79
|
*/
|
|
80
80
|
const registerLambdaHook = () => {
|
|
81
81
|
const lambdaTaskRoot = getEnvironmentVariable('LAMBDA_TASK_ROOT')
|
|
82
|
-
const originalLambdaHandler =
|
|
82
|
+
const originalLambdaHandler = getValueFromEnvSources('DD_LAMBDA_HANDLER')
|
|
83
83
|
|
|
84
84
|
if (originalLambdaHandler !== undefined && lambdaTaskRoot !== undefined) {
|
|
85
85
|
const [moduleRoot, moduleAndHandler] = _extractModuleRootAndHandler(originalLambdaHandler)
|
|
@@ -17,6 +17,9 @@ module.exports = {
|
|
|
17
17
|
TRACE_ID: '_ml_obs.trace_id',
|
|
18
18
|
PROPAGATED_TRACE_ID_KEY: '_dd.p.llmobs_trace_id',
|
|
19
19
|
ROOT_PARENT_ID: 'undefined',
|
|
20
|
+
DEFAULT_PROMPT_NAME: 'unnamed-prompt',
|
|
21
|
+
INTERNAL_CONTEXT_VARIABLE_KEYS: '_dd_context_variable_keys',
|
|
22
|
+
INTERNAL_QUERY_VARIABLE_KEYS: '_dd_query_variable_keys',
|
|
20
23
|
|
|
21
24
|
MODEL_NAME: '_ml_obs.meta.model_name',
|
|
22
25
|
MODEL_PROVIDER: '_ml_obs.meta.model_provider',
|
|
@@ -24,6 +27,7 @@ module.exports = {
|
|
|
24
27
|
INPUT_DOCUMENTS: '_ml_obs.meta.input.documents',
|
|
25
28
|
INPUT_MESSAGES: '_ml_obs.meta.input.messages',
|
|
26
29
|
INPUT_VALUE: '_ml_obs.meta.input.value',
|
|
30
|
+
INPUT_PROMPT: '_ml_obs.meta.input.prompt',
|
|
27
31
|
|
|
28
32
|
OUTPUT_DOCUMENTS: '_ml_obs.meta.output.documents',
|
|
29
33
|
OUTPUT_MESSAGES: '_ml_obs.meta.output.messages',
|
|
@@ -36,5 +40,14 @@ module.exports = {
|
|
|
36
40
|
CACHE_WRITE_INPUT_TOKENS_METRIC_KEY: 'cache_write_input_tokens',
|
|
37
41
|
REASONING_OUTPUT_TOKENS_METRIC_KEY: 'reasoning_output_tokens',
|
|
38
42
|
|
|
39
|
-
DROPPED_IO_COLLECTION_ERROR: 'dropped_io'
|
|
43
|
+
DROPPED_IO_COLLECTION_ERROR: 'dropped_io',
|
|
44
|
+
|
|
45
|
+
PROMPT_TRACKING_INSTRUMENTATION_METHOD: 'prompt_tracking_instrumentation_method',
|
|
46
|
+
PROMPT_MULTIMODAL: 'prompt_multimodal',
|
|
47
|
+
INSTRUMENTATION_METHOD_AUTO: 'auto',
|
|
48
|
+
INSTRUMENTATION_METHOD_ANNOTATED: 'annotated',
|
|
49
|
+
INSTRUMENTATION_METHOD_UNKNOWN: 'unknown',
|
|
50
|
+
|
|
51
|
+
ROUTING_API_KEY: '_dd.llmobs.routing.api_key',
|
|
52
|
+
ROUTING_SITE: '_dd.llmobs.routing.site'
|
|
40
53
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const util = require('node:util')
|
|
4
|
+
|
|
5
|
+
const { channel } = require('dc-polyfill')
|
|
6
|
+
|
|
3
7
|
const log = require('../log')
|
|
4
8
|
const {
|
|
5
9
|
ML_APP,
|
|
@@ -7,24 +11,19 @@ const {
|
|
|
7
11
|
PROPAGATED_PARENT_ID_KEY
|
|
8
12
|
} = require('./constants/tags')
|
|
9
13
|
const { storage } = require('./storage')
|
|
10
|
-
|
|
11
14
|
const telemetry = require('./telemetry')
|
|
12
15
|
const LLMObsSpanProcessor = require('./span_processor')
|
|
16
|
+
const LLMObsEvalMetricsWriter = require('./writers/evaluations')
|
|
17
|
+
const LLMObsTagger = require('./tagger')
|
|
18
|
+
const LLMObsSpanWriter = require('./writers/spans')
|
|
19
|
+
const { setAgentStrategy } = require('./writers/util')
|
|
13
20
|
|
|
14
|
-
const { channel } = require('dc-polyfill')
|
|
15
21
|
const spanFinishCh = channel('dd-trace:span:finish')
|
|
16
22
|
const evalMetricAppendCh = channel('llmobs:eval-metric:append')
|
|
17
23
|
const flushCh = channel('llmobs:writers:flush')
|
|
18
24
|
const injectCh = channel('dd-trace:span:inject')
|
|
19
25
|
const registerUserSpanProcessorCh = channel('llmobs:register-processor')
|
|
20
26
|
|
|
21
|
-
const LLMObsEvalMetricsWriter = require('./writers/evaluations')
|
|
22
|
-
const LLMObsTagger = require('./tagger')
|
|
23
|
-
const LLMObsSpanWriter = require('./writers/spans')
|
|
24
|
-
const { setAgentStrategy } = require('./writers/util')
|
|
25
|
-
|
|
26
|
-
const util = require('node:util')
|
|
27
|
-
|
|
28
27
|
/**
|
|
29
28
|
* Setting writers and processor globally when LLMObs is enabled
|
|
30
29
|
* We're setting these in this module instead of on the SDK.
|
|
@@ -137,9 +136,9 @@ function handleSpanProcess (span) {
|
|
|
137
136
|
spanProcessor.process(span)
|
|
138
137
|
}
|
|
139
138
|
|
|
140
|
-
function handleEvalMetricAppend (payload) {
|
|
139
|
+
function handleEvalMetricAppend ({ payload, routing }) {
|
|
141
140
|
try {
|
|
142
|
-
evalWriter.append(payload)
|
|
141
|
+
evalWriter.append(payload, routing)
|
|
143
142
|
} catch (e) {
|
|
144
143
|
log.warn(
|
|
145
144
|
// eslint-disable-next-line @stylistic/max-len
|