ddtrace 0.19.0 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Appraisals +6 -6
- data/CHANGELOG.md +73 -33
- data/ddtrace.gemspec +1 -1
- data/docs/GettingStarted.md +42 -21
- data/lib/ddtrace/sampler.rb +93 -27
- data/lib/ddtrace/tracer.rb +1 -1
- data/lib/ddtrace/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 52ce2b14a7143fb0f53beba225ad73d018397eb7
|
|
4
|
+
data.tar.gz: 793d9001870488465a243c87d1476db4f73a299d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7f80807b947c9130e3946b260065af504f77759af8b883f4ec3e3dda3d5f0df24a33faf4ca7ae3b3d73b29c2ee62272982f1408c244aea2048640158964a3f61
|
|
7
|
+
data.tar.gz: dc887bb9c6f66ed29cd5176f9d82be384c0d089ff9413d600e8c8e5b8ca410124cf5d0ec2da9cc296c23e181828be5f3b235d593176235a4ccca5c2b78481a7d
|
data/Appraisals
CHANGED
|
@@ -86,7 +86,7 @@ elsif Gem::Version.new('1.9.3') <= Gem::Version.new(RUBY_VERSION) \
|
|
|
86
86
|
gem 'sequel', '~> 4.0', '< 4.37'
|
|
87
87
|
gem 'sidekiq', '~> 3.5.4'
|
|
88
88
|
gem 'sinatra', '1.4.5'
|
|
89
|
-
gem 'sqlite3'
|
|
89
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
90
90
|
gem 'sucker_punch'
|
|
91
91
|
gem 'timers', '< 4.2'
|
|
92
92
|
end
|
|
@@ -171,7 +171,7 @@ elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
|
171
171
|
gem 'sequel', '~> 4.0', '< 4.37'
|
|
172
172
|
gem 'sidekiq', '~> 3.5.4'
|
|
173
173
|
gem 'sinatra', '1.4.5'
|
|
174
|
-
gem 'sqlite3'
|
|
174
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
175
175
|
gem 'sucker_punch'
|
|
176
176
|
gem 'timers', '< 4.2'
|
|
177
177
|
end
|
|
@@ -277,7 +277,7 @@ elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
|
277
277
|
gem 'shoryuken'
|
|
278
278
|
gem 'sidekiq', '~> 3.5.4'
|
|
279
279
|
gem 'sinatra', '1.4.5'
|
|
280
|
-
gem 'sqlite3'
|
|
280
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
281
281
|
gem 'sucker_punch'
|
|
282
282
|
gem 'timers', '< 4.2'
|
|
283
283
|
end
|
|
@@ -417,7 +417,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
|
417
417
|
gem 'shoryuken'
|
|
418
418
|
gem 'sidekiq'
|
|
419
419
|
gem 'sinatra'
|
|
420
|
-
gem 'sqlite3'
|
|
420
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
421
421
|
gem 'sucker_punch'
|
|
422
422
|
end
|
|
423
423
|
end
|
|
@@ -556,7 +556,7 @@ elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
|
556
556
|
gem 'shoryuken'
|
|
557
557
|
gem 'sidekiq'
|
|
558
558
|
gem 'sinatra'
|
|
559
|
-
gem 'sqlite3'
|
|
559
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
560
560
|
gem 'sucker_punch'
|
|
561
561
|
end
|
|
562
562
|
end
|
|
@@ -589,7 +589,7 @@ elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION)
|
|
|
589
589
|
gem 'shoryuken'
|
|
590
590
|
gem 'sidekiq'
|
|
591
591
|
gem 'sinatra'
|
|
592
|
-
gem 'sqlite3'
|
|
592
|
+
gem 'sqlite3', '~> 1.3.6'
|
|
593
593
|
gem 'sucker_punch'
|
|
594
594
|
end
|
|
595
595
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased (beta)]
|
|
6
6
|
|
|
7
|
+
## [0.19.1] - 2019-02-07
|
|
8
|
+
|
|
9
|
+
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.19.1
|
|
10
|
+
|
|
11
|
+
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.19.0...v0.19.1
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Documentation for Lograge implementation (#683, #687) (@nic-lan)
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Priority sampling dropping spans (#686)
|
|
20
|
+
|
|
7
21
|
## [0.19.0] - 2019-01-22
|
|
8
22
|
|
|
9
23
|
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.19.0
|
|
@@ -12,12 +26,12 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.18.3...v0.19.0
|
|
|
12
26
|
|
|
13
27
|
### Added
|
|
14
28
|
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
- Tracer#active_correlation for adding correlation IDs to logs. (#660, #664, #673)
|
|
30
|
+
- Opt-in support for `event_sample_rate` tag for some integrations. (#665, #666)
|
|
17
31
|
|
|
18
32
|
### Changed
|
|
19
33
|
|
|
20
|
-
|
|
34
|
+
- Priority sampling enabled by default. (#654)
|
|
21
35
|
|
|
22
36
|
## [0.18.3] - 2019-01-17
|
|
23
37
|
|
|
@@ -60,15 +74,15 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.17.3...v0.18.0
|
|
|
60
74
|
|
|
61
75
|
### Added
|
|
62
76
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
77
|
+
- Shoryuken integration (#538, #626, #655) (@steveh, @JustSnow)
|
|
78
|
+
- Sidekiq client integration (#602, #650) (@dirk)
|
|
79
|
+
- Datadog::Shim for adding instrumentation (#648)
|
|
66
80
|
|
|
67
81
|
### Changed
|
|
68
82
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
- Use `DD_AGENT_HOST` and `DD_TRACE_AGENT_PORT` env vars if available (#631)
|
|
84
|
+
- Inject `:connection` into `sql.active_record` event (#640, #649, #656) (@guizmaii)
|
|
85
|
+
- Return default configuration instead of `nil` on miss (#651)
|
|
72
86
|
|
|
73
87
|
## [0.17.3] - 2018-11-29
|
|
74
88
|
|
|
@@ -111,18 +125,18 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.16.1...v0.17.0
|
|
|
111
125
|
|
|
112
126
|
### Added
|
|
113
127
|
|
|
114
|
-
|
|
128
|
+
- [BETA] Span memory `allocations` attribute (#597) (@dasch)
|
|
115
129
|
|
|
116
130
|
### Changed
|
|
117
131
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
132
|
+
- Use Rack Env to update resource in Rails (#580) (@dasch)
|
|
133
|
+
- Expand support for Sidekiq to 3.5.4+ (#593)
|
|
134
|
+
- Expand support for mysql2 to 0.3.21+ (#578)
|
|
121
135
|
|
|
122
136
|
### Refactored
|
|
123
137
|
|
|
124
|
-
|
|
125
|
-
|
|
138
|
+
- Upgraded integrations to new API (#544)
|
|
139
|
+
- Encoding classes into modules (#598)
|
|
126
140
|
|
|
127
141
|
## [0.16.1] - 2018-10-17
|
|
128
142
|
|
|
@@ -266,7 +280,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.13.1...v0.13.2
|
|
|
266
280
|
|
|
267
281
|
### Fixed
|
|
268
282
|
|
|
269
|
-
|
|
283
|
+
- Context propagation for distributed traces when context is full (#502)
|
|
270
284
|
|
|
271
285
|
## [0.13.1] - 2018-07-17
|
|
272
286
|
|
|
@@ -276,15 +290,15 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.13.0...v0.13.1
|
|
|
276
290
|
|
|
277
291
|
### Changed
|
|
278
292
|
|
|
279
|
-
|
|
280
|
-
|
|
293
|
+
- Configuration class variables don't lazy load (#477)
|
|
294
|
+
- Default tracer host `localhost` --> `127.0.0.1` (#466, #480) (@NobodysNightmare)
|
|
281
295
|
|
|
282
296
|
### Fixed
|
|
283
297
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
298
|
+
- Workers not shutting down quickly in some short running processes (#475)
|
|
299
|
+
- Missing documentation for mysql2 and Rails (#476, #488)
|
|
300
|
+
- Missing variable in rescue block (#481) (@kitop)
|
|
301
|
+
- Unclosed spans in ActiveSupport::Notifications with multithreading (#431, #478) (@senny)
|
|
288
302
|
|
|
289
303
|
## [0.13.0] - 2018-06-20
|
|
290
304
|
|
|
@@ -327,6 +341,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.13.0.beta1
|
|
|
327
341
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.12.0...v0.13.0.beta1
|
|
328
342
|
|
|
329
343
|
### Added
|
|
344
|
+
|
|
330
345
|
- Sequel integration (supporting Ruby 2.0+) (#171, #367) (@randy-girard, @twe4ked, @palin)
|
|
331
346
|
- gRPC integration (supporting Ruby 2.2+) (#379, #403) (@Jared-Prime)
|
|
332
347
|
- ActiveModelSerializers integration (#340) (@sullimander)
|
|
@@ -337,6 +352,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.12.0...v0.13.0.beta1
|
|
|
337
352
|
- Request and response header tags to Rack (#389)
|
|
338
353
|
|
|
339
354
|
### Refactored
|
|
355
|
+
|
|
340
356
|
- Hash quantization into core library (#410)
|
|
341
357
|
|
|
342
358
|
## [0.12.1] - 2018-06-12
|
|
@@ -346,20 +362,23 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.12.1
|
|
|
346
362
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.12.0...v0.12.1
|
|
347
363
|
|
|
348
364
|
### Changed
|
|
349
|
-
|
|
350
|
-
|
|
365
|
+
|
|
366
|
+
- Cache configuration `Proxy` objects (#446)
|
|
367
|
+
- `freeze` more constant strings, to improve memory usage (#446)
|
|
351
368
|
- `Utils#truncate` to use slightly less memory (#446)
|
|
352
369
|
|
|
353
370
|
### Fixed
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
371
|
+
|
|
372
|
+
- Net/HTTP integration not permitting `service_name` to be overridden. (#407, #430) (@undergroundwebdesigns)
|
|
373
|
+
- Block not being passed through Elasticsearch client initialization. (#421) (@shayonj)
|
|
374
|
+
- Devise raising `NoMethodError` when bad login attempts are made. (#419, #420) (@frsantos)
|
|
375
|
+
- AWS spans using wrong resource name (#374, #377) (@jfrancoist)
|
|
376
|
+
- ActionView `NoMethodError` on very long traces. (#445, #447) (@jvalanen)
|
|
359
377
|
|
|
360
378
|
### Refactored
|
|
361
|
-
|
|
362
|
-
|
|
379
|
+
|
|
380
|
+
- ActionController patching strategy using modules. (#439)
|
|
381
|
+
- ActionView tracing strategy. (#445, #447)
|
|
363
382
|
|
|
364
383
|
## [0.12.0] - 2018-05-08
|
|
365
384
|
|
|
@@ -368,6 +387,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.12.0
|
|
|
368
387
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.4...v0.12.0
|
|
369
388
|
|
|
370
389
|
### Added
|
|
390
|
+
|
|
371
391
|
- GraphQL integration (supporting graphql 1.7.9+) (#295)
|
|
372
392
|
- ActiveRecord object instantiation tracing (#311, #334)
|
|
373
393
|
- Subscriber module for ActiveSupport::Notifications tracing (#324, #380, #390, #395) (@dasch)
|
|
@@ -375,20 +395,24 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.4...v0.12.0
|
|
|
375
395
|
- Partial flushing option to tracer (#247, #397)
|
|
376
396
|
|
|
377
397
|
### Changed
|
|
398
|
+
|
|
378
399
|
- Rack applies URL quantization by default (#371)
|
|
379
400
|
- Elasticsearch applies body quantization by default (#362)
|
|
380
401
|
- Context for a single trace now has hard limit of 100,000 spans (#247)
|
|
381
402
|
- Tags with `rails.db.x` to `active_record.db.x` instead (#396)
|
|
382
403
|
|
|
383
404
|
### Fixed
|
|
405
|
+
|
|
384
406
|
- Loading the ddtrace library after Rails has fully initialized can result in load errors. (#357)
|
|
385
407
|
- Some scenarios where `middleware_names` could result in bad resource names (#354)
|
|
386
408
|
- ActionController instrumentation conflicting with some gems that monkey patch Rails (#391)
|
|
387
409
|
|
|
388
410
|
### Deprecated
|
|
411
|
+
|
|
389
412
|
- Use of `:datadog_rack_request_span` variable in favor of `'datadog.rack_request_span'` in Rack. (#365, #392)
|
|
390
413
|
|
|
391
414
|
### Refactored
|
|
415
|
+
|
|
392
416
|
- Racecar to use ActiveSupport::Notifications Subscriber module (#381)
|
|
393
417
|
- Rails to use ActiveRecord integration instead of its own implementation (#396)
|
|
394
418
|
- ActiveRecord to use ActiveSupport::Notifications Subscriber module (#396)
|
|
@@ -400,6 +424,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.12.0.rc1
|
|
|
400
424
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.4...v0.12.0.rc1
|
|
401
425
|
|
|
402
426
|
### Added
|
|
427
|
+
|
|
403
428
|
- GraphQL integration (supporting graphql 1.7.9+) (#295)
|
|
404
429
|
- ActiveRecord object instantiation tracing (#311, #334)
|
|
405
430
|
- Subscriber module for ActiveSupport::Notifications tracing (#324, #380, #390, #395) (@dasch)
|
|
@@ -407,20 +432,24 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.4...v0.12.0.rc1
|
|
|
407
432
|
- Partial flushing option to tracer (#247, #397)
|
|
408
433
|
|
|
409
434
|
### Changed
|
|
435
|
+
|
|
410
436
|
- Rack applies URL quantization by default (#371)
|
|
411
437
|
- Elasticsearch applies body quantization by default (#362)
|
|
412
438
|
- Context for a single trace now has hard limit of 100,000 spans (#247)
|
|
413
439
|
- Tags with `rails.db.x` to `active_record.db.x` instead (#396)
|
|
414
440
|
|
|
415
441
|
### Fixed
|
|
442
|
+
|
|
416
443
|
- Loading the ddtrace library after Rails has fully initialized can result in load errors. (#357)
|
|
417
444
|
- Some scenarios where `middleware_names` could result in bad resource names (#354)
|
|
418
445
|
- ActionController instrumentation conflicting with some gems that monkey patch Rails (#391)
|
|
419
446
|
|
|
420
447
|
### Deprecated
|
|
448
|
+
|
|
421
449
|
- Use of `:datadog_rack_request_span` variable in favor of `'datadog.rack_request_span'` in Rack. (#365, #392)
|
|
422
450
|
|
|
423
451
|
### Refactored
|
|
452
|
+
|
|
424
453
|
- Racecar to use ActiveSupport::Notifications Subscriber module (#381)
|
|
425
454
|
- Rails to use ActiveRecord integration instead of its own implementation (#396)
|
|
426
455
|
- ActiveRecord to use ActiveSupport::Notifications Subscriber module (#396)
|
|
@@ -432,6 +461,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.12.0.beta2
|
|
|
432
461
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.12.0.beta1...v0.12.0.beta2
|
|
433
462
|
|
|
434
463
|
### Fixed
|
|
464
|
+
|
|
435
465
|
- Loading the ddtrace library after Rails has fully initialized can result in load errors. (#357)
|
|
436
466
|
|
|
437
467
|
## [0.12.0.beta1] - 2018-02-09
|
|
@@ -441,6 +471,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.12.0.beta1
|
|
|
441
471
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.2...v0.12.0.beta1
|
|
442
472
|
|
|
443
473
|
### Added
|
|
474
|
+
|
|
444
475
|
- GraphQL integration (supporting graphql 1.7.9+) (#295)
|
|
445
476
|
- ActiveRecord object instantiation tracing (#311, #334)
|
|
446
477
|
- `http.request_id` tag to Rack spans (#335)
|
|
@@ -452,6 +483,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.4
|
|
|
452
483
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.3...v0.11.4
|
|
453
484
|
|
|
454
485
|
### Fixed
|
|
486
|
+
|
|
455
487
|
- Transport body parsing when downgrading (#369)
|
|
456
488
|
- Transport incorrectly attempting to apply sampling to service metadata (#370)
|
|
457
489
|
- `sql.active_record` traces showing incorrect adapter settings when non-default adapter used (#383)
|
|
@@ -463,11 +495,13 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.3
|
|
|
463
495
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.2...v0.11.3
|
|
464
496
|
|
|
465
497
|
### Added
|
|
498
|
+
|
|
466
499
|
- CHANGELOG.md (#350, #363) (@awendt)
|
|
467
500
|
- `http.request_id` tag to Rack spans (#335)
|
|
468
501
|
- Tracer configuration to README.md (#332) (@noma4i)
|
|
469
502
|
|
|
470
503
|
### Fixed
|
|
504
|
+
|
|
471
505
|
- Extra indentation in README.md (#349) (@ck3g)
|
|
472
506
|
- `http.url` when Rails raises exceptions (#351, #353)
|
|
473
507
|
- Rails from being patched twice (#352)
|
|
@@ -486,6 +520,7 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.2
|
|
|
486
520
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.1...v0.11.2
|
|
487
521
|
|
|
488
522
|
### Deprecated
|
|
523
|
+
|
|
489
524
|
- `Datadog::Monkey` to be no-op and print deprecation warnings.
|
|
490
525
|
|
|
491
526
|
## [0.11.1] - 2018-01-29
|
|
@@ -495,18 +530,22 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.1
|
|
|
495
530
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.11.0...v0.11.1
|
|
496
531
|
|
|
497
532
|
### Added
|
|
533
|
+
|
|
498
534
|
- `http.base_url` tag for Rack applications (#301, #327)
|
|
499
535
|
- `distributed_tracing` option to Sinatra (#325)
|
|
500
536
|
- `exception_controller` option to Rails (#320)
|
|
501
537
|
|
|
502
538
|
### Changed
|
|
539
|
+
|
|
503
540
|
- Decoupled Sinatra and ActiveRecord integrations (#328, #330) (@hawknewton)
|
|
504
541
|
- Racecar uses preferred ActiveSupport::Notifications strategy (#323)
|
|
505
542
|
|
|
506
543
|
### Removed
|
|
544
|
+
|
|
507
545
|
- `Datadog::Monkey` in favor of newer configuration API (#322)
|
|
508
546
|
|
|
509
547
|
### Fixed
|
|
548
|
+
|
|
510
549
|
- Custom resource names from Rails controllers being overridden (#321)
|
|
511
550
|
- Custom Rails exception controllers reporting as the resource (#320)
|
|
512
551
|
|
|
@@ -642,8 +681,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
|
642
681
|
|
|
643
682
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
|
644
683
|
|
|
645
|
-
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.
|
|
646
|
-
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.
|
|
684
|
+
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.1...master
|
|
685
|
+
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.1...0.20-dev
|
|
686
|
+
[0.19.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.19.0...v0.19.1
|
|
647
687
|
[0.19.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.3...v0.19.0
|
|
648
688
|
[0.18.3]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.2...v0.18.3
|
|
649
689
|
[0.18.2]: https://github.com/DataDog/dd-trace-rb/compare/v0.18.1...v0.18.2
|
data/ddtrace.gemspec
CHANGED
|
@@ -46,7 +46,7 @@ Gem::Specification.new do |spec|
|
|
|
46
46
|
spec.add_development_dependency 'webmock', '~> 2.0'
|
|
47
47
|
spec.add_development_dependency 'builder'
|
|
48
48
|
spec.add_development_dependency 'ruby-prof'
|
|
49
|
-
spec.add_development_dependency 'sqlite3'
|
|
49
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3.6'
|
|
50
50
|
|
|
51
51
|
# locking transitive dependency of webmock
|
|
52
52
|
spec.add_development_dependency 'addressable', '~> 2.4.0'
|
data/docs/GettingStarted.md
CHANGED
|
@@ -1635,14 +1635,53 @@ correlation.trace_id # => 0
|
|
|
1635
1635
|
correlation.span_id # => 0
|
|
1636
1636
|
```
|
|
1637
1637
|
|
|
1638
|
+
#### For logging in Rails applications using Lograge (recommended)
|
|
1639
|
+
|
|
1640
|
+
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:
|
|
1641
|
+
|
|
1642
|
+
```ruby
|
|
1643
|
+
config.lograge.custom_options = lambda do |event|
|
|
1644
|
+
# Retrieves trace information for current thread
|
|
1645
|
+
correlation = Datadog.tracer.active_correlation
|
|
1646
|
+
|
|
1647
|
+
{
|
|
1648
|
+
# Adds IDs as tags to log output
|
|
1649
|
+
:dd => {
|
|
1650
|
+
:trace_id => correlation.trace_id,
|
|
1651
|
+
:span_id => correlation.span_id
|
|
1652
|
+
},
|
|
1653
|
+
:ddsource => ["ruby"],
|
|
1654
|
+
:params => event.payload[:params].reject { |k| %w(controller action).include? k }
|
|
1655
|
+
}
|
|
1656
|
+
end
|
|
1657
|
+
```
|
|
1658
|
+
|
|
1659
|
+
#### For logging in Rails applications
|
|
1660
|
+
|
|
1661
|
+
Rails applications which are configured with a `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.
|
|
1662
|
+
|
|
1663
|
+
In your Rails environment configuration file, add the following:
|
|
1664
|
+
|
|
1665
|
+
```ruby
|
|
1666
|
+
Rails.application.configure do
|
|
1667
|
+
config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
|
|
1668
|
+
end
|
|
1669
|
+
|
|
1670
|
+
# Web requests will produce:
|
|
1671
|
+
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Started GET "/articles" for 172.22.0.1 at 2019-01-16 18:50:57 +0000
|
|
1672
|
+
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Processing by ArticlesController#index as */*
|
|
1673
|
+
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Article Load (0.5ms) SELECT "articles".* FROM "articles"
|
|
1674
|
+
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Completed 200 OK in 7ms (Views: 5.5ms | ActiveRecord: 0.5ms)
|
|
1675
|
+
```
|
|
1676
|
+
|
|
1638
1677
|
#### For logging in Ruby applications
|
|
1639
1678
|
|
|
1640
1679
|
To add correlation IDs to your logger, add a log formatter which retrieves the correlation IDs with `Datadog.tracer.active_correlation`, then add them to the message.
|
|
1641
1680
|
|
|
1642
|
-
To properly correlate with Datadog logging, be sure the following is present:
|
|
1681
|
+
To properly correlate with Datadog logging, be sure the following is present in the log message:
|
|
1643
1682
|
|
|
1644
|
-
- `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.tracer.active_correlation.trace_id` or `0` if no trace is active.
|
|
1645
|
-
- `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.tracer.active_correlation.span_id` or `0` if no trace is active.
|
|
1683
|
+
- `dd.trace_id=<TRACE_ID>`: Where `<TRACE_ID>` is equal to `Datadog.tracer.active_correlation.trace_id` or `0` if no trace is active during logging.
|
|
1684
|
+
- `dd.span_id=<SPAN_ID>`: Where `<SPAN_ID>` is equal to `Datadog.tracer.active_correlation.span_id` or `0` if no trace is active during logging.
|
|
1646
1685
|
|
|
1647
1686
|
By default, `Datadog::Correlation::Identifier#to_s` will return `dd.trace_id=<TRACE_ID> dd.span_id=<SPAN_ID>`.
|
|
1648
1687
|
|
|
@@ -1667,24 +1706,6 @@ Datadog.tracer.trace('my.operation') { logger.warn('This is a traced operation.'
|
|
|
1667
1706
|
# [2019-01-16 18:38:41 +0000][my_app][WARN][dd.trace_id=8545847825299552251 dd.span_id=3711755234730770098] This is a traced operation.
|
|
1668
1707
|
```
|
|
1669
1708
|
|
|
1670
|
-
#### For logging in Rails applications
|
|
1671
|
-
|
|
1672
|
-
Rails applications which are configured with a `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.
|
|
1673
|
-
|
|
1674
|
-
In your Rails environment configuration file, add the following:
|
|
1675
|
-
|
|
1676
|
-
```ruby
|
|
1677
|
-
Rails.application.configure do
|
|
1678
|
-
config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
|
|
1679
|
-
end
|
|
1680
|
-
|
|
1681
|
-
# Web requests will produce:
|
|
1682
|
-
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Started GET "/articles" for 172.22.0.1 at 2019-01-16 18:50:57 +0000
|
|
1683
|
-
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Processing by ArticlesController#index as */*
|
|
1684
|
-
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Article Load (0.5ms) SELECT "articles".* FROM "articles"
|
|
1685
|
-
# [dd.trace_id=7110975754844687674 dd.span_id=7518426836986654206] Completed 200 OK in 7ms (Views: 5.5ms | ActiveRecord: 0.5ms)
|
|
1686
|
-
```
|
|
1687
|
-
|
|
1688
1709
|
### OpenTracing
|
|
1689
1710
|
|
|
1690
1711
|
For setting up Datadog with OpenTracing, see out [Quickstart for OpenTracing](#quickstart-for-opentracing) section for details.
|
data/lib/ddtrace/sampler.rb
CHANGED
|
@@ -5,14 +5,22 @@ require 'ddtrace/ext/priority'
|
|
|
5
5
|
module Datadog
|
|
6
6
|
# \Sampler performs client-side trace sampling.
|
|
7
7
|
class Sampler
|
|
8
|
-
def sample(_span)
|
|
9
|
-
raise NotImplementedError, '
|
|
8
|
+
def sample?(_span)
|
|
9
|
+
raise NotImplementedError, 'Samplers must implement the #sample? method'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def sample!(_span)
|
|
13
|
+
raise NotImplementedError, 'Samplers must implement the #sample! method'
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
|
|
13
17
|
# \AllSampler samples all the traces.
|
|
14
18
|
class AllSampler < Sampler
|
|
15
|
-
def sample(span)
|
|
19
|
+
def sample?(span)
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def sample!(span)
|
|
16
24
|
span.sampled = true
|
|
17
25
|
end
|
|
18
26
|
end
|
|
@@ -20,7 +28,7 @@ module Datadog
|
|
|
20
28
|
# \RateSampler is based on a sample rate.
|
|
21
29
|
class RateSampler < Sampler
|
|
22
30
|
KNUTH_FACTOR = 1111111111111111111
|
|
23
|
-
SAMPLE_RATE_METRIC_KEY = '_sample_rate'.freeze
|
|
31
|
+
SAMPLE_RATE_METRIC_KEY = '_sample_rate'.freeze
|
|
24
32
|
|
|
25
33
|
attr_reader :sample_rate
|
|
26
34
|
|
|
@@ -45,9 +53,14 @@ module Datadog
|
|
|
45
53
|
@sampling_id_threshold = sample_rate * Span::MAX_ID
|
|
46
54
|
end
|
|
47
55
|
|
|
48
|
-
def sample(span)
|
|
49
|
-
span.
|
|
50
|
-
|
|
56
|
+
def sample?(span)
|
|
57
|
+
((span.trace_id * KNUTH_FACTOR) % Datadog::Span::MAX_ID) <= @sampling_id_threshold
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def sample!(span)
|
|
61
|
+
(span.sampled = sample?(span)).tap do |sampled|
|
|
62
|
+
span.set_metric(SAMPLE_RATE_METRIC_KEY, @sample_rate) if sampled
|
|
63
|
+
end
|
|
51
64
|
end
|
|
52
65
|
end
|
|
53
66
|
|
|
@@ -62,11 +75,27 @@ module Datadog
|
|
|
62
75
|
@sampler = { DEFAULT_KEY => @fallback }
|
|
63
76
|
end
|
|
64
77
|
|
|
65
|
-
def sample(span)
|
|
78
|
+
def sample?(span)
|
|
66
79
|
key = key_for(span)
|
|
67
80
|
|
|
68
81
|
@mutex.synchronize do
|
|
69
|
-
@sampler.fetch(key, @fallback).sample(span)
|
|
82
|
+
@sampler.fetch(key, @fallback).sample?(span)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def sample!(span)
|
|
87
|
+
key = key_for(span)
|
|
88
|
+
|
|
89
|
+
@mutex.synchronize do
|
|
90
|
+
@sampler.fetch(key, @fallback).sample!(span)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def sample_rate(span)
|
|
95
|
+
key = key_for(span)
|
|
96
|
+
|
|
97
|
+
@mutex.synchronize do
|
|
98
|
+
@sampler.fetch(key, @fallback).sample_rate
|
|
70
99
|
end
|
|
71
100
|
end
|
|
72
101
|
|
|
@@ -92,38 +121,75 @@ module Datadog
|
|
|
92
121
|
class PrioritySampler
|
|
93
122
|
extend Forwardable
|
|
94
123
|
|
|
124
|
+
SAMPLE_RATE_METRIC_KEY = '_sample_rate'.freeze
|
|
125
|
+
|
|
95
126
|
def initialize(opts = {})
|
|
96
|
-
@
|
|
97
|
-
@
|
|
127
|
+
@pre_sampler = opts[:base_sampler] || AllSampler.new
|
|
128
|
+
@priority_sampler = opts[:post_sampler] || RateByServiceSampler.new
|
|
98
129
|
end
|
|
99
130
|
|
|
100
|
-
def sample(span)
|
|
101
|
-
|
|
102
|
-
|
|
131
|
+
def sample?(span)
|
|
132
|
+
@pre_sampler.sample?(span)
|
|
133
|
+
end
|
|
103
134
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
135
|
+
def sample!(span)
|
|
136
|
+
# If pre-sampling is configured, do it first. (By default, this will sample at 100%.)
|
|
137
|
+
# NOTE: Pre-sampling at rates < 100% may result in partial traces; not recommended.
|
|
138
|
+
span.sampled = pre_sample?(span) ? @pre_sampler.sample!(span) : true
|
|
139
|
+
|
|
140
|
+
if span.sampled
|
|
141
|
+
# If priority sampling has already been applied upstream, use that, otherwise...
|
|
142
|
+
unless priority_assigned_upstream?(span)
|
|
143
|
+
# Roll the dice and determine whether how we set the priority.
|
|
144
|
+
# NOTE: We'll want to leave `span.sampled = true` here; all spans for priority sampling must
|
|
145
|
+
# be sent to the agent. Otherwise metrics for traces will not be accurate, since the
|
|
146
|
+
# agent will have an incomplete dataset.
|
|
147
|
+
priority = priority_sample(span) ? Datadog::Ext::Priority::AUTO_KEEP : Datadog::Ext::Priority::AUTO_REJECT
|
|
148
|
+
assign_priority!(span, priority)
|
|
149
|
+
end
|
|
150
|
+
else
|
|
151
|
+
# If discarded by pre-sampling, set "reject" priority, so other
|
|
152
|
+
# services for the same trace don't sample needlessly.
|
|
153
|
+
assign_priority!(span, Datadog::Ext::Priority::AUTO_REJECT)
|
|
110
154
|
end
|
|
155
|
+
|
|
156
|
+
span.sampled
|
|
111
157
|
end
|
|
112
158
|
|
|
113
|
-
def_delegators :@
|
|
159
|
+
def_delegators :@priority_sampler, :update
|
|
114
160
|
|
|
115
161
|
private
|
|
116
162
|
|
|
117
|
-
def
|
|
118
|
-
|
|
163
|
+
def pre_sample?(span)
|
|
164
|
+
case @pre_sampler
|
|
165
|
+
when RateSampler
|
|
166
|
+
@pre_sampler.sample_rate < 1.0
|
|
167
|
+
when RateByServiceSampler
|
|
168
|
+
@pre_sampler.sample_rate(span) < 1.0
|
|
169
|
+
else
|
|
170
|
+
true
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def priority_assigned_upstream?(span)
|
|
175
|
+
span.context && !span.context.sampling_priority.nil?
|
|
119
176
|
end
|
|
120
177
|
|
|
121
|
-
def
|
|
122
|
-
|
|
178
|
+
def priority_sample(span)
|
|
179
|
+
@priority_sampler.sample?(span)
|
|
123
180
|
end
|
|
124
181
|
|
|
125
|
-
def
|
|
126
|
-
|
|
182
|
+
def assign_priority!(span, priority)
|
|
183
|
+
if span.context
|
|
184
|
+
span.context.sampling_priority = priority
|
|
185
|
+
else
|
|
186
|
+
# Set the priority directly on the span instead, since otherwise
|
|
187
|
+
# it won't receive the appropriate tag.
|
|
188
|
+
span.set_metric(
|
|
189
|
+
Ext::DistributedTracing::SAMPLING_PRIORITY_KEY,
|
|
190
|
+
priority
|
|
191
|
+
)
|
|
192
|
+
end
|
|
127
193
|
end
|
|
128
194
|
end
|
|
129
195
|
end
|
data/lib/ddtrace/tracer.rb
CHANGED
|
@@ -229,7 +229,7 @@ module Datadog
|
|
|
229
229
|
span = Span.new(self, name, opts)
|
|
230
230
|
if parent.nil?
|
|
231
231
|
# root span
|
|
232
|
-
@sampler.sample(span)
|
|
232
|
+
@sampler.sample!(span)
|
|
233
233
|
span.set_tag('system.pid', Process.pid)
|
|
234
234
|
if ctx && ctx.trace_id && ctx.span_id
|
|
235
235
|
span.trace_id = ctx.trace_id
|
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.19.
|
|
4
|
+
version: 0.19.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-02-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|
|
@@ -182,16 +182,16 @@ dependencies:
|
|
|
182
182
|
name: sqlite3
|
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
|
184
184
|
requirements:
|
|
185
|
-
- - "
|
|
185
|
+
- - "~>"
|
|
186
186
|
- !ruby/object:Gem::Version
|
|
187
|
-
version:
|
|
187
|
+
version: 1.3.6
|
|
188
188
|
type: :development
|
|
189
189
|
prerelease: false
|
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
191
|
requirements:
|
|
192
|
-
- - "
|
|
192
|
+
- - "~>"
|
|
193
193
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
194
|
+
version: 1.3.6
|
|
195
195
|
- !ruby/object:Gem::Dependency
|
|
196
196
|
name: addressable
|
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|