ddtrace 0.38.0 → 0.43.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +56 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.gitlab-ci.yml +1 -0
- data/.simplecov +38 -0
- data/Appraisals +293 -105
- data/CHANGELOG.md +192 -1
- data/CONTRIBUTING.md +2 -2
- data/Rakefile +554 -480
- data/ddtrace.gemspec +3 -0
- data/docs/DevelopmentGuide.md +28 -2
- data/docs/GettingStarted.md +207 -82
- data/lib/ddtrace.rb +4 -0
- data/lib/ddtrace/buffer.rb +259 -52
- data/lib/ddtrace/configuration.rb +55 -5
- data/lib/ddtrace/configuration/components.rb +4 -7
- data/lib/ddtrace/configuration/options.rb +3 -1
- data/lib/ddtrace/configuration/settings.rb +18 -6
- data/lib/ddtrace/context.rb +18 -0
- data/lib/ddtrace/context_provider.rb +17 -5
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_cable/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_support/ext.rb +8 -2
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +10 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/aws/ext.rb +5 -2
- data/lib/ddtrace/contrib/aws/instrumentation.rb +6 -1
- data/lib/ddtrace/contrib/aws/patcher.rb +0 -1
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/ddtrace/contrib/configurable.rb +2 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +4 -5
- data/lib/ddtrace/contrib/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +19 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +104 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +40 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +9 -2
- data/lib/ddtrace/contrib/delayed_job/ext.rb +7 -2
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +39 -15
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +4 -0
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +4 -2
- data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +4 -0
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/excon/ext.rb +5 -2
- data/lib/ddtrace/contrib/excon/middleware.rb +11 -1
- data/lib/ddtrace/contrib/extensions.rb +1 -1
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
- data/lib/ddtrace/contrib/faraday/middleware.rb +4 -0
- data/lib/ddtrace/contrib/faraday/patcher.rb +13 -4
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +14 -3
- data/lib/ddtrace/contrib/grape/endpoint.rb +24 -7
- data/lib/ddtrace/contrib/grape/ext.rb +5 -2
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -0
- data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/http/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/instrumentation.rb +6 -2
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/httprb/ext.rb +5 -2
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +8 -8
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/kafka/event.rb +1 -1
- data/lib/ddtrace/contrib/kafka/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +4 -0
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +4 -0
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/presto/ext.rb +5 -2
- data/lib/ddtrace/contrib/presto/instrumentation.rb +3 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +57 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rack/ext.rb +5 -2
- data/lib/ddtrace/contrib/rack/middlewares.rb +2 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +12 -2
- data/lib/ddtrace/contrib/rails/ext.rb +6 -2
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +29 -0
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/rake/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/redis/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/tags.rb +4 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/resque/ext.rb +5 -2
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +4 -0
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/rspec/example.rb +61 -0
- data/lib/ddtrace/contrib/rspec/example_group.rb +61 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +19 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +41 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +25 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sequel/database.rb +3 -1
- data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
- data/lib/ddtrace/contrib/sequel/ext.rb +6 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +35 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/sidekiq/ext.rb +5 -2
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +4 -1
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +5 -2
- data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
- data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +55 -0
- data/lib/ddtrace/contrib/status_code_matcher.rb +67 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
- data/lib/ddtrace/diagnostics/environment_logger.rb +1 -1
- data/lib/ddtrace/environment.rb +14 -4
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +265 -0
- data/lib/ddtrace/ext/diagnostics.rb +2 -1
- data/lib/ddtrace/ext/distributed.rb +8 -2
- data/lib/ddtrace/ext/git.rb +12 -0
- data/lib/ddtrace/ext/integration.rb +8 -0
- data/lib/ddtrace/ext/runtime.rb +2 -0
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/opentracer/distributed_headers.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +18 -6
- data/lib/ddtrace/runtime/identity.rb +4 -5
- data/lib/ddtrace/runtime/metrics.rb +24 -6
- data/lib/ddtrace/sampler.rb +2 -2
- data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
- data/lib/ddtrace/span.rb +152 -27
- data/lib/ddtrace/tracer.rb +25 -13
- data/lib/ddtrace/transport/http.rb +15 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +8 -2
- data/lib/ddtrace/transport/http/adapters/test.rb +2 -0
- data/lib/ddtrace/transport/http/statistics.rb +14 -1
- data/lib/ddtrace/transport/traces.rb +7 -2
- data/lib/ddtrace/utils.rb +16 -13
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers/async.rb +2 -2
- data/lib/ddtrace/workers/loop.rb +1 -1
- data/lib/ddtrace/workers/polling.rb +1 -1
- data/lib/ddtrace/writer.rb +19 -1
- metadata +53 -6
data/ddtrace.gemspec
CHANGED
@@ -41,10 +41,12 @@ Gem::Specification.new do |spec|
|
|
41
41
|
spec.add_development_dependency 'opentracing', '>= 0.4.1'
|
42
42
|
|
43
43
|
# Development dependencies
|
44
|
+
spec.add_development_dependency 'concurrent-ruby' # Leave it open as we also have it as an integration and want Appraisal to control the version under test.
|
44
45
|
spec.add_development_dependency 'rake', '>= 10.5'
|
45
46
|
spec.add_development_dependency 'rubocop', '= 0.49.1' if RUBY_VERSION >= '2.1.0'
|
46
47
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
47
48
|
spec.add_development_dependency 'rspec-collection_matchers', '~> 1.1'
|
49
|
+
spec.add_development_dependency 'ruby-prof', '~> 1.4' if RUBY_PLATFORM != 'java' && RUBY_VERSION >= '2.4.0'
|
48
50
|
spec.add_development_dependency 'minitest', '= 5.10.1'
|
49
51
|
spec.add_development_dependency 'minitest-around', '0.5.0'
|
50
52
|
spec.add_development_dependency 'minitest-stub_any_instance', '1.0.2'
|
@@ -67,5 +69,6 @@ Gem::Specification.new do |spec|
|
|
67
69
|
spec.add_development_dependency 'redcarpet', '~> 3.4' if RUBY_PLATFORM != 'java'
|
68
70
|
spec.add_development_dependency 'pry', '~> 0.10.4'
|
69
71
|
spec.add_development_dependency 'pry-stack_explorer', '~> 0.4.9.2'
|
72
|
+
spec.add_development_dependency 'simplecov', '~> 0.17'
|
70
73
|
spec.add_development_dependency 'warning', '~> 1' if RUBY_VERSION >= '2.5.0'
|
71
74
|
end
|
data/docs/DevelopmentGuide.md
CHANGED
@@ -98,6 +98,22 @@ $ bundle exec appraisal contrib rake spec:redis'[--seed,1234]'
|
|
98
98
|
|
99
99
|
This can be useful for replicating conditions from CI or isolating certain tests.
|
100
100
|
|
101
|
+
**Checking test coverage**
|
102
|
+
|
103
|
+
You can check test code coverage by creating a report _after_ running a test suite:
|
104
|
+
```
|
105
|
+
# Run the desired test suite
|
106
|
+
$ bundle exec appraisal contrib rake spec:redis
|
107
|
+
# Generate report for the suite executed
|
108
|
+
$ bundle exec rake coverage:report
|
109
|
+
```
|
110
|
+
|
111
|
+
A webpage will be generated at `coverage/report/index.html` with the resulting report.
|
112
|
+
|
113
|
+
Because you are likely not running all tests locally, your report will contain partial coverage results.
|
114
|
+
You *must* check the CI step `coverage` for the complete test coverage report, ensuring coverage is not
|
115
|
+
decreased.
|
116
|
+
|
101
117
|
### Checking code quality
|
102
118
|
|
103
119
|
**Linting**
|
@@ -108,6 +124,16 @@ The trace library uses Rubocop to enforce [code style](https://github.com/bbatso
|
|
108
124
|
$ bundle exec rake rubocop
|
109
125
|
```
|
110
126
|
|
127
|
+
### Running benchmarks
|
128
|
+
|
129
|
+
If your changes can have a measurable performance impact, we recommend running our benchmark suite:
|
130
|
+
|
131
|
+
```
|
132
|
+
$ bundle exec rake spec:benchmark
|
133
|
+
```
|
134
|
+
|
135
|
+
Results are printed to STDOUT as well as written to the `./tmp/benchmark/` directory.
|
136
|
+
|
111
137
|
## Appendix
|
112
138
|
|
113
139
|
### Writing new integrations
|
@@ -125,9 +151,9 @@ To get started quickly, it's perfectly fine to copy-paste an existing integratio
|
|
125
151
|
|
126
152
|
Once you have it working in your application, you can [add unit tests](#writing-tests), [run them locally](#running-tests), and [check for code quality](#checking-code-quality) using Docker Compose.
|
127
153
|
|
128
|
-
Then [open a pull request](
|
154
|
+
Then [open a pull request](../CONTRIBUTING.md#have-a-patch) and be sure to add the following to the description:
|
129
155
|
|
130
|
-
- [Documentation](
|
156
|
+
- [Documentation](./GettingStarted.md) for the integration, including versions supported.
|
131
157
|
- Links to the repository/website of the library being integrated
|
132
158
|
- Screenshots showing a sample trace
|
133
159
|
- Any additional code snippets, sample apps, benchmarks, or other resources that demonstrate its implementation are a huge plus!
|
data/docs/GettingStarted.md
CHANGED
@@ -34,6 +34,7 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
34
34
|
- [Active Support](#active-support)
|
35
35
|
- [AWS](#aws)
|
36
36
|
- [Concurrent Ruby](#concurrent-ruby)
|
37
|
+
- [Cucumber](#cucumber)
|
37
38
|
- [Dalli](#dalli)
|
38
39
|
- [DelayedJob](#delayedjob)
|
39
40
|
- [Elasticsearch](#elasticsearch)
|
@@ -43,11 +44,12 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
43
44
|
- [Grape](#grape)
|
44
45
|
- [GraphQL](#graphql)
|
45
46
|
- [gRPC](#grpc)
|
46
|
-
- [http.rb](#http
|
47
|
+
- [http.rb](#http-rb)
|
47
48
|
- [MongoDB](#mongodb)
|
48
49
|
- [MySQL2](#mysql2)
|
49
50
|
- [Net/HTTP](#net-http)
|
50
51
|
- [Presto](#presto)
|
52
|
+
- [Que](#que)
|
51
53
|
- [Racecar](#racecar)
|
52
54
|
- [Rack](#rack)
|
53
55
|
- [Rails](#rails)
|
@@ -59,6 +61,7 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
59
61
|
- [Sequel](#sequel)
|
60
62
|
- [Sidekiq](#sidekiq)
|
61
63
|
- [Sinatra](#sinatra)
|
64
|
+
- [Sneakers](#sneakers)
|
62
65
|
- [Sucker Punch](#sucker-punch)
|
63
66
|
- [Advanced configuration](#advanced-configuration)
|
64
67
|
- [Tracer settings](#tracer-settings)
|
@@ -91,9 +94,9 @@ To contribute, check out the [contribution guidelines][contribution docs] and [d
|
|
91
94
|
| | | 2.2 | Full | Latest |
|
92
95
|
| | | 2.1 | Full | Latest |
|
93
96
|
| | | 2.0 | Full | Latest |
|
94
|
-
| | | 1.9.3 |
|
95
|
-
| | | 1.9.1 |
|
96
|
-
| JRuby |
|
97
|
+
| | | 1.9.3 | EOL since August 6th, 2020 | < 0.27.0 |
|
98
|
+
| | | 1.9.1 | EOL since August 6th, 2020 | < 0.27.0 |
|
99
|
+
| JRuby | https://www.jruby.org | 9.2 | Full | Latest |
|
97
100
|
|
98
101
|
**Supported web servers**:
|
99
102
|
|
@@ -326,43 +329,46 @@ end
|
|
326
329
|
|
327
330
|
For a list of available integrations, and their configuration options, please refer to the following:
|
328
331
|
|
329
|
-
| Name | Key | Versions Supported
|
330
|
-
| ------------------------ | -------------------------- | ------------------------ | ----------------------------------- | ------------------------------------------------------------------------------ |
|
331
|
-
| Action Cable | `action_cable` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
|
332
|
-
| Action View | `action_view` | `>= 3.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
|
333
|
-
| Active Model Serializers | `active_model_serializers` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
|
334
|
-
| Action Pack | `action_pack` | `>= 3.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
|
335
|
-
| Active Record | `active_record` | `>= 3.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
|
336
|
-
| Active Support | `active_support` | `>= 3.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
|
337
|
-
| AWS | `aws` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
|
338
|
-
| Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
332
|
+
| Name | Key | Versions Supported: MRI | Versions Supported: JRuby | How to configure | Gem source |
|
333
|
+
| ------------------------ | -------------------------- | ------------------------ | --------------------------| ----------------------------------- | ------------------------------------------------------------------------------ |
|
334
|
+
| Action Cable | `action_cable` | `>= 5.0` | `>= 5.0` | *[Link](#action-cable)* | *[Link](https://github.com/rails/rails/tree/master/actioncable)* |
|
335
|
+
| Action View | `action_view` | `>= 3.0` | `>= 3.0` | *[Link](#action-view)* | *[Link](https://github.com/rails/rails/tree/master/actionview)* |
|
336
|
+
| Active Model Serializers | `active_model_serializers` | `>= 0.9` | `>= 0.9` | *[Link](#active-model-serializers)* | *[Link](https://github.com/rails-api/active_model_serializers)* |
|
337
|
+
| Action Pack | `action_pack` | `>= 3.0` | `>= 3.0` | *[Link](#action-pack)* | *[Link](https://github.com/rails/rails/tree/master/actionpack)* |
|
338
|
+
| Active Record | `active_record` | `>= 3.0` | `>= 3.0` | *[Link](#active-record)* | *[Link](https://github.com/rails/rails/tree/master/activerecord)* |
|
339
|
+
| Active Support | `active_support` | `>= 3.0` | `>= 3.0` | *[Link](#active-support)* | *[Link](https://github.com/rails/rails/tree/master/activesupport)* |
|
340
|
+
| AWS | `aws` | `>= 2.0` | `>= 2.0` | *[Link](#aws)* | *[Link](https://github.com/aws/aws-sdk-ruby)* |
|
341
|
+
| Concurrent Ruby | `concurrent_ruby` | `>= 0.9` | `>= 0.9` | *[Link](#concurrent-ruby)* | *[Link](https://github.com/ruby-concurrency/concurrent-ruby)* |
|
342
|
+
| Cucumber | `cucumber` | `>= 3.0` | `>= 1.7.16` | *[Link](#cucumber)* | *[Link](https://github.com/cucumber/cucumber-ruby)* |
|
343
|
+
| Dalli | `dalli` | `>= 2.0` | `>= 2.0` | *[Link](#dalli)* | *[Link](https://github.com/petergoldstein/dalli)* |
|
344
|
+
| DelayedJob | `delayed_job` | `>= 4.1` | `>= 4.1` | *[Link](#delayedjob)* | *[Link](https://github.com/collectiveidea/delayed_job)* |
|
345
|
+
| Elasticsearch | `elasticsearch` | `>= 1.0` | `>= 1.0` | *[Link](#elasticsearch)* | *[Link](https://github.com/elastic/elasticsearch-ruby)* |
|
346
|
+
| Ethon | `ethon` | `>= 0.11` | `>= 0.11` | *[Link](#ethon)* | *[Link](https://github.com/typhoeus/ethon)* |
|
347
|
+
| Excon | `excon` | `>= 0.50` | `>= 0.50` | *[Link](#excon)* | *[Link](https://github.com/excon/excon)* |
|
348
|
+
| Faraday | `faraday` | `>= 0.14` | `>= 0.14` | *[Link](#faraday)* | *[Link](https://github.com/lostisland/faraday)* |
|
349
|
+
| Grape | `grape` | `>= 1.0` | `>= 1.0` | *[Link](#grape)* | *[Link](https://github.com/ruby-grape/grape)* |
|
350
|
+
| GraphQL | `graphql` | `>= 1.7.9` | `>= 1.7.9` | *[Link](#graphql)* | *[Link](https://github.com/rmosolgo/graphql-ruby)* |
|
351
|
+
| gRPC | `grpc` | `>= 1.7` | *gem not available* | *[Link](#grpc)* | *[Link](https://github.com/grpc/grpc/tree/master/src/rubyc)* |
|
352
|
+
| http.rb | `httprb` | `>= 2.0` | `>= 2.0` | *[Link](#http-rb)* | *[Link](https://github.com/httprb/http)* |
|
353
|
+
| Kafka | `ruby-kafka` | `>= 0.7.10` | `>= 0.7.10` | *[Link](#kafka)* | *[Link](https://github.com/zendesk/ruby-kafka)* |
|
354
|
+
| MongoDB | `mongo` | `>= 2.1` | `>= 2.1` | *[Link](#mongodb)* | *[Link](https://github.com/mongodb/mongo-ruby-driver)* |
|
355
|
+
| MySQL2 | `mysql2` | `>= 0.3.21` | *gem not available* | *[Link](#mysql2)* | *[Link](https://github.com/brianmario/mysql2)* |
|
356
|
+
| Net/HTTP | `http` | *(Any supported Ruby)* | *(Any supported Ruby)* | *[Link](#nethttp)* | *[Link](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html)* |
|
357
|
+
| Presto | `presto` | `>= 0.5.14` | `>= 0.5.14` | *[Link](#presto)* | *[Link](https://github.com/treasure-data/presto-client-ruby)* |
|
358
|
+
| Que | `que` | `>= 1.0.0.beta2` | `>= 1.0.0.beta2` | *[Link](#que)* | *[Link](https://github.com/que-rb/que)* |
|
359
|
+
| Racecar | `racecar` | `>= 0.3.5` | `>= 0.3.5` | *[Link](#racecar)* | *[Link](https://github.com/zendesk/racecar)* |
|
360
|
+
| Rack | `rack` | `>= 1.1` | `>= 1.1` | *[Link](#rack)* | *[Link](https://github.com/rack/rack)* |
|
361
|
+
| Rails | `rails` | `>= 3.0` | `>= 3.0` | *[Link](#rails)* | *[Link](https://github.com/rails/rails)* |
|
362
|
+
| Rake | `rake` | `>= 12.0` | `>= 12.0` | *[Link](#rake)* | *[Link](https://github.com/ruby/rake)* |
|
363
|
+
| Redis | `redis` | `>= 3.2` | `>= 3.2` | *[Link](#redis)* | *[Link](https://github.com/redis/redis-rb)* |
|
364
|
+
| Resque | `resque` | `>= 1.0` | `>= 1.0` | *[Link](#resque)* | *[Link](https://github.com/resque/resque)* |
|
365
|
+
| Rest Client | `rest-client` | `>= 1.8` | `>= 1.8` | *[Link](#rest-client)* | *[Link](https://github.com/rest-client/rest-client)* |
|
366
|
+
| Sequel | `sequel` | `>= 3.41` | `>= 3.41` | *[Link](#sequel)* | *[Link](https://github.com/jeremyevans/sequel)* |
|
367
|
+
| Shoryuken | `shoryuken` | `>= 3.2` | `>= 3.2` | *[Link](#shoryuken)* | *[Link](https://github.com/phstc/shoryuken)* |
|
368
|
+
| Sidekiq | `sidekiq` | `>= 3.5.4` | `>= 3.5.4` | *[Link](#sidekiq)* | *[Link](https://github.com/mperham/sidekiq)* |
|
369
|
+
| Sinatra | `sinatra` | `>= 1.4` | `>= 1.4` | *[Link](#sinatra)* | *[Link](https://github.com/sinatra/sinatra)* |
|
370
|
+
| Sneakers | `sneakers` | `>= 2.12.0` | `>= 2.12.0` | *[Link](#sneakers)* | *[Link](https://github.com/jondot/sneakers)* |
|
371
|
+
| Sucker Punch | `sucker_punch` | `>= 2.0` | `>= 2.0` | *[Link](#sucker-punch)* | *[Link](https://github.com/brandonhilkert/sucker_punch)* |
|
366
372
|
|
367
373
|
### Action Cable
|
368
374
|
|
@@ -473,7 +479,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
473
479
|
| Key | Description | Default |
|
474
480
|
| ---| --- | --- |
|
475
481
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `false` |
|
476
|
-
| `orm_service_name` | Service name used for the
|
482
|
+
| `orm_service_name` | Service name used for the mapping portion of query results to ActiveRecord objects. Inherits service name from parent by default. | _parent.service_name_ (e.g. `'mysql2'`) |
|
477
483
|
| `service_name` | Service name used for database portion of `active_record` instrumentation. | Name of database adapter (e.g. `'mysql2'`) |
|
478
484
|
|
479
485
|
**Configuring trace settings per database**
|
@@ -586,6 +592,42 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
586
592
|
| --- | ----------- | ------- |
|
587
593
|
| `service_name` | Service name used for `concurrent-ruby` instrumentation | `'concurrent-ruby'` |
|
588
594
|
|
595
|
+
### Cucumber
|
596
|
+
|
597
|
+
Cucumber integration will trace all executions of scenarios and steps when using `cucumber` framework.
|
598
|
+
|
599
|
+
To activate your integration, use the `Datadog.configure` method:
|
600
|
+
|
601
|
+
```ruby
|
602
|
+
require 'cucumber'
|
603
|
+
require 'ddtrace'
|
604
|
+
|
605
|
+
# Configure default Cucumber integration
|
606
|
+
Datadog.configure do |c|
|
607
|
+
c.use :cucumber, options
|
608
|
+
end
|
609
|
+
|
610
|
+
# Example of how to attach tags from scenario to active span
|
611
|
+
Around do |scenario, block|
|
612
|
+
active_span = Datadog.configuration[:cucumber][:tracer].active_span
|
613
|
+
unless active_span.nil?
|
614
|
+
scenario.tags.filter { |tag| tag.include? ':' }.each do |tag|
|
615
|
+
active_span.set_tag(*tag.name.split(':', 2))
|
616
|
+
end
|
617
|
+
end
|
618
|
+
block.call
|
619
|
+
end
|
620
|
+
```
|
621
|
+
|
622
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
623
|
+
|
624
|
+
| Key | Description | Default |
|
625
|
+
| --- | ----------- | ------- |
|
626
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `true` |
|
627
|
+
| `enabled` | Defines whether Cucumber tests should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
628
|
+
| `service_name` | Service name used for `cucumber` instrumentation. | `'cucumber'` |
|
629
|
+
| `operation_name` | Operation name used for `cucumber` instrumentation. Useful if you want rename automatic trace metrics e.g. `trace.#{operation_name}.errors`. | `'cucumber.test'` |
|
630
|
+
|
589
631
|
### Dalli
|
590
632
|
|
591
633
|
Dalli integration will trace all calls to your `memcached` server:
|
@@ -613,7 +655,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
613
655
|
|
614
656
|
### DelayedJob
|
615
657
|
|
616
|
-
The DelayedJob integration uses lifecycle hooks to trace the job executions.
|
658
|
+
The DelayedJob integration uses lifecycle hooks to trace the job executions and enqueues.
|
617
659
|
|
618
660
|
You can enable it through `Datadog.configure`:
|
619
661
|
|
@@ -631,6 +673,8 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
631
673
|
| --- | ----------- | ------- |
|
632
674
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
633
675
|
| `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
|
676
|
+
| `client_service_name` | Service name used for client-side `DelayedJob` instrumentation | `'delayed_job-client'` |
|
677
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
634
678
|
|
635
679
|
### Elasticsearch
|
636
680
|
|
@@ -811,6 +855,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
811
855
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `nil` |
|
812
856
|
| `enabled` | Defines whether Grape should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
813
857
|
| `service_name` | Service name used for `grape` instrumentation | `'grape'` |
|
858
|
+
| `error_statuses`| Defines a status code or range of status codes which should be marked as errors. `'404,405,500-599'` or `[404,405,'500-599']` | `nil` |
|
814
859
|
|
815
860
|
### GraphQL
|
816
861
|
|
@@ -1108,6 +1153,31 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1108
1153
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1109
1154
|
| `service_name` | Service name used for `presto` instrumentation | `'presto'` |
|
1110
1155
|
|
1156
|
+
### Que
|
1157
|
+
|
1158
|
+
The Que integration is a middleware which will trace job executions.
|
1159
|
+
|
1160
|
+
You can enable it through `Datadog.configure`:
|
1161
|
+
|
1162
|
+
```ruby
|
1163
|
+
require 'ddtrace'
|
1164
|
+
|
1165
|
+
Datadog.configure do |c|
|
1166
|
+
c.use :que, options
|
1167
|
+
end
|
1168
|
+
```
|
1169
|
+
|
1170
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
1171
|
+
|
1172
|
+
| Key | Description | Default |
|
1173
|
+
| --- | ----------- | ------- |
|
1174
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1175
|
+
| `enabled` | Defines whether Que should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1176
|
+
| `service_name` | Service name used for `que` instrumentation | `'que'` |
|
1177
|
+
| `tag_args` | Enable tagging of a job's args field. `true` for on, `false` for off. | `false` |
|
1178
|
+
| `tag_data` | Enable tagging of a job's data field. `true` for on, `false` for off. | `false` |
|
1179
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
1180
|
+
|
1111
1181
|
### Racecar
|
1112
1182
|
|
1113
1183
|
The Racecar integration provides tracing for Racecar jobs.
|
@@ -1170,7 +1240,6 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1170
1240
|
| `service_name` | Service name used for `rack` instrumentation | `'rack'` |
|
1171
1241
|
| `web_service_name` | Service name for frontend server request queuing spans. (e.g. `'nginx'`) | `'web-server'` |
|
1172
1242
|
|
1173
|
-
|
1174
1243
|
**Configuring URL quantization behavior**
|
1175
1244
|
|
1176
1245
|
```ruby
|
@@ -1230,17 +1299,18 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1230
1299
|
| `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
|
1231
1300
|
| `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
|
1232
1301
|
| `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/'` |
|
1302
|
+
| `log_injection` | Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Rails 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` |
|
1233
1303
|
|
1234
1304
|
**Supported versions**
|
1235
1305
|
|
1236
|
-
|
|
1237
|
-
| ------------- |
|
1238
|
-
| 2.0 | 3.0 - 3.2
|
1239
|
-
| 2.1 | 3.0 - 4.2
|
1240
|
-
| 2.2 - 2.3 | 3.0 - 5.2
|
1241
|
-
| 2.4 | 4.2.8 - 5.2
|
1242
|
-
| 2.5 | 4.2.8 - 6.0
|
1243
|
-
| 2.6 - 2.7 | 5.0 - 6.0
|
1306
|
+
| MRI Versions | JRuby Versions | Rails Versions |
|
1307
|
+
| ------------- | -------------- | -------------- |
|
1308
|
+
| 2.0 | | 3.0 - 3.2 |
|
1309
|
+
| 2.1 | | 3.0 - 4.2 |
|
1310
|
+
| 2.2 - 2.3 | | 3.0 - 5.2 |
|
1311
|
+
| 2.4 | | 4.2.8 - 5.2 |
|
1312
|
+
| 2.5 | | 4.2.8 - 6.0 |
|
1313
|
+
| 2.6 - 2.7 | 9.2 | 5.0 - 6.0 |
|
1244
1314
|
|
1245
1315
|
### Rake
|
1246
1316
|
|
@@ -1407,6 +1477,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1407
1477
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `false` |
|
1408
1478
|
| `service_name` | Service name used for `resque` instrumentation | `'resque'` |
|
1409
1479
|
| `workers` | An array including all worker classes you want to trace (e.g. `[MyJob]`) | `[]` |
|
1480
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
1410
1481
|
|
1411
1482
|
### Rest Client
|
1412
1483
|
|
@@ -1429,6 +1500,31 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1429
1500
|
| `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) | `true` |
|
1430
1501
|
| `service_name` | Service name for `rest_client` instrumentation. | `'rest_client'` |
|
1431
1502
|
|
1503
|
+
## RSpec
|
1504
|
+
|
1505
|
+
RSpec integration will trace all executions of example groups and examples when using `rspec` test framework.
|
1506
|
+
|
1507
|
+
To activate your integration, use the `Datadog.configure` method:
|
1508
|
+
|
1509
|
+
```ruby
|
1510
|
+
require 'rspec'
|
1511
|
+
require 'ddtrace'
|
1512
|
+
|
1513
|
+
# Configure default RSpec integration
|
1514
|
+
Datadog.configure do |c|
|
1515
|
+
c.use :rspec, options
|
1516
|
+
end
|
1517
|
+
```
|
1518
|
+
|
1519
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
1520
|
+
|
1521
|
+
| Key | Description | Default |
|
1522
|
+
| --- | ----------- | ------- |
|
1523
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `true` |
|
1524
|
+
| `enabled` | Defines whether RSpec tests should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1525
|
+
| `service_name` | Service name used for `rspec` instrumentation. | `'rspec'` |
|
1526
|
+
| `operation_name` | Operation name used for `rspec` instrumentation. Useful if you want rename automatic trace metrics e.g. `trace.#{operation_name}.errors`. | `'rspec.example'` |
|
1527
|
+
|
1432
1528
|
### Sequel
|
1433
1529
|
|
1434
1530
|
The Sequel integration traces queries made to your database.
|
@@ -1497,6 +1593,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1497
1593
|
| --- | ----------- | ------- |
|
1498
1594
|
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1499
1595
|
| `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
|
1596
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
1500
1597
|
|
1501
1598
|
### Sidekiq
|
1502
1599
|
|
@@ -1520,6 +1617,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1520
1617
|
| `client_service_name` | Service name used for client-side `sidekiq` instrumentation | `'sidekiq-client'` |
|
1521
1618
|
| `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
|
1522
1619
|
| `tag_args` | Enable tagging of job arguments. `true` for on, `false` for off. | `false` |
|
1620
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
1523
1621
|
|
1524
1622
|
### Sinatra
|
1525
1623
|
|
@@ -1585,6 +1683,30 @@ Ensure you register `Datadog::Contrib::Sinatra::Tracer` as a middleware before y
|
|
1585
1683
|
| `resource_script_names` | Prepend resource names with script name | `false` |
|
1586
1684
|
| `service_name` | Service name used for `sinatra` instrumentation | `'sinatra'` |
|
1587
1685
|
|
1686
|
+
### Sneakers
|
1687
|
+
|
1688
|
+
The Sneakers integration is a server-side middleware which will trace job executions.
|
1689
|
+
|
1690
|
+
You can enable it through `Datadog.configure`:
|
1691
|
+
|
1692
|
+
```ruby
|
1693
|
+
require 'ddtrace'
|
1694
|
+
|
1695
|
+
Datadog.configure do |c|
|
1696
|
+
c.use :sneakers, options
|
1697
|
+
end
|
1698
|
+
```
|
1699
|
+
|
1700
|
+
Where `options` is an optional `Hash` that accepts the following parameters:
|
1701
|
+
|
1702
|
+
| Key | Description | Default |
|
1703
|
+
| --- | ----------- | ------- |
|
1704
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1705
|
+
| `enabled` | Defines whether Sneakers should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1706
|
+
| `service_name` | Service name used for `sneakers` instrumentation | `'sneakers'` |
|
1707
|
+
| `tag_body` | Enable tagging of job message. `true` for on, `false` for off. | `false` |
|
1708
|
+
| `error_handler` | Custom error handler invoked when a job raises an error. Provided `span` and `error` as arguments. Sets error on the span by default. Useful for ignoring transient errors. | `proc { |span, error| span.set_error(error) unless span.nil? }` |
|
1709
|
+
|
1588
1710
|
### Sucker Punch
|
1589
1711
|
|
1590
1712
|
The `sucker_punch` integration traces all scheduled jobs:
|
@@ -1633,13 +1755,14 @@ end
|
|
1633
1755
|
|
1634
1756
|
Available options are:
|
1635
1757
|
|
1636
|
-
- `enabled`: defines if the `tracer` is enabled or not. If set to `false` instrumentation will still run, but no spans are sent to the trace agent.
|
1758
|
+
- `enabled`: defines if the `tracer` is enabled or not. If set to `false` instrumentation will still run, but no spans are sent to the trace agent. Can be configured through the `DD_TRACE_ENABLED` environment variable. Defaults to `true`.
|
1637
1759
|
- `hostname`: set the hostname of the trace agent.
|
1638
1760
|
- `instance`: set to a custom `Datadog::Tracer` instance. If provided, other trace settings are ignored (you must configure it manually.)
|
1639
1761
|
- `partial_flush.enabled`: set to `true` to enable partial trace flushing (for long running traces.) Disabled by default. *Experimental.*
|
1640
1762
|
- `port`: set the port the trace agent is listening on.
|
1641
1763
|
- `sampler`: set to a custom `Datadog::Sampler` instance. If provided, the tracer will use this sampler to determine sampling behavior.
|
1642
1764
|
- `diagnostics.startup_logs.enabled`: Startup configuration and diagnostic log. Defaults to `true`. Can be configured through the `DD_TRACE_STARTUP_LOGS` environment variable.
|
1765
|
+
- `diagnostics.debug`: set to true to enable debug logging. Can be configured through the `DD_TRACE_DEBUG` environment variable. Defaults to `false`.
|
1643
1766
|
|
1644
1767
|
#### Custom logging
|
1645
1768
|
|
@@ -1687,6 +1810,16 @@ This enables you to set this value on a per application basis, so you can have f
|
|
1687
1810
|
|
1688
1811
|
Tags can also be set directly on individual spans, which will supersede any conflicting tags defined at the application level.
|
1689
1812
|
|
1813
|
+
### Environment variables
|
1814
|
+
|
1815
|
+
Other Environment Variables:
|
1816
|
+
|
1817
|
+
- `DD_TRACE_AGENT_URL`: Sets the URL endpoint where traces are sent. Has priority over `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT` if set. e.g. `DD_TRACE_AGENT_URL=http://localhost:8126`.
|
1818
|
+
- `DD_TRACE_<INTEGRATION>_ENABLED`: Enables or disables an **activated** integration. Defaults to `true`.. e.g. `DD_TRACE_RAILS_ENABLED=false`. This option has no effects on integrations that have not been explicitly activated (e.g. `Datadog.configure{ |c| c.use :integration }`).on code. This environment variable can only be used to disable an integration.
|
1819
|
+
- `DD_TRACE_<INTEGRATION>_ANALYTICS_ENABLED`: Enables or disable App Analytics for a specific integration. Valid values are: true or false (default). e.g. `DD_TRACE_ACTION_CABLE_ANALYTICS_ENABLED=true`.
|
1820
|
+
- `DD_TRACE_<INTEGRATION>_ANALYTICS_SAMPLE_RATE`: Sets the App Analytics sampling rate for a specific integration. A floating number between 0.0 and 1.0 (default). e.g. `DD_TRACE_ACTION_CABLE_ANALYTICS_SAMPLE_RATE=0.5`.
|
1821
|
+
- `DD_LOGS_INJECTION`: Automatically enables injection [Trace Correlation](#trace-correlation) information, such as `dd.trace_id`, into Rails 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. Valid values are: `true` or `false`(default). e.g. `DD_LOGS_INJECTION=true`.
|
1822
|
+
|
1690
1823
|
### Sampling
|
1691
1824
|
|
1692
1825
|
`ddtrace` can perform trace sampling. While the trace agent already samples traces to reduce bandwidth usage, client sampling reduces the performance overhead.
|
@@ -1852,7 +1985,7 @@ For more details on how to activate distributed tracing for integrations, see th
|
|
1852
1985
|
- [Rack](#rack)
|
1853
1986
|
- [Rails](#rails)
|
1854
1987
|
- [Sinatra](#sinatra)
|
1855
|
-
- [http.rb](#http
|
1988
|
+
- [http.rb](#http-rb)
|
1856
1989
|
|
1857
1990
|
**Using the HTTP propagator**
|
1858
1991
|
|
@@ -1966,34 +2099,28 @@ Datadog::Pipeline.before_flush(
|
|
1966
2099
|
|
1967
2100
|
### Trace correlation
|
1968
2101
|
|
1969
|
-
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
2102
|
+
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing.
|
2103
|
+
|
2104
|
+
#### For logging in Rails applications
|
2105
|
+
|
2106
|
+
##### Automatic
|
2107
|
+
|
2108
|
+
For Rails applications using the default logger (`ActiveSupport::TaggedLogging`) or `lograge`, you can automatically enable trace correlation injection by setting the `rails` instrumentation configuration option `log_injection` to `true` or by setting environment variable `DD_LOGS_INJECTION=true`:
|
1970
2109
|
|
1971
2110
|
```ruby
|
1972
|
-
#
|
1973
|
-
|
1974
|
-
# Returns #<Datadog::Correlation::Identifier>
|
1975
|
-
correlation = Datadog.tracer.active_correlation
|
1976
|
-
correlation.trace_id # => 5963550561812073440
|
1977
|
-
correlation.span_id # => 2232727802607726424
|
1978
|
-
correlation.env # => 'production' (derived from DD_ENV)
|
1979
|
-
correlation.service # => 'billing-api' (derived from DD_SERVICE)
|
1980
|
-
correlation.version # => '2.5.17' (derived from DD_VERSION)
|
1981
|
-
end
|
2111
|
+
# config/initializers/datadog.rb
|
2112
|
+
require 'ddtrace'
|
1982
2113
|
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
correlation = Datadog.tracer.active_correlation
|
1987
|
-
correlation.trace_id # => 0
|
1988
|
-
correlation.span_id # => 0
|
1989
|
-
correlation.env # => 'production' (derived from DD_ENV)
|
1990
|
-
correlation.service # => 'billing-api' (derived from DD_SERVICE)
|
1991
|
-
correlation.version # => '2.5.17' (derived from DD_VERSION)
|
2114
|
+
Datadog.configure do |c|
|
2115
|
+
c.use :rails, log_injection: true
|
2116
|
+
end
|
1992
2117
|
```
|
1993
2118
|
|
1994
|
-
|
2119
|
+
_Note:_ For `lograge` users who have also defined `lograge.custom_options` in an `initializers/lograge.rb` configuration file, due to the order that Rails loads initializers (alphabetical), automatic trace correlation may not take effect, since `initializers/datadog.rb` would be overwritten by the `initializers/lograge.rb` initializer. To support automatic trace correlation with _existing_ `lograge.custom_options`, use the [Manual (Lograge)](#manual-lograge) configuration below.
|
2120
|
+
|
2121
|
+
##### Manual (Lograge)
|
1995
2122
|
|
1996
|
-
After [setting up Lograge in a Rails application](https://docs.datadoghq.com/logs/log_collection/ruby/), modify the `custom_options` block in your environment configuration file (e.g. `config/environments/production.rb`) to add the trace IDs
|
2123
|
+
After [setting up Lograge in a Rails application](https://docs.datadoghq.com/logs/log_collection/ruby/), manually modify the `custom_options` block in your environment configuration file (e.g. `config/environments/production.rb`) to add the trace IDs.
|
1997
2124
|
|
1998
2125
|
```ruby
|
1999
2126
|
config.lograge.custom_options = lambda do |event|
|
@@ -2016,11 +2143,9 @@ config.lograge.custom_options = lambda do |event|
|
|
2016
2143
|
end
|
2017
2144
|
```
|
2018
2145
|
|
2019
|
-
|
2020
|
-
|
2021
|
-
Rails applications which are configured with an `ActiveSupport::TaggedLogging` logger can append correlation IDs as tags to log output. The default Rails logger implements this tagged logging, making it easier to add correlation tags.
|
2146
|
+
##### Manual (ActiveSupport::TaggedLogging)
|
2022
2147
|
|
2023
|
-
|
2148
|
+
Rails applications which are configured with the default `ActiveSupport::TaggedLogging` logger can append correlation IDs as tags to log output. To enable Trace Correlation with `ActiveSupport::TaggedLogging`, in your Rails environment configuration file, add the following:
|
2024
2149
|
|
2025
2150
|
```ruby
|
2026
2151
|
Rails.application.configure do
|
@@ -2179,13 +2304,13 @@ end
|
|
2179
2304
|
|
2180
2305
|
See the [Dogstatsd documentation](https://www.rubydoc.info/github/DataDog/dogstatsd-ruby/master/frames) for more details about configuring `Datadog::Statsd`.
|
2181
2306
|
|
2182
|
-
The stats
|
2307
|
+
The stats are VM specific and will include:
|
2183
2308
|
|
2184
2309
|
| Name | Type | Description |
|
2185
2310
|
| -------------------------- | ------- | -------------------------------------------------------- |
|
2186
2311
|
| `runtime.ruby.class_count` | `gauge` | Number of classes in memory space. |
|
2187
2312
|
| `runtime.ruby.thread_count` | `gauge` | Number of threads. |
|
2188
|
-
| `runtime.ruby.gc.*`. | `gauge` | Garbage collection statistics
|
2313
|
+
| `runtime.ruby.gc.*`. | `gauge` | Garbage collection statistics: collected from `GC.stat`. |
|
2189
2314
|
|
2190
2315
|
In addition, all metrics include the following tags:
|
2191
2316
|
|