-
Notifications
You must be signed in to change notification settings - Fork 347
[SVLS-7305] Instrument Azure Event Hubs #6559
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.69 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/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 | 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 #6559 +/- ##
==========================================
- Coverage 83.90% 83.78% -0.12%
==========================================
Files 485 490 +5
Lines 20342 20657 +315
==========================================
+ Hits 17068 17308 +240
- Misses 3274 3349 +75 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-10-10 17:57:08 Comparing candidate commit 71e3cfc in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 1608 metrics, 62 unstable metrics. |
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||
- uses: ./.github/actions/node/active-lts | ||
- run: | | ||
docker cp \ |
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.
We need to add a config file for the Event Hubs emulator, but in github workflows we can't mount the file. The workaround is to use docker cp
and restart the service. https://github.com/orgs/community/discussions/42127#discussioncomment-7591609
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.
This comment likely also applies to the python tracer, but I hadn't thought about it until now: If I'm understanding correctly, the integration doesn't cover output bindings, which are actually sent from the host process within .NET. Is that an expected limitation? How will we communicate to customers that they should use the SDK directly rather than using output bindings? Is it not possible to trace output bindings?
@pablomartinezbernardo We cannot instrument them because the output bindings utilize the function worker which is written in .NET like you mentioned. They don't actually do anything other then send a payload to the function host process. In order for us to use output bindings, we would likely need the .NET tracer to run alongside the runtime's tracer which isn't feasible. |
packages/datadog-plugin-azure-functions/test/integration-test/eventhubs-test/eventhubs.spec.js
Outdated
Show resolved
Hide resolved
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.
Looking good from the logic and span structure point of view, leaving tracer and js specifics for others to review
/merge |
View all feedbacks in Devflow UI.
Added to the queue but the mergequeue is not enabled for now.
This pull request was merged directly. |
* initial * wrap eventhub methods * trace eventhub in azure function * add span attributes for event hub * update hooks * add list and single message support * refactor * use this to get the config * refactor and add span links * add buffered event queues * initial eventhubs test passing * add event hubs producer tests * break apart tests * initial eventhub function test * use batches span context array * finalize tests * uncomment tests * update docker compose * remove env file and hardcode volume * tests * try workaround * typo * fix docker cp command * update test package.json * test reordering service * update eventhubs service * missing import * update dd-trace dependancies * refactor tests * update ports * reorder services * start with azure edge * add docker cp to functions for config * try new action * typo * retry test * try using service id * update service bus version * remove localhost reference * pin core tools version for fx * update path for http * reset func core tool version * simplify github workflow * move tests to serverless action * update node version used * fix messaging system in fx * update test * fix tests and add check for empty events * fix index in eventhub test * move test to appropriate plugin
* initial * wrap eventhub methods * trace eventhub in azure function * add span attributes for event hub * update hooks * add list and single message support * refactor * use this to get the config * refactor and add span links * add buffered event queues * initial eventhubs test passing * add event hubs producer tests * break apart tests * initial eventhub function test * use batches span context array * finalize tests * uncomment tests * update docker compose * remove env file and hardcode volume * tests * try workaround * typo * fix docker cp command * update test package.json * test reordering service * update eventhubs service * missing import * update dd-trace dependancies * refactor tests * update ports * reorder services * start with azure edge * add docker cp to functions for config * try new action * typo * retry test * try using service id * update service bus version * remove localhost reference * pin core tools version for fx * update path for http * reset func core tool version * simplify github workflow * move tests to serverless action * update node version used * fix messaging system in fx * update test * fix tests and add check for empty events * fix index in eventhub test * move test to appropriate plugin
What does this PR do?
Adds support for distributed tracing in certain Azure environments
EventHubProducerClient
in the Azure Event Hubs SDKNew integration for Azure Event Hubs configurable by:
DD_TRACE_AZUREEVENTHUBS_ENABLED
(default true) enables/disables the integrationDD_TRACE_AZURE_EVENTHUBS_BATCH_LINKS_ENABLED
(default true) enables/disables Span Linking and TryAdd spansMotivation
Azure distributed tracing rollout
Plugin Checklist
Additional Notes