ddtrace 0.25.0 → 0.25.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -2
- data/docs/GettingStarted.md +74 -77
- data/lib/ddtrace/contrib/redis/quantize.rb +6 -0
- data/lib/ddtrace/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 355cf6450731c598911ebe51c98e5212e1041dfd
|
4
|
+
data.tar.gz: 6fc731d38849f3be7c243ca10aca66c3e90fb6ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd5a4b10976db57363e83ee8876dbcea361fa845f992eb4d92e280c42d6601423601e08abeab6e8ad49557ed3a5c2578d93f864538a63a12d946463e41b13bc5
|
7
|
+
data.tar.gz: c53f09353336e3c3b5a6588542db0f2b92979c745ccf1cd3354d471ff168abc4946b130663e87c13ef957221defa299f23da5e5ff2e86b080e07f1a280d8e380
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,16 @@
|
|
4
4
|
|
5
5
|
## [Unreleased (beta)]
|
6
6
|
|
7
|
+
## [0.25.1] - 2019-07-16
|
8
|
+
|
9
|
+
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.25.1
|
10
|
+
|
11
|
+
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.25.0...v0.25.1
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
- Redis integration not quantizing AUTH command (#776)
|
16
|
+
|
7
17
|
## [0.25.0] - 2019-06-27
|
8
18
|
|
9
19
|
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.25.0
|
@@ -866,8 +876,11 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
866
876
|
|
867
877
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
868
878
|
|
869
|
-
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.
|
870
|
-
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.
|
879
|
+
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.25.1...master
|
880
|
+
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.25.1...0.26-dev
|
881
|
+
[0.25.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.25.0...v0.25.1
|
882
|
+
[0.25.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.24.0...v0.25.0
|
883
|
+
[0.24.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.23.3...v0.24.0
|
871
884
|
[0.23.3]: https://github.com/DataDog/dd-trace-rb/compare/v0.23.2...v0.23.3
|
872
885
|
[0.23.2]: https://github.com/DataDog/dd-trace-rb/compare/v0.23.1...v0.23.2
|
873
886
|
[0.23.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.23.0...v0.23.1
|
data/docs/GettingStarted.md
CHANGED
@@ -1,19 +1,17 @@
|
|
1
|
-
# Datadog Trace Client
|
1
|
+
# Datadog Ruby Trace Client
|
2
2
|
|
3
3
|
`ddtrace` is Datadog’s tracing client for Ruby. It is used to trace requests as they flow across web servers,
|
4
|
-
databases and microservices so that developers have
|
4
|
+
databases and microservices so that developers have high visibility into bottlenecks and troublesome requests.
|
5
5
|
|
6
6
|
## Getting started
|
7
7
|
|
8
|
-
For
|
8
|
+
For the general APM documentation, see our [setup documentation][setup docs].
|
9
9
|
|
10
|
-
For
|
10
|
+
For more information about what APM looks like once your application is sending information to Datadog, take a look at [Visualizing your APM data][visualization docs].
|
11
11
|
|
12
|
-
|
12
|
+
To contribute, check out the [contribution guidelines][contribution docs] and [development guide][development docs].
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
[setup docs]: https://docs.datadoghq.com/tracing/setup/ruby/
|
14
|
+
[setup docs]: https://docs.datadoghq.com/tracing/
|
17
15
|
[development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/README.md#development
|
18
16
|
[visualization docs]: https://docs.datadoghq.com/tracing/visualization/
|
19
17
|
[contribution docs]: https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md
|
@@ -113,7 +111,7 @@ The following steps will help you quickly start tracing your Ruby application.
|
|
113
111
|
|
114
112
|
### Setup the Datadog Agent
|
115
113
|
|
116
|
-
The Ruby APM tracer sends trace data through the Datadog Agent.
|
114
|
+
Before downloading tracing on your application, install the Datadog Agent. The Ruby APM tracer sends trace data through the Datadog Agent.
|
117
115
|
|
118
116
|
[Install and configure the Datadog Agent](https://docs.datadoghq.com/tracing/setup), see additional documentation for [tracing Docker applications](https://docs.datadoghq.com/tracing/setup/docker/).
|
119
117
|
|
@@ -153,8 +151,8 @@ The Ruby APM tracer sends trace data through the Datadog Agent.
|
|
153
151
|
```
|
154
152
|
|
155
153
|
3. Add or activate instrumentation by doing either of the following:
|
156
|
-
|
157
|
-
|
154
|
+
- Activate integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
|
155
|
+
- Add manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
|
158
156
|
|
159
157
|
### Quickstart for OpenTracing
|
160
158
|
|
@@ -183,8 +181,8 @@ The Ruby APM tracer sends trace data through the Datadog Agent.
|
|
183
181
|
```
|
184
182
|
|
185
183
|
4. (Optional) Add or activate additional instrumentation by doing either of the following:
|
186
|
-
|
187
|
-
|
184
|
+
- Activate Datadog integration instrumentation (see [Integration instrumentation](#integration-instrumentation))
|
185
|
+
- Add Datadog manual instrumentation around your code (see [Manual instrumentation](#manual-instrumentation))
|
188
186
|
|
189
187
|
### Final steps for installation
|
190
188
|
|
@@ -192,7 +190,7 @@ After setting up, your services will appear on the [APM services page](https://a
|
|
192
190
|
|
193
191
|
## Manual Instrumentation
|
194
192
|
|
195
|
-
If you aren't using a supported framework instrumentation, you may want to
|
193
|
+
If you aren't using a supported framework instrumentation, you may want to manually instrument your code.
|
196
194
|
|
197
195
|
To trace any Ruby code, you can use the `Datadog.tracer.trace` method:
|
198
196
|
|
@@ -249,7 +247,7 @@ It might not always be possible to wrap `Datadog.tracer.trace` around a block of
|
|
249
247
|
To trace these operations, you can trace code asynchronously by calling `Datadog.tracer.trace` without a block:
|
250
248
|
|
251
249
|
```ruby
|
252
|
-
# Some instrumentation framework calls this after an event
|
250
|
+
# Some instrumentation framework calls this after an event finishes...
|
253
251
|
def db_query(start, finish, query)
|
254
252
|
span = Datadog.tracer.trace('database.query')
|
255
253
|
span.resource = query
|
@@ -283,7 +281,7 @@ end
|
|
283
281
|
```
|
284
282
|
##### Enriching traces from nested methods
|
285
283
|
|
286
|
-
You can tag additional information to current active span from any method. Note however that if the method is called and there is no span currently active `active_span` will be nil.
|
284
|
+
You can tag additional information to the current active span from any method. Note however that if the method is called and there is no span currently active `active_span` will be nil.
|
287
285
|
|
288
286
|
```ruby
|
289
287
|
# e.g. adding tag to active span
|
@@ -346,7 +344,7 @@ For a list of available integrations, and their configuration options, please re
|
|
346
344
|
| Sinatra | `sinatra` | `>= 1.4.5` | *[Link](#sinatra)* | *[Link](https://github.com/sinatra/sinatra)* |
|
347
345
|
| Sucker Punch | `sucker_punch` | `>= 2.0` | *[Link](#sucker-punch)* | *[Link](https://github.com/brandonhilkert/sucker_punch)* |
|
348
346
|
|
349
|
-
|
347
|
+
#### Active Model Serializers
|
350
348
|
|
351
349
|
The Active Model Serializers integration traces the `serialize` event for version 0.9+ and the `render` event for version 0.10+.
|
352
350
|
|
@@ -368,9 +366,9 @@ ActiveModelSerializers::SerializableResource.new(test_obj).serializable_hash
|
|
368
366
|
| `service_name` | Service name used for `active_model_serializers` instrumentation. | `'active_model_serializers'` |
|
369
367
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
370
368
|
|
371
|
-
|
369
|
+
#### Active Record
|
372
370
|
|
373
|
-
Most of the time, Active Record is set up as part of a web framework (Rails, Sinatra...) however it can be set up alone:
|
371
|
+
Most of the time, Active Record is set up as part of a web framework (Rails, Sinatra...) however, it can be set up alone:
|
374
372
|
|
375
373
|
```ruby
|
376
374
|
require 'tmpdir'
|
@@ -393,10 +391,10 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
393
391
|
|
394
392
|
| Key | Description | Default |
|
395
393
|
| ---| --- | --- |
|
396
|
-
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
394
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `false` |
|
397
395
|
| `orm_service_name` | Service name used for the Ruby ORM portion of `active_record` instrumentation. Overrides service name for ORM spans if explicitly set, which otherwise inherit their service from their parent. | `'active_record'` |
|
398
396
|
| `service_name` | Service name used for database portion of `active_record` instrumentation. | Name of database adapter (e.g. `'mysql2'`) |
|
399
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
397
|
+
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually, you don't need to set this. | `Datadog.tracer` |
|
400
398
|
|
401
399
|
**Configuring trace settings per database**
|
402
400
|
|
@@ -404,7 +402,7 @@ You can configure trace settings per database connection by using the `describes
|
|
404
402
|
|
405
403
|
```ruby
|
406
404
|
# Provide a `:describes` option with a connection key.
|
407
|
-
# Any of the following keys are acceptable
|
405
|
+
# Any of the following keys are acceptable and equivalent to one another.
|
408
406
|
# If a block is provided, it yields a Settings object that
|
409
407
|
# accepts any of the configuration options listed above.
|
410
408
|
|
@@ -436,7 +434,7 @@ end
|
|
436
434
|
|
437
435
|
If ActiveRecord traces an event that uses a connection that matches a key defined by `describes`, it will use the trace settings assigned to that connection. If the connection does not match any of the described connections, it will use default settings defined by `c.use :active_record` instead.
|
438
436
|
|
439
|
-
|
437
|
+
#### AWS
|
440
438
|
|
441
439
|
The AWS integration will trace every interaction (e.g. API calls) with AWS services (S3, ElastiCache etc.).
|
442
440
|
|
@@ -460,7 +458,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
460
458
|
| `service_name` | Service name used for `aws` instrumentation | `'aws'` |
|
461
459
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
462
460
|
|
463
|
-
|
461
|
+
#### Concurrent Ruby
|
464
462
|
|
465
463
|
The Concurrent Ruby integration adds support for context propagation when using `::Concurrent::Future`.
|
466
464
|
Making sure that code traced within the `Future#execute` will have correct parent set.
|
@@ -487,7 +485,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
487
485
|
| `service_name` | Service name used for `concurrent-ruby` instrumentation | `'concurrent-ruby'` |
|
488
486
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
489
487
|
|
490
|
-
|
488
|
+
#### Dalli
|
491
489
|
|
492
490
|
Dalli integration will trace all calls to your `memcached` server:
|
493
491
|
|
@@ -513,7 +511,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
513
511
|
| `service_name` | Service name used for `dalli` instrumentation | `'memcached'` |
|
514
512
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
515
513
|
|
516
|
-
|
514
|
+
#### DelayedJob
|
517
515
|
|
518
516
|
The DelayedJob integration uses lifecycle hooks to trace the job executions.
|
519
517
|
|
@@ -535,7 +533,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
535
533
|
| `service_name` | Service name used for `DelayedJob` instrumentation | `'delayed_job'` |
|
536
534
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
537
535
|
|
538
|
-
|
536
|
+
#### Elastic Search
|
539
537
|
|
540
538
|
The Elasticsearch integration will trace any call to `perform_request` in the `Client` object:
|
541
539
|
|
@@ -561,7 +559,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
561
559
|
| `service_name` | Service name used for `elasticsearch` instrumentation | `'elasticsearch'` |
|
562
560
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
563
561
|
|
564
|
-
|
562
|
+
#### Excon
|
565
563
|
|
566
564
|
The `excon` integration is available through the `ddtrace` middleware:
|
567
565
|
|
@@ -614,7 +612,7 @@ Excon.new(
|
|
614
612
|
|
615
613
|
Where `options` is a Hash that contains any of the parameters listed in the table above.
|
616
614
|
|
617
|
-
|
615
|
+
#### Faraday
|
618
616
|
|
619
617
|
The `faraday` integration is available through the `ddtrace` middleware:
|
620
618
|
|
@@ -645,9 +643,9 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
645
643
|
| `error_handler` | A `Proc` that accepts a `response` parameter. If it evaluates to a *truthy* value, the trace span is marked as an error. By default only sets 5XX responses as errors. | `nil` |
|
646
644
|
| `service_name` | Service name for Faraday instrumentation. When provided to middleware for a specific connection, it applies only to that connection object. | `'faraday'` |
|
647
645
|
| `split_by_domain` | Uses the request domain as the service name when set to `true`. | `false` |
|
648
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
646
|
+
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually, you don't need to set this. | `Datadog.tracer` |
|
649
647
|
|
650
|
-
|
648
|
+
#### Grape
|
651
649
|
|
652
650
|
The Grape integration adds the instrumentation to Grape endpoints and filters. This integration can work side by side with other integrations like Rack and Rails.
|
653
651
|
|
@@ -680,7 +678,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
680
678
|
| `service_name` | Service name used for `grape` instrumentation | `'grape'` |
|
681
679
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
682
680
|
|
683
|
-
|
681
|
+
#### GraphQL
|
684
682
|
|
685
683
|
The GraphQL integration activates instrumentation for GraphQL queries.
|
686
684
|
|
@@ -731,9 +729,9 @@ end
|
|
731
729
|
|
732
730
|
Do *NOT* `use :graphql` in `Datadog.configure` if you choose to configure manually, as to avoid double tracing. These two means of configuring GraphQL tracing are considered mutually exclusive.
|
733
731
|
|
734
|
-
|
732
|
+
#### gRPC
|
735
733
|
|
736
|
-
The `grpc` integration adds both client and server interceptors, which run as middleware
|
734
|
+
The `grpc` integration adds both client and server interceptors, which run as middleware before executing the service's remote procedure call. As gRPC applications are often distributed, the integration shares trace information between client and server.
|
737
735
|
|
738
736
|
To setup your integration, use the `Datadog.configure` method like so:
|
739
737
|
|
@@ -782,7 +780,7 @@ alternate_client = Demo::Echo::Service.rpc_stub_class.new(
|
|
782
780
|
|
783
781
|
The integration will ensure that the `configured_interceptor` establishes a unique tracing setup for that client instance.
|
784
782
|
|
785
|
-
|
783
|
+
#### MongoDB
|
786
784
|
|
787
785
|
The integration traces any `Command` that is sent from the [MongoDB Ruby Driver](https://github.com/mongodb/mongo-ruby-driver) to a MongoDB cluster. By extension, Object Document Mappers (ODM) such as Mongoid are automatically instrumented if they use the official Ruby driver. To activate the integration, simply:
|
788
786
|
|
@@ -812,7 +810,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
812
810
|
| `service_name` | Service name used for `mongo` instrumentation | `'mongodb'` |
|
813
811
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
814
812
|
|
815
|
-
|
813
|
+
#### MySQL2
|
816
814
|
|
817
815
|
The MySQL2 integration traces any SQL command sent through `mysql2` gem.
|
818
816
|
|
@@ -836,7 +834,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
836
834
|
| `service_name` | Service name used for `mysql2` instrumentation | `'mysql2'` |
|
837
835
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
838
836
|
|
839
|
-
|
837
|
+
#### Net/HTTP
|
840
838
|
|
841
839
|
The Net/HTTP integration will trace any HTTP call using the standard lib Net::HTTP module.
|
842
840
|
|
@@ -872,7 +870,7 @@ client = Net::HTTP.new(host, port)
|
|
872
870
|
Datadog.configure(client, options)
|
873
871
|
```
|
874
872
|
|
875
|
-
|
873
|
+
#### Racecar
|
876
874
|
|
877
875
|
The Racecar integration provides tracing for Racecar jobs.
|
878
876
|
|
@@ -894,11 +892,11 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
894
892
|
| `service_name` | Service name used for `racecar` instrumentation | `'racecar'` |
|
895
893
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
896
894
|
|
897
|
-
|
895
|
+
#### Rack
|
898
896
|
|
899
897
|
The Rack integration provides a middleware that traces all requests before they reach the underlying framework or application. It responds to the Rack minimal interface, providing reasonable values that can be retrieved at the Rack level.
|
900
898
|
|
901
|
-
This integration is automatically activated with web frameworks like Rails. If you're using a plain Rack application,
|
899
|
+
This integration is automatically activated with web frameworks like Rails. If you're using a plain Rack application, enable the integration it to your `config.ru`:
|
902
900
|
|
903
901
|
```ruby
|
904
902
|
# config.ru example
|
@@ -967,9 +965,9 @@ Datadog.configure do |c|
|
|
967
965
|
end
|
968
966
|
```
|
969
967
|
|
970
|
-
|
968
|
+
#### Rails
|
971
969
|
|
972
|
-
The Rails integration will trace requests, database calls, templates rendering and cache read/write/delete operations. The integration makes use of the Active Support Instrumentation, listening to the Notification API so that any operation instrumented by the API is traced.
|
970
|
+
The Rails integration will trace requests, database calls, templates rendering, and cache read/write/delete operations. The integration makes use of the Active Support Instrumentation, listening to the Notification API so that any operation instrumented by the API is traced.
|
973
971
|
|
974
972
|
To enable the Rails instrumentation, create an initializer file in your `config/initializers` folder:
|
975
973
|
|
@@ -986,17 +984,17 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
986
984
|
|
987
985
|
| Key | Description | Default |
|
988
986
|
| --- | ----------- | ------- |
|
989
|
-
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `nil` |
|
987
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `nil` |
|
990
988
|
| `cache_service` | Cache service name used when tracing cache activity | `'<app_name>-cache'` |
|
991
989
|
| `controller_service` | Service name used when tracing a Rails action controller | `'<app_name>'` |
|
992
990
|
| `database_service` | Database service name used when tracing database activity | `'<app_name>-<adapter_name>'` |
|
993
991
|
| `distributed_tracing` | Enables [distributed tracing](#distributed-tracing) so that this service trace is connected with a trace of another service if tracing headers are received | `true` |
|
994
992
|
| `exception_controller` | Class or Module which identifies a custom exception controller class. Tracer provides improved error behavior when it can identify custom exception controllers. By default, without this option, it 'guesses' what a custom exception controller looks like. Providing this option aids this identification. | `nil` |
|
995
993
|
| `middleware` | Add the trace middleware to the Rails application. Set to `false` if you don't want the middleware to load. | `true` |
|
996
|
-
| `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as resource for the trace. | `false` |
|
994
|
+
| `middleware_names` | Enables any short-circuited middleware requests to display the middleware name as a resource for the trace. | `false` |
|
997
995
|
| `service_name` | Service name used when tracing application requests (on the `rack` level) | `'<app_name>'` (inferred from your Rails application namespace) |
|
998
996
|
| `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/'` |
|
999
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
997
|
+
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually, you don't need to set this. | `Datadog.tracer` |
|
1000
998
|
|
1001
999
|
**Supported versions**
|
1002
1000
|
|
@@ -1007,7 +1005,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1007
1005
|
| 2.2 - 2.3 | 3.0 - 5.2 |
|
1008
1006
|
| 2.4 - 2.5 | 4.2.8 - 5.2 |
|
1009
1007
|
|
1010
|
-
|
1008
|
+
#### Rake
|
1011
1009
|
|
1012
1010
|
You can add instrumentation around your Rake tasks by activating the `rake` integration. Each task and its subsequent subtasks will be traced.
|
1013
1011
|
|
@@ -1033,11 +1031,11 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1033
1031
|
|
1034
1032
|
| Key | Description | Default |
|
1035
1033
|
| --- | ----------- | ------- |
|
1036
|
-
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1034
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `false` |
|
1037
1035
|
| `enabled` | Defines whether Rake tasks should be traced. Useful for temporarily disabling tracing. `true` or `false` | `true` |
|
1038
1036
|
| `quantize` | Hash containing options for quantization of task arguments. See below for more details and examples. | `{}` |
|
1039
1037
|
| `service_name` | Service name used for `rake` instrumentation | `'rake'` |
|
1040
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1038
|
+
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually, you don't need to set this. | `Datadog.tracer` |
|
1041
1039
|
|
1042
1040
|
**Configuring task quantization behavior**
|
1043
1041
|
|
@@ -1073,7 +1071,7 @@ Datadog.configure do |c|
|
|
1073
1071
|
end
|
1074
1072
|
```
|
1075
1073
|
|
1076
|
-
|
1074
|
+
#### Redis
|
1077
1075
|
|
1078
1076
|
The Redis integration will trace simple calls as well as pipelines.
|
1079
1077
|
|
@@ -1113,11 +1111,11 @@ customer_cache.get(...)
|
|
1113
1111
|
invoice_cache.get(...)
|
1114
1112
|
```
|
1115
1113
|
|
1116
|
-
|
1114
|
+
#### Resque
|
1117
1115
|
|
1118
1116
|
The Resque integration uses Resque hooks that wraps the `perform` method.
|
1119
1117
|
|
1120
|
-
To add tracing to a Resque job
|
1118
|
+
To add tracing to a Resque job:
|
1121
1119
|
|
1122
1120
|
```ruby
|
1123
1121
|
require 'ddtrace'
|
@@ -1137,12 +1135,12 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1137
1135
|
|
1138
1136
|
| Key | Description | Default |
|
1139
1137
|
| --- | ----------- | ------- |
|
1140
|
-
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to global setting, `false` for off. | `false` |
|
1138
|
+
| `analytics_enabled` | Enable analytics for spans produced by this integration. `true` for on, `nil` to defer to the global setting, `false` for off. | `false` |
|
1141
1139
|
| `service_name` | Service name used for `resque` instrumentation | `'resque'` |
|
1142
|
-
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1143
|
-
| `workers` | An array including all worker classes you want to trace (
|
1140
|
+
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually, you don't need to set this. | `Datadog.tracer` |
|
1141
|
+
| `workers` | An array including all worker classes you want to trace (e.g. `[MyJob]`) | `[]` |
|
1144
1142
|
|
1145
|
-
|
1143
|
+
#### Rest Client
|
1146
1144
|
|
1147
1145
|
The `rest-client` integration is available through the `ddtrace` middleware:
|
1148
1146
|
|
@@ -1164,7 +1162,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1164
1162
|
| `service_name` | Service name for `rest_client` instrumentation. | `'rest_client'` |
|
1165
1163
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1166
1164
|
|
1167
|
-
|
1165
|
+
#### Sequel
|
1168
1166
|
|
1169
1167
|
The Sequel integration traces queries made to your database.
|
1170
1168
|
|
@@ -1213,7 +1211,7 @@ Datadog.configure(sqlite_database, service_name: 'my-sqlite-db')
|
|
1213
1211
|
Datadog.configure(postgres_database, service_name: 'my-postgres-db')
|
1214
1212
|
```
|
1215
1213
|
|
1216
|
-
|
1214
|
+
#### Shoryuken
|
1217
1215
|
|
1218
1216
|
The Shoryuken integration is a server-side middleware which will trace job executions.
|
1219
1217
|
|
@@ -1235,7 +1233,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1235
1233
|
| `service_name` | Service name used for `shoryuken` instrumentation | `'shoryuken'` |
|
1236
1234
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1237
1235
|
|
1238
|
-
|
1236
|
+
#### Sidekiq
|
1239
1237
|
|
1240
1238
|
The Sidekiq integration is a client-side & server-side middleware which will trace job queuing and executions respectively.
|
1241
1239
|
|
@@ -1258,7 +1256,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1258
1256
|
| `service_name` | Service name used for server-side `sidekiq` instrumentation | `'sidekiq'` |
|
1259
1257
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1260
1258
|
|
1261
|
-
|
1259
|
+
#### Sinatra
|
1262
1260
|
|
1263
1261
|
The Sinatra integration traces requests and template rendering.
|
1264
1262
|
|
@@ -1288,7 +1286,7 @@ Where `options` is an optional `Hash` that accepts the following parameters:
|
|
1288
1286
|
| `service_name` | Service name used for `sinatra` instrumentation | `'sinatra'` |
|
1289
1287
|
| `tracer` | `Datadog::Tracer` used to perform instrumentation. Usually you don't need to set this. | `Datadog.tracer` |
|
1290
1288
|
|
1291
|
-
|
1289
|
+
#### Sucker Punch
|
1292
1290
|
|
1293
1291
|
The `sucker_punch` integration traces all scheduled jobs:
|
1294
1292
|
|
@@ -1327,8 +1325,7 @@ end
|
|
1327
1325
|
|
1328
1326
|
Available options are:
|
1329
1327
|
|
1330
|
-
- `enabled`: defines if the `tracer` is enabled or not. If set to `false` the code could be still instrumented
|
1331
|
-
because of other settings, but no spans are sent to the local trace agent.
|
1328
|
+
- `enabled`: defines if the `tracer` is enabled or not. If set to `false` the code could be still instrumented because of other settings, but no spans are sent to the local trace agent.
|
1332
1329
|
- `debug`: set to true to enable debug logging.
|
1333
1330
|
- `hostname`: set the hostname of the trace agent.
|
1334
1331
|
- `port`: set the port the trace agent is listening on.
|
@@ -1372,7 +1369,7 @@ Ultimately, tags can be set per span, but `env` should typically be the same for
|
|
1372
1369
|
|
1373
1370
|
### Sampling
|
1374
1371
|
|
1375
|
-
`ddtrace` can perform trace sampling. While the trace agent already samples traces to reduce bandwidth usage, client sampling reduces performance overhead.
|
1372
|
+
`ddtrace` can perform trace sampling. While the trace agent already samples traces to reduce bandwidth usage, client sampling reduces the performance overhead.
|
1376
1373
|
|
1377
1374
|
`Datadog::RateSampler` samples a ratio of the traces. For example:
|
1378
1375
|
|
@@ -1386,7 +1383,7 @@ end
|
|
1386
1383
|
|
1387
1384
|
#### Priority sampling
|
1388
1385
|
|
1389
|
-
Priority sampling
|
1386
|
+
Priority sampling decides whether to keep a trace by using a priority attribute propagated for distributed traces. Its value indicates to the Agent and the backend about how important the trace is.
|
1390
1387
|
|
1391
1388
|
The sampler can set the priority to the following values:
|
1392
1389
|
|
@@ -1400,9 +1397,9 @@ You can also set this priority manually to either drop a non-interesting trace o
|
|
1400
1397
|
- `Datadog::Ext::Priority::USER_REJECT`: the user asked to reject the trace.
|
1401
1398
|
- `Datadog::Ext::Priority::USER_KEEP`: the user asked to keep the trace.
|
1402
1399
|
|
1403
|
-
When not using [distributed tracing](#distributed-tracing), you may change the priority at any time, as long as the trace
|
1400
|
+
When not using [distributed tracing](#distributed-tracing), you may change the priority at any time, as long as the trace incomplete. But it has to be done before any context propagation (fork, RPC calls) to be useful in a distributed context. Changing the priority after the context has been propagated causes different parts of a distributed trace to use different priorities. Some parts might be kept, some parts might be rejected, and this can cause the trace to be partially stored and remain incomplete.
|
1404
1401
|
|
1405
|
-
If you change the priority, we recommend you do it as soon as possible
|
1402
|
+
If you change the priority, we recommend you do it as soon as possible - when the root span has just been created.
|
1406
1403
|
|
1407
1404
|
```ruby
|
1408
1405
|
# First, grab the active span
|
@@ -1417,7 +1414,7 @@ span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP
|
|
1417
1414
|
|
1418
1415
|
### Distributed Tracing
|
1419
1416
|
|
1420
|
-
Distributed tracing allows traces to be propagated across multiple instrumented applications
|
1417
|
+
Distributed tracing allows traces to be propagated across multiple instrumented applications so that a request can be presented as a single trace, rather than a separate trace per service.
|
1421
1418
|
|
1422
1419
|
To trace requests across application boundaries, the following must be propagated between each application:
|
1423
1420
|
|
@@ -1523,7 +1520,7 @@ Many integrations included in `ddtrace` support distributed tracing. Distributed
|
|
1523
1520
|
|
1524
1521
|
- If your application receives requests from services with distributed tracing activated, you must activate distributed tracing on the integrations that handle these requests (e.g. Rails)
|
1525
1522
|
- If your application send requests to services with distributed tracing activated, you must activate distributed tracing on the integrations that send these requests (e.g. Faraday)
|
1526
|
-
- If your application both sends and receives requests implementing distributed tracing, it must activate all integrations
|
1523
|
+
- If your application both sends and receives requests implementing distributed tracing, it must activate all integrations that handle these requests.
|
1527
1524
|
|
1528
1525
|
For more details on how to activate distributed tracing for integrations, see their documentation:
|
1529
1526
|
|
@@ -1560,11 +1557,11 @@ end
|
|
1560
1557
|
|
1561
1558
|
### HTTP request queuing
|
1562
1559
|
|
1563
|
-
Traces that originate from HTTP requests can be configured to include the time spent in a frontend web server or load balancer queue
|
1560
|
+
Traces that originate from HTTP requests can be configured to include the time spent in a frontend web server or load balancer queue before the request reaches the Ruby application.
|
1564
1561
|
|
1565
1562
|
This functionality is **experimental** and deactivated by default.
|
1566
1563
|
|
1567
|
-
To activate this feature, you must add
|
1564
|
+
To activate this feature, you must add an `X-Request-Start` or `X-Queue-Start` header from your web server (i.e., Nginx). The following is an Nginx configuration example:
|
1568
1565
|
|
1569
1566
|
```
|
1570
1567
|
# /etc/nginx/conf.d/ruby_service.conf
|
@@ -1580,7 +1577,7 @@ server {
|
|
1580
1577
|
|
1581
1578
|
Then you must enable the request queuing feature in the integration handling the request.
|
1582
1579
|
|
1583
|
-
For Rack
|
1580
|
+
For Rack-based applications, see the [documentation](#rack) for details for enabling this feature.
|
1584
1581
|
|
1585
1582
|
### Processing Pipeline
|
1586
1583
|
|
@@ -1647,7 +1644,7 @@ Datadog::Pipeline.before_flush(
|
|
1647
1644
|
|
1648
1645
|
### Trace correlation
|
1649
1646
|
|
1650
|
-
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross
|
1647
|
+
In many cases, such as logging, it may be useful to correlate trace IDs to other events or data streams, for easier cross-referencing. The tracer can produce a correlation identifier for the currently active trace via `active_correlation`, which can be used to decorate these other data sources.
|
1651
1648
|
|
1652
1649
|
```ruby
|
1653
1650
|
# When a trace is active...
|
@@ -1689,7 +1686,7 @@ end
|
|
1689
1686
|
|
1690
1687
|
#### For logging in Rails applications
|
1691
1688
|
|
1692
|
-
Rails applications which are configured with
|
1689
|
+
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.
|
1693
1690
|
|
1694
1691
|
In your Rails environment configuration file, add the following:
|
1695
1692
|
|
@@ -1844,12 +1841,12 @@ The stats sent will include:
|
|
1844
1841
|
| `runtime.ruby.thread_count` | `gauge` | Number of threads. |
|
1845
1842
|
| `runtime.ruby.gc.*`. | `gauge` | Garbage collection statistics (one per value in GC.stat) |
|
1846
1843
|
|
1847
|
-
In addition, all metrics
|
1844
|
+
In addition, all metrics include the following tags:
|
1848
1845
|
|
1849
1846
|
| Name | Description |
|
1850
1847
|
| ------------ | ------------------------------------------------------- |
|
1851
1848
|
| `language` | Programming language traced. (e.g. `ruby`) |
|
1852
|
-
| `service` | List of services this
|
1849
|
+
| `service` | List of services this associated with this metric. |
|
1853
1850
|
|
1854
1851
|
### OpenTracing
|
1855
1852
|
|
@@ -1870,12 +1867,12 @@ It can also be configured by using `Datadog.configure` described in the [Tracer
|
|
1870
1867
|
|
1871
1868
|
By default, configuring OpenTracing with Datadog will not automatically activate any additional instrumentation provided by Datadog. You will only receive spans and traces from OpenTracing instrumentation you have in your application.
|
1872
1869
|
|
1873
|
-
However, additional instrumentation provided by Datadog can be activated alongside OpenTracing using `Datadog.configure`, which can be used to
|
1870
|
+
However, additional instrumentation provided by Datadog can be activated alongside OpenTracing using `Datadog.configure`, which can be used to enhance your tracing further. To activate this, see [Integration instrumentation](#integration-instrumentation) for more details.
|
1874
1871
|
|
1875
1872
|
**Supported serialization formats**
|
1876
1873
|
|
1877
1874
|
| Type | Supported? | Additional information |
|
1878
1875
|
| ------------------------------ | ---------- | ---------------------- |
|
1879
1876
|
| `OpenTracing::FORMAT_TEXT_MAP` | Yes | |
|
1880
|
-
| `OpenTracing::FORMAT_RACK` | Yes | Because of the loss of resolution in the Rack format, please note that baggage items with names containing either upper case characters or `-` will be converted to lower case and `_` in a round-trip respectively. We recommend avoiding these characters
|
1877
|
+
| `OpenTracing::FORMAT_RACK` | Yes | Because of the loss of resolution in the Rack format, please note that baggage items with names containing either upper case characters or `-` will be converted to lower case and `_` in a round-trip respectively. We recommend avoiding these characters or accommodating accordingly on the receiving end. |
|
1881
1878
|
| `OpenTracing::FORMAT_BINARY` | No | |
|
@@ -20,9 +20,15 @@ module Datadog
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def format_command_args(command_args)
|
23
|
+
return 'AUTH ?' if auth_command?(command_args)
|
23
24
|
cmd = command_args.map { |x| format_arg(x) }.join(' ')
|
24
25
|
Utils.truncate(cmd, CMD_MAX_LEN, TOO_LONG_MARK)
|
25
26
|
end
|
27
|
+
|
28
|
+
def auth_command?(command_args)
|
29
|
+
return false unless command_args.is_a?(Array) && !command_args.empty?
|
30
|
+
command_args.first.to_sym == :auth
|
31
|
+
end
|
26
32
|
end
|
27
33
|
end
|
28
34
|
end
|
data/lib/ddtrace/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.25.
|
4
|
+
version: 0.25.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|