ddtrace 0.7.0 → 0.7.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/.gitignore +3 -0
- data/circle.yml +2 -2
- data/ddtrace.gemspec +1 -1
- data/docs/GettingStarted.md +9 -9
- data/gemfiles/contrib.gemfile +1 -1
- data/gemfiles/contrib_old.gemfile +1 -1
- data/gemfiles/rails3_mysql2.gemfile +4 -4
- data/gemfiles/rails3_postgres.gemfile +3 -3
- data/gemfiles/rails3_postgres_redis.gemfile +3 -3
- data/gemfiles/rails3_postgres_sidekiq.gemfile +3 -3
- data/gemfiles/rails4_mysql2.gemfile +3 -3
- data/gemfiles/rails4_postgres.gemfile +3 -3
- data/gemfiles/rails4_postgres_redis.gemfile +3 -3
- data/gemfiles/rails4_postgres_sidekiq.gemfile +3 -3
- data/gemfiles/rails5_mysql2.gemfile +2 -2
- data/gemfiles/rails5_postgres.gemfile +2 -2
- data/gemfiles/rails5_postgres_redis.gemfile +2 -2
- data/gemfiles/rails5_postgres_sidekiq.gemfile +2 -2
- data/lib/ddtrace/contrib/sidekiq/tracer.rb +45 -16
- data/lib/ddtrace/transport.rb +9 -3
- data/lib/ddtrace/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: be21d892e040ade90a13ed979fa5e6ab7e0a580b
|
|
4
|
+
data.tar.gz: d5964cdb669c87cec23248d797104c19c065dd9e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9afe3f5cc5bd6704d7b66a5c6a12cec4c6c66152b75ae38a96030419ef32552c826770e047e77d27b6cb2c614871971580aabe7bd8347b6a52fec57b77f2aa33
|
|
7
|
+
data.tar.gz: 11c875488d99ec5920af2b055b2079f7e1b6a170be9bc3b162b5b5987280b2228ee70980af68071a16d1eff0faf2a67c386b461bf027ffa649f64b23f1023e71
|
data/.gitignore
CHANGED
data/circle.yml
CHANGED
|
@@ -24,7 +24,7 @@ dependencies:
|
|
|
24
24
|
- pip install docker-compose==1.7.1
|
|
25
25
|
- docker-compose up -d | cat
|
|
26
26
|
# installing dev dependencies
|
|
27
|
-
- gem update --system
|
|
27
|
+
- gem update --system=2.6.11
|
|
28
28
|
- gem install builder
|
|
29
29
|
- gem update bundler
|
|
30
30
|
- bundle install
|
|
@@ -32,7 +32,7 @@ dependencies:
|
|
|
32
32
|
- rvm get head
|
|
33
33
|
- rvm install $MRI_VERSIONS
|
|
34
34
|
override:
|
|
35
|
-
- rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem update --system
|
|
35
|
+
- rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem update --system=2.6.11
|
|
36
36
|
- rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do gem install bundler
|
|
37
37
|
- rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do bundle install
|
|
38
38
|
- rvm $MRI_VERSIONS,$MRI_OLD_VERSIONS --verbose do appraisal install
|
data/ddtrace.gemspec
CHANGED
|
@@ -35,7 +35,7 @@ EOS
|
|
|
35
35
|
|
|
36
36
|
spec.add_development_dependency 'rake', '~> 10.5'
|
|
37
37
|
spec.add_development_dependency('rubocop', '~> 0.47') if RUBY_VERSION >= '2.1.0'
|
|
38
|
-
spec.add_development_dependency 'minitest', '
|
|
38
|
+
spec.add_development_dependency 'minitest', '= 5.10.1'
|
|
39
39
|
spec.add_development_dependency 'appraisal', '~> 2.1'
|
|
40
40
|
spec.add_development_dependency 'yard', '~> 0.9'
|
|
41
41
|
end
|
data/docs/GettingStarted.md
CHANGED
|
@@ -23,15 +23,15 @@ We strongly suggest pinning the version of the library you deploy.
|
|
|
23
23
|
The easiest way to get started with the tracing client is to instrument your web application. ``ddtrace`` gem
|
|
24
24
|
provides auto instrumentation for the following web frameworks and libraries:
|
|
25
25
|
|
|
26
|
-
* [Ruby on Rails](#
|
|
27
|
-
* [Sidekiq](#
|
|
28
|
-
* [Sinatra](#
|
|
29
|
-
* [Rack](#
|
|
30
|
-
* [Grape](#
|
|
31
|
-
* [Active Record](#
|
|
32
|
-
* [Elastic Search](#
|
|
33
|
-
* [Net/HTTP](#
|
|
34
|
-
* [Redis](#
|
|
26
|
+
* [Ruby on Rails](#Ruby_on_Rails)
|
|
27
|
+
* [Sidekiq](#Sidekiq)
|
|
28
|
+
* [Sinatra](#Sinatra)
|
|
29
|
+
* [Rack](#Rack)
|
|
30
|
+
* [Grape](#Grape)
|
|
31
|
+
* [Active Record](#Active_Record)
|
|
32
|
+
* [Elastic Search](#Elastic_Search)
|
|
33
|
+
* [Net/HTTP](#Net_HTTP)
|
|
34
|
+
* [Redis](#Redis)
|
|
35
35
|
|
|
36
36
|
## Web Frameworks
|
|
37
37
|
|
data/gemfiles/contrib.gemfile
CHANGED
|
@@ -4,8 +4,8 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
gem "test-unit"
|
|
6
6
|
gem "rails", "3.2.22.5"
|
|
7
|
-
gem "mysql2", "0.3.21", :
|
|
8
|
-
gem "activerecord-mysql-adapter", :
|
|
9
|
-
gem "activerecord-jdbcmysql-adapter", :
|
|
7
|
+
gem "mysql2", "0.3.21", platform: :ruby
|
|
8
|
+
gem "activerecord-mysql-adapter", platform: :ruby
|
|
9
|
+
gem "activerecord-jdbcmysql-adapter", platform: :jruby
|
|
10
10
|
|
|
11
|
-
gemspec :
|
|
11
|
+
gemspec path: "../"
|
|
@@ -4,7 +4,7 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
gem "test-unit"
|
|
6
6
|
gem "rails", "3.2.22.5"
|
|
7
|
-
gem "pg", "0.15.1", :
|
|
8
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
7
|
+
gem "pg", "0.15.1", platform: :ruby
|
|
8
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
9
9
|
|
|
10
|
-
gemspec :
|
|
10
|
+
gemspec path: "../"
|
|
@@ -4,8 +4,8 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
gem "test-unit"
|
|
6
6
|
gem "rails", "3.2.22.5"
|
|
7
|
-
gem "pg", "0.15.1", :
|
|
8
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
7
|
+
gem "pg", "0.15.1", platform: :ruby
|
|
8
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
9
9
|
gem "redis-rails"
|
|
10
10
|
|
|
11
|
-
gemspec :
|
|
11
|
+
gemspec path: "../"
|
|
@@ -4,8 +4,8 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
gem "test-unit"
|
|
6
6
|
gem "rails", "3.2.22.5"
|
|
7
|
-
gem "pg", "0.15.1", :
|
|
8
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
7
|
+
gem "pg", "0.15.1", platform: :ruby
|
|
8
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
9
9
|
gem "sidekiq"
|
|
10
10
|
|
|
11
|
-
gemspec :
|
|
11
|
+
gemspec path: "../"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
gem "rails", "4.2.7.1"
|
|
6
|
-
gem "mysql2", :
|
|
7
|
-
gem "activerecord-jdbcmysql-adapter", :
|
|
6
|
+
gem "mysql2", platform: :ruby
|
|
7
|
+
gem "activerecord-jdbcmysql-adapter", platform: :jruby
|
|
8
8
|
|
|
9
|
-
gemspec :
|
|
9
|
+
gemspec path: "../"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
gem "rails", "4.2.7.1"
|
|
6
|
-
gem "pg", :
|
|
7
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
6
|
+
gem "pg", platform: :ruby
|
|
7
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
8
8
|
|
|
9
|
-
gemspec :
|
|
9
|
+
gemspec path: "../"
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
gem "rails", "4.2.7.1"
|
|
6
|
-
gem "pg", :
|
|
7
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
6
|
+
gem "pg", platform: :ruby
|
|
7
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
8
8
|
gem "redis-rails"
|
|
9
9
|
|
|
10
|
-
gemspec :
|
|
10
|
+
gemspec path: "../"
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
gem "rails", "4.2.7.1"
|
|
6
|
-
gem "pg", :
|
|
7
|
-
gem "activerecord-jdbcpostgresql-adapter", :
|
|
6
|
+
gem "pg", platform: :ruby
|
|
7
|
+
gem "activerecord-jdbcpostgresql-adapter", platform: :jruby
|
|
8
8
|
gem "sidekiq"
|
|
9
9
|
gem "activejob"
|
|
10
10
|
|
|
11
|
-
gemspec :
|
|
11
|
+
gemspec path: "../"
|
|
@@ -43,31 +43,60 @@ module Datadog
|
|
|
43
43
|
hostname: user_config[:trace_agent_hostname],
|
|
44
44
|
port: user_config[:trace_agent_port]
|
|
45
45
|
)
|
|
46
|
-
|
|
47
|
-
# configure Sidekiq service
|
|
48
|
-
@tracer.set_service_info(
|
|
49
|
-
@sidekiq_service,
|
|
50
|
-
'sidekiq',
|
|
51
|
-
Datadog::Ext::AppTypes::WORKER
|
|
52
|
-
)
|
|
53
46
|
end
|
|
54
47
|
|
|
55
48
|
def call(worker, job, queue)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
# If class is wrapping something else, the interesting resource info
|
|
50
|
+
# is the underlying, wrapped class, and not the wrapper.
|
|
51
|
+
resource = if job['wrapped']
|
|
52
|
+
job['wrapped']
|
|
53
|
+
else
|
|
54
|
+
job['class']
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# configure Sidekiq service
|
|
58
|
+
service = sidekiq_service(resource_worker(resource))
|
|
59
|
+
set_service_info(service)
|
|
60
|
+
|
|
61
|
+
@tracer.trace('sidekiq.job', service: service, span_type: 'job') do |span|
|
|
62
|
+
span.resource = resource
|
|
65
63
|
span.set_tag('sidekiq.job.id', job['jid'])
|
|
66
64
|
span.set_tag('sidekiq.job.retry', job['retry'])
|
|
67
65
|
span.set_tag('sidekiq.job.queue', job['queue'])
|
|
66
|
+
span.set_tag('sidekiq.job.wrapper', job['class']) if job['wrapped']
|
|
67
|
+
|
|
68
68
|
yield
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
# rubocop:disable Lint/HandleExceptions
|
|
75
|
+
def resource_worker(resource)
|
|
76
|
+
Object.const_get(resource)
|
|
77
|
+
rescue NameError
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def worker_config(worker)
|
|
81
|
+
if worker.respond_to?(:datadog_tracer_config)
|
|
82
|
+
worker.datadog_tracer_config
|
|
83
|
+
else
|
|
84
|
+
{}
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def sidekiq_service(resource)
|
|
89
|
+
worker_config(resource).fetch(:service, @sidekiq_service)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def set_service_info(service)
|
|
93
|
+
return if @tracer.services[service]
|
|
94
|
+
@tracer.set_service_info(
|
|
95
|
+
service,
|
|
96
|
+
'sidekiq',
|
|
97
|
+
Datadog::Ext::AppTypes::WORKER
|
|
98
|
+
)
|
|
99
|
+
end
|
|
71
100
|
end
|
|
72
101
|
end
|
|
73
102
|
end
|
data/lib/ddtrace/transport.rb
CHANGED
|
@@ -14,6 +14,9 @@ module Datadog
|
|
|
14
14
|
# seconds before the transport timeout
|
|
15
15
|
TIMEOUT = 1
|
|
16
16
|
|
|
17
|
+
# header containing the number of traces in a payload
|
|
18
|
+
TRACE_COUNT_HEADER = 'X-Datadog-Trace-Count'.freeze
|
|
19
|
+
|
|
17
20
|
def initialize(hostname, port, options = {})
|
|
18
21
|
@hostname = hostname
|
|
19
22
|
@port = port
|
|
@@ -41,8 +44,9 @@ module Datadog
|
|
|
41
44
|
payload = @encoder.encode_services(data)
|
|
42
45
|
status_code = post(@services_endpoint, payload)
|
|
43
46
|
when :traces
|
|
47
|
+
count = data.length
|
|
44
48
|
payload = @encoder.encode_traces(data)
|
|
45
|
-
status_code = post(@traces_endpoint, payload)
|
|
49
|
+
status_code = post(@traces_endpoint, payload, count)
|
|
46
50
|
else
|
|
47
51
|
Datadog::Tracer.log.error("Unsupported endpoint: #{endpoint}")
|
|
48
52
|
return nil
|
|
@@ -56,9 +60,11 @@ module Datadog
|
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
# send data to the trace-agent; the method is thread-safe
|
|
59
|
-
def post(url, data)
|
|
63
|
+
def post(url, data, count = nil)
|
|
60
64
|
Datadog::Tracer.log.debug("Sending data from process: #{Process.pid}")
|
|
61
|
-
|
|
65
|
+
headers = count.nil? ? {} : { TRACE_COUNT_HEADER => count.to_s }
|
|
66
|
+
headers = headers.merge(@headers)
|
|
67
|
+
request = Net::HTTP::Post.new(url, headers)
|
|
62
68
|
request.body = data
|
|
63
69
|
|
|
64
70
|
response = Net::HTTP.start(@hostname, @port, read_timeout: TIMEOUT) { |http| http.request(request) }
|
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.7.
|
|
4
|
+
version: 0.7.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: 2017-
|
|
11
|
+
date: 2017-05-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|
|
@@ -56,16 +56,16 @@ dependencies:
|
|
|
56
56
|
name: minitest
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - '='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 5.10.1
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - '='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 5.10.1
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: appraisal
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
192
192
|
version: '0'
|
|
193
193
|
requirements: []
|
|
194
194
|
rubyforge_project:
|
|
195
|
-
rubygems_version: 2.
|
|
195
|
+
rubygems_version: 2.6.11
|
|
196
196
|
signing_key:
|
|
197
197
|
specification_version: 4
|
|
198
198
|
summary: Datadog tracing code for your Ruby applications
|