ddtrace 0.52.0 → 0.53.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +65 -1
- data/ddtrace.gemspec +1 -1
- data/docs/DevelopmentGuide.md +1 -6
- data/docs/GettingStarted.md +66 -16
- data/lib/datadog/ci/contrib/rspec/integration.rb +2 -2
- data/lib/datadog/ci/ext/environment.rb +41 -4
- data/lib/datadog/contrib.rb +2 -0
- data/lib/datadog/core/environment/vm_cache.rb +46 -0
- data/lib/ddtrace/configuration/agent_settings_resolver.rb +107 -40
- data/lib/ddtrace/configuration/components.rb +1 -1
- data/lib/ddtrace/configuration/settings.rb +13 -3
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +46 -0
- data/lib/ddtrace/contrib/action_cable/patcher.rb +1 -0
- data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/action_mailer/event.rb +50 -0
- data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +54 -0
- data/lib/ddtrace/contrib/action_mailer/events/process.rb +41 -0
- data/lib/ddtrace/contrib/action_mailer/events.rb +31 -0
- data/lib/ddtrace/contrib/action_mailer/ext.rb +32 -0
- data/lib/ddtrace/contrib/action_mailer/integration.rb +45 -0
- data/lib/ddtrace/contrib/action_mailer/patcher.rb +27 -0
- data/lib/ddtrace/contrib/active_job/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/active_job/event.rb +54 -0
- data/lib/ddtrace/contrib/active_job/events/discard.rb +46 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +47 -0
- data/lib/ddtrace/contrib/active_job/events/perform.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +46 -0
- data/lib/ddtrace/contrib/active_job/events.rb +39 -0
- data/lib/ddtrace/contrib/active_job/ext.rb +32 -0
- data/lib/ddtrace/contrib/active_job/integration.rb +46 -0
- data/lib/ddtrace/contrib/active_job/log_injection.rb +21 -0
- data/lib/ddtrace/contrib/active_job/patcher.rb +33 -0
- data/lib/ddtrace/contrib/auto_instrument.rb +0 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +0 -1
- data/lib/ddtrace/contrib/rails/framework.rb +22 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +19 -10
- data/lib/ddtrace/contrib/registerable.rb +0 -1
- data/lib/ddtrace/contrib/sidekiq/ext.rb +3 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +10 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +26 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +30 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +30 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +29 -0
- data/lib/ddtrace/contrib/sinatra/env.rb +2 -1
- data/lib/ddtrace/contrib/sinatra/tracer.rb +15 -2
- data/lib/ddtrace/ext/git.rb +12 -0
- data/lib/ddtrace/ext/profiling.rb +1 -0
- data/lib/ddtrace/ext/runtime.rb +3 -0
- data/lib/ddtrace/ext/transport.rb +11 -0
- data/lib/ddtrace/profiling/collectors/stack.rb +71 -27
- data/lib/ddtrace/profiling/encoding/profile.rb +9 -1
- data/lib/ddtrace/profiling/events/stack.rb +7 -7
- data/lib/ddtrace/profiling/pprof/converter.rb +22 -9
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +28 -2
- data/lib/ddtrace/profiling/tasks/setup.rb +0 -1
- data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +1 -1
- data/lib/ddtrace/profiling/trace_identifiers/helper.rb +3 -3
- data/lib/ddtrace/profiling/transport/http.rb +8 -17
- data/lib/ddtrace/runtime/metrics.rb +14 -0
- data/lib/ddtrace/span.rb +7 -19
- data/lib/ddtrace/tracer.rb +1 -1
- data/lib/ddtrace/transport/http/adapters/net.rb +13 -3
- data/lib/ddtrace/transport/http/adapters/test.rb +4 -2
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +23 -12
- data/lib/ddtrace/transport/http/builder.rb +13 -6
- data/lib/ddtrace/transport/http.rb +5 -11
- data/lib/ddtrace/utils/time.rb +5 -6
- data/lib/ddtrace/version.rb +1 -1
- metadata +27 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d503fa2075462a3264c15a5e05ed1bc19afae88994c6df987dd32c6ee4f500c
|
4
|
+
data.tar.gz: 93a4cfaa1b395f1f968b1e87525df21b44c3a2fd63458013a1d506c9ae3b28e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63918fc0a3b1d50a76842f6b500ae80300c6df9afd873628230a70a17b83b8971904fe2e1b1ff71cb44143eb6ef62b294f4958188c4db24cb12ee61a2069ab34
|
7
|
+
data.tar.gz: 5de75c82e3030e4c617a0b06b590574f5389d428eba9294e8b1a5221bd7f4e3b0bfbc40295cb86d1fb91af1a199585015ea6d6d4e3080dc475e15e8bba1288f0
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,43 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [0.53.0] - 2021-10-06
|
6
|
+
|
7
|
+
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.53.0
|
8
|
+
|
9
|
+
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.52.0...v0.53.0
|
10
|
+
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- ActiveJob integration ([#1639][]) ([@bensheldon][])
|
14
|
+
- Instrument Action Cable subscribe/unsubscribe hooks ([#1674][]) ([@agrobbin][])
|
15
|
+
- Instrument Sidekiq server internal events (heartbeat, job fetch, and scheduled push) ([#1685][]) ([@agrobbin][])
|
16
|
+
- Correlate Active Job logs to the active DataDog trace ([#1694][]) ([@agrobbin][])
|
17
|
+
- Runtime Metrics: Global VM cache statistics ([#1680][])
|
18
|
+
- Automatically send traces to agent Unix socket if present ([#1700][])
|
19
|
+
- CI-App: User Provided Git Metadata ([#1662][])
|
20
|
+
|
21
|
+
### Changed
|
22
|
+
|
23
|
+
- Profiler: Set Sinatra resource setting at beginning of request and delay setting fallback resource ([#1628][])
|
24
|
+
- Profiler: Use most recent event for trace resource name ([#1695][])
|
25
|
+
- Profiler: Limit number of threads per sample ([#1699][])
|
26
|
+
- Profiler: Rename `extract_trace_resource` to `endpoint.collection.enabled` ([#1702][])
|
27
|
+
|
28
|
+
### Fixed
|
29
|
+
|
30
|
+
- Capture Rails exception before default error page is rendered ([#1684][])
|
31
|
+
- `NoMethodError` in sinatra integration when Tracer middleware is missing ([#1643][], [#1644][]) ([@mscrivo][])
|
32
|
+
- CI-App: Require `rspec-core` for RSpec integration ([#1654][]) ([@elliterate][])
|
33
|
+
- CI-App: Use the merge request branch on merge requests ([#1687][]) ([@carlallen][])
|
34
|
+
- Remove circular dependencies. ([#1668][]) ([@saturnflyer][])
|
35
|
+
- Links in the Table of Contents ([#1661][]) ([@chychkan][])
|
36
|
+
- CI-App: Fix CI Visibility Spec Tests ([#1706][])
|
37
|
+
|
38
|
+
### Refactored
|
39
|
+
|
40
|
+
- Profiler: pprof encoding benchmark and improvements ([#1511][])
|
41
|
+
|
5
42
|
## [0.52.0] - 2021-08-09
|
6
43
|
|
7
44
|
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.52.0
|
@@ -1810,7 +1847,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
1810
1847
|
|
1811
1848
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
1812
1849
|
|
1813
|
-
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.
|
1850
|
+
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.53.0...master
|
1851
|
+
[0.53.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.52.0...v0.53.0
|
1852
|
+
[0.52.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.51.1...v0.52.0
|
1814
1853
|
[0.51.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.51.0...v0.51.1
|
1815
1854
|
[0.51.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.50.0...v0.51.0
|
1816
1855
|
[0.48.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.47.0...v0.48.0
|
@@ -2511,6 +2550,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2511
2550
|
[#1507]: https://github.com/DataDog/dd-trace-rb/issues/1507
|
2512
2551
|
[#1509]: https://github.com/DataDog/dd-trace-rb/issues/1509
|
2513
2552
|
[#1510]: https://github.com/DataDog/dd-trace-rb/issues/1510
|
2553
|
+
[#1511]: https://github.com/DataDog/dd-trace-rb/issues/1511
|
2514
2554
|
[#1523]: https://github.com/DataDog/dd-trace-rb/issues/1523
|
2515
2555
|
[#1524]: https://github.com/DataDog/dd-trace-rb/issues/1524
|
2516
2556
|
[#1529]: https://github.com/DataDog/dd-trace-rb/issues/1529
|
@@ -2549,6 +2589,24 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2549
2589
|
[#1630]: https://github.com/DataDog/dd-trace-rb/issues/1630
|
2550
2590
|
[#1632]: https://github.com/DataDog/dd-trace-rb/issues/1632
|
2551
2591
|
[#1636]: https://github.com/DataDog/dd-trace-rb/issues/1636
|
2592
|
+
[#1639]: https://github.com/DataDog/dd-trace-rb/issues/1639
|
2593
|
+
[#1643]: https://github.com/DataDog/dd-trace-rb/issues/1643
|
2594
|
+
[#1644]: https://github.com/DataDog/dd-trace-rb/issues/1644
|
2595
|
+
[#1654]: https://github.com/DataDog/dd-trace-rb/issues/1654
|
2596
|
+
[#1661]: https://github.com/DataDog/dd-trace-rb/issues/1661
|
2597
|
+
[#1662]: https://github.com/DataDog/dd-trace-rb/issues/1662
|
2598
|
+
[#1668]: https://github.com/DataDog/dd-trace-rb/issues/1668
|
2599
|
+
[#1674]: https://github.com/DataDog/dd-trace-rb/issues/1674
|
2600
|
+
[#1680]: https://github.com/DataDog/dd-trace-rb/issues/1680
|
2601
|
+
[#1684]: https://github.com/DataDog/dd-trace-rb/issues/1684
|
2602
|
+
[#1685]: https://github.com/DataDog/dd-trace-rb/issues/1685
|
2603
|
+
[#1687]: https://github.com/DataDog/dd-trace-rb/issues/1687
|
2604
|
+
[#1694]: https://github.com/DataDog/dd-trace-rb/issues/1694
|
2605
|
+
[#1695]: https://github.com/DataDog/dd-trace-rb/issues/1695
|
2606
|
+
[#1699]: https://github.com/DataDog/dd-trace-rb/issues/1699
|
2607
|
+
[#1700]: https://github.com/DataDog/dd-trace-rb/issues/1700
|
2608
|
+
[#1702]: https://github.com/DataDog/dd-trace-rb/issues/1702
|
2609
|
+
[#1706]: https://github.com/DataDog/dd-trace-rb/issues/1706
|
2552
2610
|
[@AdrianLC]: https://github.com/AdrianLC
|
2553
2611
|
[@Azure7111]: https://github.com/Azure7111
|
2554
2612
|
[@BabyGroot]: https://github.com/BabyGroot
|
@@ -2577,11 +2635,14 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2577
2635
|
[@awendt]: https://github.com/awendt
|
2578
2636
|
[@bartekbsh]: https://github.com/bartekbsh
|
2579
2637
|
[@benhutton]: https://github.com/benhutton
|
2638
|
+
[@bensheldon]: https://github.com/bensheldon
|
2580
2639
|
[@bheemreddy181]: https://github.com/bheemreddy181
|
2581
2640
|
[@blaines]: https://github.com/blaines
|
2582
2641
|
[@brafales]: https://github.com/brafales
|
2583
2642
|
[@bzf]: https://github.com/bzf
|
2584
2643
|
[@callumj]: https://github.com/callumj
|
2644
|
+
[@carlallen]: https://github.com/carlallen
|
2645
|
+
[@chychkan]: https://github.com/chychkan
|
2585
2646
|
[@cjford]: https://github.com/cjford
|
2586
2647
|
[@ck3g]: https://github.com/ck3g
|
2587
2648
|
[@components]: https://github.com/components
|
@@ -2593,6 +2654,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2593
2654
|
[@dorner]: https://github.com/dorner
|
2594
2655
|
[@drcapulet]: https://github.com/drcapulet
|
2595
2656
|
[@e1senh0rn]: https://github.com/e1senh0rn
|
2657
|
+
[@elliterate]: https://github.com/elliterate
|
2596
2658
|
[@elyalvarado]: https://github.com/elyalvarado
|
2597
2659
|
[@ericmustin]: https://github.com/ericmustin
|
2598
2660
|
[@erict-square]: https://github.com/erict-square
|
@@ -2632,6 +2694,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2632
2694
|
[@mdross95]: https://github.com/mdross95
|
2633
2695
|
[@michaelkl]: https://github.com/michaelkl
|
2634
2696
|
[@mriddle]: https://github.com/mriddle
|
2697
|
+
[@mscrivo]: https://github.com/mscrivo
|
2635
2698
|
[@mstruve]: https://github.com/mstruve
|
2636
2699
|
[@mustela]: https://github.com/mustela
|
2637
2700
|
[@nic-lan]: https://github.com/nic-lan
|
@@ -2647,6 +2710,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
2647
2710
|
[@renchap]: https://github.com/renchap
|
2648
2711
|
[@ricbartm]: https://github.com/ricbartm
|
2649
2712
|
[@roccoblues]: https://github.com/roccoblues
|
2713
|
+
[@saturnflyer]: https://github.com/saturnflyer
|
2650
2714
|
[@sco11morgan]: https://github.com/sco11morgan
|
2651
2715
|
[@senny]: https://github.com/senny
|
2652
2716
|
[@shayonj]: https://github.com/shayonj
|
data/ddtrace.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
.reject { |f| f.match(%r{^(test|spec|features|[.]circleci|[.]github|[.]dd-ci|benchmarks|gemfiles|integration|tasks|sorbet)/}) }
|
35
35
|
.reject do |f|
|
36
36
|
['.dockerignore', '.env', '.gitattributes', '.gitlab-ci.yml', '.rspec', '.rubocop.yml',
|
37
|
-
'.rubocop_todo.yml', '.simplecov', 'Appraisals', 'Gemfile', 'Rakefile', 'docker-compose.yml'].include?(f)
|
37
|
+
'.rubocop_todo.yml', '.simplecov', 'Appraisals', 'Gemfile', 'Rakefile', 'docker-compose.yml', '.pryrc'].include?(f)
|
38
38
|
end
|
39
39
|
spec.executables = ['ddtracerb']
|
40
40
|
spec.require_paths = ['lib']
|
data/docs/DevelopmentGuide.md
CHANGED
@@ -42,9 +42,7 @@ Then within this container you can [run tests](#running-tests), or [run code qua
|
|
42
42
|
|
43
43
|
## Testing
|
44
44
|
|
45
|
-
The test suite uses
|
46
|
-
|
47
|
-
Minitest is deprecated in favor of RSpec; all new tests should be written in RSpec, and only existing minitests should be updated.
|
45
|
+
The test suite uses [RSpec](https://rspec.info/) tests to verify the correctness of both the core trace library and its integrations.
|
48
46
|
|
49
47
|
### Writing tests
|
50
48
|
|
@@ -68,9 +66,6 @@ Simplest way to run tests is to run `bundle exec rake ci`, which will run the en
|
|
68
66
|
Run the tests for the core library with:
|
69
67
|
|
70
68
|
```
|
71
|
-
# Run Minitest
|
72
|
-
$ bundle exec rake test:main
|
73
|
-
# Run RSpec
|
74
69
|
$ bundle exec rake spec:main
|
75
70
|
```
|
76
71
|
|
data/docs/GettingStarted.md
CHANGED
@@ -28,8 +28,10 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
28
28
|
- [Integration instrumentation](#integration-instrumentation)
|
29
29
|
- [Action Cable](#action-cable)
|
30
30
|
- [Action View](#action-view)
|
31
|
+
- [Action Mailer](#action-mailer)
|
31
32
|
- [Active Model Serializers](#active-model-serializers)
|
32
33
|
- [Action Pack](#action-pack)
|
34
|
+
- [Active Job](#active-job)
|
33
35
|
- [Active Record](#active-record)
|
34
36
|
- [Active Support](#active-support)
|
35
37
|
- [AWS](#aws)
|
@@ -44,12 +46,12 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
44
46
|
- [Grape](#grape)
|
45
47
|
- [GraphQL](#graphql)
|
46
48
|
- [gRPC](#grpc)
|
47
|
-
- [http.rb](#
|
49
|
+
- [http.rb](#httprb)
|
48
50
|
- [httpclient](#httpclient)
|
49
51
|
- [httpx](#httpx)
|
50
52
|
- [MongoDB](#mongodb)
|
51
53
|
- [MySQL2](#mysql2)
|
52
|
-
- [Net/HTTP](#
|
54
|
+
- [Net/HTTP](#nethttp)
|
53
55
|
- [Presto](#presto)
|
54
56
|
- [Qless](#qless)
|
55
57
|
- [Que](#que)
|
@@ -165,7 +167,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
165
167
|
|
166
168
|
2. Install the gem with `bundle install`
|
167
169
|
|
168
|
-
3. You can configure, override, or disable any specific integration settings by also adding a
|
170
|
+
3. You can configure, override, or disable any specific integration settings by also adding a Rails manual instrumentation configuration file (next).
|
169
171
|
|
170
172
|
#### Manual instrumentation
|
171
173
|
|
@@ -205,7 +207,7 @@ Install and configure the Datadog Agent to receive traces from your now instrume
|
|
205
207
|
require 'ddtrace/auto_instrument'
|
206
208
|
```
|
207
209
|
|
208
|
-
You can configure, override, or disable any specific integration settings by also adding a
|
210
|
+
You can configure, override, or disable any specific integration settings by also adding a Ruby manual configuration block (next).
|
209
211
|
|
210
212
|
#### Manual instrumentation
|
211
213
|
|
@@ -388,14 +390,16 @@ For a list of available integrations, and their configuration options, please re
|
|
388
390
|
| Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
|
389
391
|
| ------------------------ | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
|
390
392
|
| Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
|
393
|
+
| Action Mailer | `action_mailer` | `>= 5.0` | `>= 5.0` | *[Link](#action-mailer)* | *[Link](https://github.com/rails/rails/tree/master/actionmailer)* |
|
391
394
|
| Action View | `action_view` | `>= 3.0` | `>= 3.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
|
392
395
|
| Active Model Serializers | `active_model_serializers` | `>= 0.9` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
|
393
396
|
| Action Pack | `action_pack` | `>= 3.0` | `>= 3.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
|
397
|
+
| Active Job | `active_job` | `>= 4.2` | `>= 4.2` | *[Link](#active-job)* | *[Link](https://github.com/rails/rails/tree/master/activejob)* |
|
394
398
|
| Active Record | `active_record` | `>= 3.0` | `>= 3.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
|
395
399
|
| Active Support | `active_support` | `>= 3.0` | `>= 3.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
|
396
400
|
| AWS | `aws` | `>= 2.0` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
|
397
401
|
| Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
|
398
|
-
| Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)*
|
402
|
+
| Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
|
399
403
|
| Dalli | `dalli` | `>= 2.0` | `>= 2.0` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
|
400
404
|
| DelayedJob | `delayed_job` | `>= 4.1` | `>= 4.1` | *[Link](#delayedjob)* | *[Link](https://github.com/collectiveidea/delayed_job)* |
|
401
405
|
| Elasticsearch | `elasticsearch` | `>= 1.0` | `>= 1.0` | *[Link](#elasticsearch)* | *[Link](https://github.com/elastic/elasticsearch-ruby)* |
|
@@ -405,7 +409,7 @@ For a list of available integrations, and their configuration options, please re
|
|
405
409
|
| Grape | `grape` | `>= 1.0` | `>= 1.0` | *[Link](#grape)* | *[Link](https://github.com/ruby-grape/grape)* |
|
406
410
|
| GraphQL | `graphql` | `>= 1.7.9` | `>= 1.7.9` | *[Link](#graphql)* | *[Link](https://github.com/rmosolgo/graphql-ruby)* |
|
407
411
|
| gRPC | `grpc` | `>= 1.7` | *gem not available* | *[Link](#grpc)* | *[Link](https://github.com/grpc/grpc/tree/master/src/rubyc)* |
|
408
|
-
| http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#
|
412
|
+
| http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#httprb)* | *[Link](https://github.com/httprb/http)* |
|
409
413
|
| httpclient | `httpclient` | `>= 2.2` | `>= 2.2` | *[Link](#httpclient)* | *[Link](https://github.com/nahi/httpclient)* |
|
410
414
|
| httpx | `httpx` | `>= 0.11` | `>= 0.11` | *[Link](#httpx)* | *[Link](https://gitlab.com/honeyryderchuck/httpx)* |
|
411
415
|
| Kafka | `ruby-kafka` | `>= 0.7.10` | `>= 0.7.10` | *[Link](#kafka)* | *[Link](https://github.com/zendesk/ruby-kafka)* |
|
@@ -471,6 +475,27 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
471
475
|
| `service_name` | Service name used for rendering instrumentation. | `action_view` |
|
472
476
|
| `template_base_path` | Used when the template name is parsed. If you don't store your templates in the `views/` folder, you may need to change this value | `'views/'` |
|
473
477
|
|
478
|
+
### Action Mailer
|
479
|
+
|
480
|
+
The Action Mailer integration provides tracing for Rails 5 ActionMailer actions.
|
481
|
+
|
482
|
+
You can enable it through `Datadog.configure`:
|
483
|
+
|
484
|
+
```ruby
|
485
|
+
require 'ddtrace'
|
486
|
+
Datadog.configure do |c|
|
487
|
+
c.use :action_mailer, options
|
488
|
+
end
|
489
|
+
```
|
490
|
+
|
491
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
492
|
+
|
493
|
+
| Key | Description | Default |
|
494
|
+
| --- | ----------- | ------- |
|
495
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
496
|
+
| `service_name` | Service name used for `action_mailer` instrumentation | `'action_mailer'` |
|
497
|
+
| `email_data` | Whether or not to append additional email payload metadata to `action_mailer.deliver` spans. Fields include `['subject', 'to', 'from', 'bcc', 'cc', 'date', 'perform_deliveries']`. | `false` |
|
498
|
+
|
474
499
|
### Active Model Serializers
|
475
500
|
|
476
501
|
The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
|
@@ -510,6 +535,28 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
510
535
|
| ---| --- | --- |
|
511
536
|
| `service_name` | Service name used for rendering instrumentation. | `action_pack` |
|
512
537
|
|
538
|
+
### Active Job
|
539
|
+
|
540
|
+
Most of the time, Active Job is set up as part of Rails, but it can be activated separately:
|
541
|
+
|
542
|
+
```ruby
|
543
|
+
require 'activejob'
|
544
|
+
require 'ddtrace'
|
545
|
+
|
546
|
+
Datadog.configure do |c|
|
547
|
+
c.use :active_job, options
|
548
|
+
end
|
549
|
+
|
550
|
+
ExampleJob.perform_later
|
551
|
+
```
|
552
|
+
|
553
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
554
|
+
|
555
|
+
| Key | Description | Default |
|
556
|
+
| --- | ----------- | ------- |
|
557
|
+
| `service_name` | Service name used for `active_job` instrumentation | `'active_job'` |
|
558
|
+
| `log_injection` | Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Active Job logs. Supports the default logger (`ActiveSupport::TaggedLogging`) and `Lograge`. Details on the format of Trace Correlation information can be found in the [Trace Correlation](#trace-correlation) section. | `false` |
|
559
|
+
|
513
560
|
### Active Record
|
514
561
|
|
515
562
|
Most of the time, Active Record is set up as part of a web framework (Rails, Sinatra...) however, it can be set up alone:
|
@@ -1434,7 +1481,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1434
1481
|
|
1435
1482
|
| MRI Versions | JRuby Versions | Rails Versions |
|
1436
1483
|
| ------------- | -------------- | -------------- |
|
1437
|
-
| 2.0 | | 3.0 - 3.2 |
|
1438
1484
|
| 2.1 | | 3.0 - 4.2 |
|
1439
1485
|
| 2.2 - 2.3 | | 3.0 - 5.2 |
|
1440
1486
|
| 2.4 | | 4.2.8 - 5.2 |
|
@@ -2125,7 +2171,7 @@ For more details on how to activate distributed tracing for integrations, see th
|
|
2125
2171
|
- [Rack](#rack)
|
2126
2172
|
- [Rails](#rails)
|
2127
2173
|
- [Sinatra](#sinatra)
|
2128
|
-
- [http.rb](#
|
2174
|
+
- [http.rb](#httprb)
|
2129
2175
|
- [httpclient](#httpclient)
|
2130
2176
|
- [httpx](#httpx)
|
2131
2177
|
|
@@ -2343,7 +2389,9 @@ Datadog.tracer.trace('my.operation') { logger.warn('This is a traced operation.'
|
|
2343
2389
|
|
2344
2390
|
### Configuring the transport layer
|
2345
2391
|
|
2346
|
-
By default, the tracer submits trace data using
|
2392
|
+
By default, the tracer submits trace data using the Unix socket `/var/run/datadog/apm.socket`, if one is created by the Agent. Otherwise, it connects via HTTP to `127.0.0.1:8126`, the default TCP location the Agent listens on.
|
2393
|
+
|
2394
|
+
However, the tracer can be configured to send its trace data to alternative destinations, or by alternative protocols.
|
2347
2395
|
|
2348
2396
|
Some basic settings, such as hostname and port, can be configured using [tracer settings](#tracer-settings).
|
2349
2397
|
|
@@ -2369,7 +2417,7 @@ To use, first configure your trace agent to listen by Unix socket, then configur
|
|
2369
2417
|
```ruby
|
2370
2418
|
Datadog.configure do |c|
|
2371
2419
|
c.tracer.transport_options = proc { |t|
|
2372
|
-
# Provide
|
2420
|
+
# Provide local path to trace agent Unix socket
|
2373
2421
|
t.adapter :unix, '/tmp/ddagent/trace.sock'
|
2374
2422
|
}
|
2375
2423
|
end
|
@@ -2442,11 +2490,13 @@ See the [Dogstatsd documentation](https://www.rubydoc.info/github/DataDog/dogsta
|
|
2442
2490
|
|
2443
2491
|
The stats are VM specific and will include:
|
2444
2492
|
|
2445
|
-
| Name | Type | Description |
|
2446
|
-
| -------------------------- | ------- | -------------------------------------------------------- |
|
2447
|
-
| `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. |
|
2448
|
-
| `runtime.ruby.
|
2449
|
-
| `runtime.ruby.
|
2493
|
+
| Name | Type | Description | Available on |
|
2494
|
+
| -------------------------- | ------- | -------------------------------------------------------- | ------------ |
|
2495
|
+
| `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. | CRuby |
|
2496
|
+
| `runtime.ruby.gc.*` | `gauge` | Garbage collection statistics: collected from `GC.stat`. | All runtimes |
|
2497
|
+
| `runtime.ruby.thread_count` | `gauge` | Number of threads. | All runtimes |
|
2498
|
+
| `runtime.ruby.global_constant_state` | `gauge` | Global constant cache generation. | CRuby |
|
2499
|
+
| `runtime.ruby.global_method_state` | `gauge` | [Global method cache generation.](https://tenderlovemaking.com/2015/12/23/inline-caching-in-mri.html) | [CRuby < 3.0.0](https://docs.ruby-lang.org/en/3.0.0/NEWS_md.html#label-Implementation+improvements) |
|
2450
2500
|
|
2451
2501
|
In addition, all metrics include the following tags:
|
2452
2502
|
|
@@ -2492,7 +2542,7 @@ However, additional instrumentation provided by Datadog can be activated alongsi
|
|
2492
2542
|
|
2493
2543
|
**Setup**
|
2494
2544
|
|
2495
|
-
To get started with profiling, follow the [
|
2545
|
+
To get started with profiling, follow the [Enabling the Ruby Profiler](https://docs.datadoghq.com/tracing/profiler/enabling/ruby/) guide.
|
2496
2546
|
|
2497
2547
|
#### Troubleshooting
|
2498
2548
|
|
@@ -17,8 +17,8 @@ module Datadog
|
|
17
17
|
register_as :rspec, auto_patch: true
|
18
18
|
|
19
19
|
def self.version
|
20
|
-
Gem.loaded_specs['rspec'] \
|
21
|
-
&& Gem.loaded_specs['rspec'].version
|
20
|
+
Gem.loaded_specs['rspec-core'] \
|
21
|
+
&& Gem.loaded_specs['rspec-core'].version
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.loaded?
|
@@ -63,6 +63,9 @@ module Datadog
|
|
63
63
|
tags[key] ||= value
|
64
64
|
end
|
65
65
|
|
66
|
+
# If user defined metadata is defined, overwrite
|
67
|
+
tags.merge!(extract_user_defined_git(env))
|
68
|
+
|
66
69
|
tags.reject { |_, v| v.nil? }
|
67
70
|
end
|
68
71
|
|
@@ -131,6 +134,8 @@ module Datadog
|
|
131
134
|
TAG_PIPELINE_NUMBER => build_id,
|
132
135
|
TAG_PIPELINE_URL => pipeline_url,
|
133
136
|
TAG_JOB_URL => job_url,
|
137
|
+
TAG_STAGE_NAME => env['SYSTEM_STAGEDISPLAYNAME'],
|
138
|
+
TAG_JOB_NAME => env['SYSTEM_JOBDISPLAYNAME'],
|
134
139
|
Datadog::Ext::Git::TAG_REPOSITORY_URL =>
|
135
140
|
env['SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI'] || env['BUILD_REPOSITORY_URI'],
|
136
141
|
Datadog::Ext::Git::TAG_COMMIT_SHA => env['SYSTEM_PULLREQUEST_SOURCECOMMITID'] || env['BUILD_SOURCEVERSION'],
|
@@ -225,12 +230,17 @@ module Datadog
|
|
225
230
|
end
|
226
231
|
|
227
232
|
def extract_gitlab(env)
|
233
|
+
commit_author_name, commit_author_email = extract_name_email(env['CI_COMMIT_AUTHOR'])
|
234
|
+
|
228
235
|
url = env['CI_PIPELINE_URL']
|
229
236
|
{
|
230
|
-
Datadog::Ext::Git::TAG_BRANCH => env['
|
237
|
+
Datadog::Ext::Git::TAG_BRANCH => env['CI_COMMIT_REF_NAME'],
|
231
238
|
Datadog::Ext::Git::TAG_COMMIT_SHA => env['CI_COMMIT_SHA'],
|
232
239
|
Datadog::Ext::Git::TAG_REPOSITORY_URL => env['CI_REPOSITORY_URL'],
|
233
240
|
Datadog::Ext::Git::TAG_TAG => env['CI_COMMIT_TAG'],
|
241
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => commit_author_name,
|
242
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => commit_author_email,
|
243
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_DATE => env['CI_COMMIT_TIMESTAMP'],
|
234
244
|
TAG_STAGE_NAME => env['CI_JOB_STAGE'],
|
235
245
|
TAG_JOB_NAME => env['CI_JOB_NAME'],
|
236
246
|
TAG_JOB_URL => env['CI_JOB_URL'],
|
@@ -254,7 +264,7 @@ module Datadog
|
|
254
264
|
{
|
255
265
|
Datadog::Ext::Git::TAG_BRANCH => branch,
|
256
266
|
Datadog::Ext::Git::TAG_COMMIT_SHA => env['GIT_COMMIT'],
|
257
|
-
Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_URL'],
|
267
|
+
Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_URL'] || env['GIT_URL_1'],
|
258
268
|
Datadog::Ext::Git::TAG_TAG => tag,
|
259
269
|
TAG_PIPELINE_ID => env['BUILD_TAG'],
|
260
270
|
TAG_PIPELINE_NAME => name,
|
@@ -312,7 +322,7 @@ module Datadog
|
|
312
322
|
{
|
313
323
|
TAG_PROVIDER_NAME => 'bitrise',
|
314
324
|
TAG_PIPELINE_ID => env['BITRISE_BUILD_SLUG'],
|
315
|
-
TAG_PIPELINE_NAME => env['
|
325
|
+
TAG_PIPELINE_NAME => env['BITRISE_TRIGGERED_WORKFLOW_ID'],
|
316
326
|
TAG_PIPELINE_NUMBER => env['BITRISE_BUILD_NUMBER'],
|
317
327
|
TAG_PIPELINE_URL => env['BITRISE_BUILD_URL'],
|
318
328
|
TAG_WORKSPACE_PATH => env['BITRISE_SOURCE_DIR'],
|
@@ -324,6 +334,22 @@ module Datadog
|
|
324
334
|
}
|
325
335
|
end
|
326
336
|
|
337
|
+
def extract_user_defined_git(env)
|
338
|
+
{
|
339
|
+
Datadog::Ext::Git::TAG_REPOSITORY_URL => env[Datadog::Ext::Git::ENV_REPOSITORY_URL],
|
340
|
+
Datadog::Ext::Git::TAG_COMMIT_SHA => env[Datadog::Ext::Git::ENV_COMMIT_SHA],
|
341
|
+
Datadog::Ext::Git::TAG_BRANCH => env[Datadog::Ext::Git::ENV_BRANCH],
|
342
|
+
Datadog::Ext::Git::TAG_TAG => env[Datadog::Ext::Git::ENV_TAG],
|
343
|
+
Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env[Datadog::Ext::Git::ENV_COMMIT_MESSAGE],
|
344
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_NAME],
|
345
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_EMAIL],
|
346
|
+
Datadog::Ext::Git::TAG_COMMIT_AUTHOR_DATE => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_DATE],
|
347
|
+
Datadog::Ext::Git::TAG_COMMIT_COMMITTER_NAME => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_NAME],
|
348
|
+
Datadog::Ext::Git::TAG_COMMIT_COMMITTER_EMAIL => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_EMAIL],
|
349
|
+
Datadog::Ext::Git::TAG_COMMIT_COMMITTER_DATE => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_DATE]
|
350
|
+
}.reject { |_, v| v.nil? || v.strip.empty? }
|
351
|
+
end
|
352
|
+
|
327
353
|
def git_commit_users
|
328
354
|
# Get committer and author information in one command.
|
329
355
|
output = exec_git_command("git show -s --format='%an\t%ae\t%at\t%cn\t%ce\t%ct'")
|
@@ -428,7 +454,7 @@ module Datadog
|
|
428
454
|
|
429
455
|
def branch_or_tag(branch_or_tag)
|
430
456
|
branch = tag = nil
|
431
|
-
if branch_or_tag.include?('tags/')
|
457
|
+
if branch_or_tag && branch_or_tag.include?('tags/')
|
432
458
|
tag = branch_or_tag
|
433
459
|
else
|
434
460
|
branch = branch_or_tag
|
@@ -436,6 +462,17 @@ module Datadog
|
|
436
462
|
|
437
463
|
[branch, tag]
|
438
464
|
end
|
465
|
+
|
466
|
+
def extract_name_email(name_and_email)
|
467
|
+
if name_and_email.include?('<') && (match = /^([^<]*)<([^>]*)>$/.match(name_and_email))
|
468
|
+
name = match[1]
|
469
|
+
name = name.strip if name
|
470
|
+
email = match[2]
|
471
|
+
return [name, email] if name && email
|
472
|
+
end
|
473
|
+
|
474
|
+
[nil, name_and_email]
|
475
|
+
end
|
439
476
|
end
|
440
477
|
# rubocop:enable Metrics/ModuleLength:
|
441
478
|
end
|
data/lib/datadog/contrib.rb
CHANGED
@@ -26,9 +26,11 @@ module Datadog
|
|
26
26
|
end
|
27
27
|
|
28
28
|
require 'ddtrace/contrib/action_cable/integration'
|
29
|
+
require 'ddtrace/contrib/action_mailer/integration'
|
29
30
|
require 'ddtrace/contrib/action_pack/integration'
|
30
31
|
require 'ddtrace/contrib/action_view/integration'
|
31
32
|
require 'ddtrace/contrib/active_model_serializers/integration'
|
33
|
+
require 'ddtrace/contrib/active_job/integration'
|
32
34
|
require 'ddtrace/contrib/active_record/integration'
|
33
35
|
require 'ddtrace/contrib/active_support/integration'
|
34
36
|
require 'ddtrace/contrib/aws/integration'
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# typed: true
|
2
|
+
module Datadog
|
3
|
+
module Core
|
4
|
+
module Environment
|
5
|
+
# Reports Ruby VM cache performance statistics.
|
6
|
+
# This currently encompasses cache invalidation counters and is CRuby-specific.
|
7
|
+
#
|
8
|
+
# JRuby emulates some CRuby global cache statistics, but they are synthetic and don't
|
9
|
+
# provide actionable performance information in the same way CRuby does.
|
10
|
+
# @see https://github.com/jruby/jruby/issues/4384#issuecomment-267069314
|
11
|
+
#
|
12
|
+
# TruffleRuby does not have a global runtime cache invalidation cache.
|
13
|
+
# @see http://archive.today/2021.09.10-205702/https://medium.com/graalvm/precise-method-and-constant-invalidation-in-truffleruby-4dd56c6bac1a
|
14
|
+
module VMCache
|
15
|
+
module_function
|
16
|
+
|
17
|
+
# Global constant cache "generation" counter.
|
18
|
+
#
|
19
|
+
# Whenever a constant creation busts the global constant cache
|
20
|
+
# this value is incremented. This has a measurable performance impact
|
21
|
+
# and thus show be avoided after application warm up.
|
22
|
+
def global_constant_state
|
23
|
+
::RubyVM.stat[:global_constant_state]
|
24
|
+
end
|
25
|
+
|
26
|
+
# Global method cache "generation" counter.
|
27
|
+
#
|
28
|
+
# Whenever a method creation busts the global method cache
|
29
|
+
# this value is incremented. This has a measurable performance impact
|
30
|
+
# and thus show be avoided after application warm up.
|
31
|
+
#
|
32
|
+
# Since Ruby 3.0, the method class is kept on a per-class basis,
|
33
|
+
# largely mitigating global method cache busting. `global_method_state`
|
34
|
+
# is thus not available since Ruby 3.0.
|
35
|
+
# @see https://bugs.ruby-lang.org/issues/16614
|
36
|
+
def global_method_state
|
37
|
+
::RubyVM.stat[:global_method_state]
|
38
|
+
end
|
39
|
+
|
40
|
+
def available?
|
41
|
+
defined?(::RubyVM) && ::RubyVM.respond_to?(:stat)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|