-
Notifications
You must be signed in to change notification settings - Fork 347
Add support for OpenTelemetry Logs API #6465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Overall package sizeSelf size: 12.72 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.2.1 | 20.64 MB | 20.65 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.10.0 | 9.91 MB | 10.3 MB | | @opentelemetry/resources | 1.9.1 | 306.54 kB | 7.46 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.73 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api-logs | 0.205.0 | 201.51 kB | 1.42 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.4 | 123.18 kB | 851.76 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #6465 +/- ##
==========================================
+ Coverage 83.97% 84.00% +0.02%
==========================================
Files 489 497 +8
Lines 20471 20940 +469
==========================================
+ Hits 17191 17591 +400
- Misses 3280 3349 +69 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-10-10 19:49:53 Comparing candidate commit 7f4fbff in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 1600 metrics, 70 unstable metrics. |
3de2a5c
to
543805a
Compare
c5f752b
to
df7cbca
Compare
57ab573
to
9eded3b
Compare
9eded3b
to
2c0a5a5
Compare
a520a22
to
a890b1f
Compare
a890b1f
to
df5d6b4
Compare
…ter and improve tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall LGTM, just a few small nits. Could we also add an integration test under ./integration-test to cover the client flow?
|
||
// Disable log injection when OTEL logs are enabled | ||
// OTEL logs and DD log injection are mutually exclusive | ||
if (this._env.otelLogsEnabled) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we add a unit test for this scenario?
packages/dd-trace/src/proxy.js
Outdated
} | ||
} | ||
|
||
#initializeOpenTelemetryLogs (config) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NIT: could we do the initialization in ./opentelemetry/logs/index.js ?
I am validating this behavior in the system test so I think it's unnessary but I can add it if it's a hard requirement to merge this PR: DataDog/system-tests#5437 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, while I would prefer to have a few more tests for handling all different data types.
The http part is mocked, so I understand that this is not yet tested. I just wondered, if we want to mock the http layer. That way that would also be tested and we can rely on even more parts in the tests.
a4df6c1
to
cea4a8a
Compare
cea4a8a
to
7f4fbff
Compare
* first attempt at otel logs support * lint files and centralize configs * add tests * clean up yarn.lock * clean up logs * add back log exporter logic * clean up docs * clean up docs and fix otlp protocol * revert readme docs * add new otel files * working version * fmy * fmt * Update packages/dd-trace/src/config_defaults.js * fix tests * allow any version of logs api, let opentelemetry api determine the version * add otlp payload tests * add telemetry metrics * some other clean ups * simplify tests * use agent hostname to resolve otlp endpoints * clean up initalization * parse additional otlp headers * clean up component args * clean up docs * clean up component args * remove addLogProcessor, init provider with a processor * support trace-log correlation * clean up registering provider in tests, and rename exporter arg * first round of clean ups from PR review * clean ups part 2 * make things private and clean up tests * clean up tests * clean up yarn file * remove unused configs * fix context issues * nother round of clean ups * group payloads by instrumentation scope * fix typing * address review comments * add better typing, and better support for sending schemaurl * revert instrumentationScope change to span * review comments * clean up protobuf loader file * lint * move protos to same dir, this will set up metrics work * clean up throws * update protos * disable log injection when otel logs support is enabled * update configurations to pass telemetry system tests * remove useless import * add more tests * provide fix for failing system test * add test case for noop logger and fix mocking for remote config * add test case for noop logger and fix mocking for remote config * fix encoding for doubles, remove unused shutdown code, test getLogger params * remove unused timer and shutdown logic, simplify loggerprovider register and improve tests * fix comment * clean up how otel endpoint configs are loaded * address Ayans comments * add integration tests
* first attempt at otel logs support * lint files and centralize configs * add tests * clean up yarn.lock * clean up logs * add back log exporter logic * clean up docs * clean up docs and fix otlp protocol * revert readme docs * add new otel files * working version * fmy * fmt * Update packages/dd-trace/src/config_defaults.js * fix tests * allow any version of logs api, let opentelemetry api determine the version * add otlp payload tests * add telemetry metrics * some other clean ups * simplify tests * use agent hostname to resolve otlp endpoints * clean up initalization * parse additional otlp headers * clean up component args * clean up docs * clean up component args * remove addLogProcessor, init provider with a processor * support trace-log correlation * clean up registering provider in tests, and rename exporter arg * first round of clean ups from PR review * clean ups part 2 * make things private and clean up tests * clean up tests * clean up yarn file * remove unused configs * fix context issues * nother round of clean ups * group payloads by instrumentation scope * fix typing * address review comments * add better typing, and better support for sending schemaurl * revert instrumentationScope change to span * review comments * clean up protobuf loader file * lint * move protos to same dir, this will set up metrics work * clean up throws * update protos * disable log injection when otel logs support is enabled * update configurations to pass telemetry system tests * remove useless import * add more tests * provide fix for failing system test * add test case for noop logger and fix mocking for remote config * add test case for noop logger and fix mocking for remote config * fix encoding for doubles, remove unused shutdown code, test getLogger params * remove unused timer and shutdown logic, simplify loggerprovider register and improve tests * fix comment * clean up how otel endpoint configs are loaded * address Ayans comments * add integration tests
What does this PR do?
This PR adds OpenTelemetry Logs support to dd-trace-js, enabling users to emit structured log data that integrates with the OpenTelemetry ecosystem. The implementation includes:
Motivation
OpenTelemetry has become the standard for observability in the cloud-native ecosystem. This implementation enables users to:
Checklist
Additional Notes