instana 1.9.0.sillyrabbit → 1.9.0
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 +5 -5
- data/lib/instana/agent.rb +1 -1
- data/lib/instana/frameworks/rails.rb +24 -10
- data/lib/instana/instrumentation/resque.rb +8 -5
- data/lib/instana/version.rb +1 -1
- data/test/instrumentation/resque_test.rb +66 -5
- data/test/jobs/resque_error_job.rb +16 -0
- data/test/jobs/resque_fast_job.rb +14 -0
- metadata +9 -9
- data/test/jobs/resque_job_1.rb +0 -11
- data/test/jobs/resque_job_2.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 19b57b244ae34d84adf8c974296e60f2030c61876a351a8f10418b06051ae7bf
|
4
|
+
data.tar.gz: 56509b6350e8de9b280747674084f510ef2b2240cedc4d7a3592504a5eb05f76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c05dcf132296ba2d9c6ebca5769590d104c40aa678d8607ab2d381b96be78f68d85b783c8dc3ffeafce1353da8e0b74c013a997fdadedf82cc6311ca62c9e67
|
7
|
+
data.tar.gz: 7119c1e50c4f379a169dde1994e48754a5d6be3304f6cf2a8da00fd692a17eea1d1122b979e15498612eec1774104a4863cc381f6e9d274406cb61efafddf9d9
|
data/lib/instana/agent.rb
CHANGED
@@ -290,7 +290,7 @@ module Instana
|
|
290
290
|
uri = URI.parse("http://#{@discovered[:agent_host]}:#{@discovered[:agent_port]}/#{path}")
|
291
291
|
req = Net::HTTP::Post.new(uri)
|
292
292
|
|
293
|
-
req.body = Oj.dump(spans)
|
293
|
+
req.body = Oj.dump(spans, :omit_nil => true)
|
294
294
|
response = make_host_agent_request(req)
|
295
295
|
|
296
296
|
if response
|
@@ -1,26 +1,40 @@
|
|
1
1
|
require "instana/rack"
|
2
2
|
|
3
3
|
if defined?(::Rails)
|
4
|
-
# In Rails, let's use the Rails logger
|
5
|
-
::Instana.logger = ::Rails.logger if ::Rails.logger
|
6
4
|
|
7
5
|
if ::Rails::VERSION::MAJOR < 3
|
8
6
|
::Rails.configuration.after_initialize do
|
9
|
-
|
10
|
-
::Rails.
|
7
|
+
# In Rails, let's use the Rails logger
|
8
|
+
::Instana.logger = ::Rails.logger if ::Rails.logger
|
9
|
+
|
10
|
+
if ::Instana.config[:tracing][:enabled]
|
11
|
+
::Instana.logger.info "Instrumenting Rack"
|
12
|
+
::Rails.configuration.middleware.insert 0, ::Instana::Rack
|
13
|
+
else
|
14
|
+
::Instana.logger.info "Rack: Tracing disabled via config. Not enabling middleware."
|
15
|
+
end
|
11
16
|
end
|
12
17
|
else
|
13
18
|
module ::Instana
|
14
19
|
class Railtie < ::Rails::Railtie
|
15
20
|
initializer 'instana.rack' do |app|
|
16
|
-
|
17
|
-
|
21
|
+
# In Rails, let's use the Rails logger
|
22
|
+
::Instana.logger = ::Rails.logger if ::Rails.logger
|
23
|
+
|
24
|
+
if ::Instana.config[:tracing][:enabled]
|
25
|
+
::Instana.logger.info "Instrumenting Rack"
|
26
|
+
app.config.middleware.insert 0, ::Instana::Rack
|
27
|
+
else
|
28
|
+
::Instana.logger.info "Rack: Tracing disabled via config. Not enabling middleware."
|
29
|
+
end
|
18
30
|
end
|
19
31
|
|
20
|
-
config
|
21
|
-
|
22
|
-
|
23
|
-
|
32
|
+
if ::Instana.config[:tracing][:enabled]
|
33
|
+
config.after_initialize do
|
34
|
+
require "instana/frameworks/instrumentation/active_record"
|
35
|
+
require "instana/frameworks/instrumentation/action_controller"
|
36
|
+
require "instana/frameworks/instrumentation/action_view"
|
37
|
+
end
|
24
38
|
end
|
25
39
|
end
|
26
40
|
end
|
@@ -20,7 +20,7 @@ module Instana
|
|
20
20
|
Instana.logger.debug "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
21
21
|
end
|
22
22
|
|
23
|
-
kvs
|
23
|
+
{ :'resque-client' => kvs }
|
24
24
|
end
|
25
25
|
|
26
26
|
def enqueue_with_instana(klass, *args)
|
@@ -72,12 +72,11 @@ module Instana
|
|
72
72
|
begin
|
73
73
|
kvs[:job] = job.payload['class'].to_s
|
74
74
|
kvs[:queue] = job.queue
|
75
|
-
kvs[:args] = job.payload['args'].to_json
|
76
75
|
rescue => e
|
77
|
-
Instana.logger.debug "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if Instana::Config[:verbose]
|
76
|
+
::Instana.logger.debug "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if Instana::Config[:verbose]
|
78
77
|
end
|
79
78
|
|
80
|
-
Instana.tracer.start_or_continue_trace(:'resque-worker',
|
79
|
+
Instana.tracer.start_or_continue_trace(:'resque-worker', { :'resque-worker' => kvs }) do
|
81
80
|
perform_without_instana(job)
|
82
81
|
end
|
83
82
|
end
|
@@ -90,8 +89,12 @@ module Instana
|
|
90
89
|
|
91
90
|
def fail_with_instana(exception)
|
92
91
|
if Instana.tracer.tracing?
|
93
|
-
Instana.tracer.
|
92
|
+
::Instana.tracer.log_info(:'resque-worker' => { :error => "#{exception.class}: #{exception}"})
|
93
|
+
::Instana.tracer.log_error(exception)
|
94
94
|
end
|
95
|
+
rescue Exception => e
|
96
|
+
::Instana.logger.debug "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if Instana::Config[:verbose]
|
97
|
+
ensure
|
95
98
|
fail_without_instana(exception)
|
96
99
|
end
|
97
100
|
end
|
data/lib/instana/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
require_relative "../jobs/
|
3
|
-
require_relative "../jobs/
|
2
|
+
require_relative "../jobs/resque_fast_job"
|
3
|
+
require_relative "../jobs/resque_error_job"
|
4
4
|
require 'resque'
|
5
5
|
|
6
6
|
if ENV.key?('REDIS_URL')
|
@@ -12,6 +12,9 @@ end
|
|
12
12
|
class ResqueClientTest < Minitest::Test
|
13
13
|
def setup
|
14
14
|
clear_all!
|
15
|
+
ENV['FORK_PER_JOB'] = 'false'
|
16
|
+
Resque.redis.redis.flushall
|
17
|
+
@worker = Resque::Worker.new(:critical)
|
15
18
|
end
|
16
19
|
|
17
20
|
def teardown
|
@@ -19,7 +22,7 @@ class ResqueClientTest < Minitest::Test
|
|
19
22
|
|
20
23
|
def test_enqueue
|
21
24
|
::Instana.tracer.start_or_continue_trace('resque-client_test') do
|
22
|
-
::Resque.enqueue(
|
25
|
+
::Resque.enqueue(FastJob)
|
23
26
|
end
|
24
27
|
|
25
28
|
traces = Instana.processor.queued_traces
|
@@ -29,13 +32,18 @@ class ResqueClientTest < Minitest::Test
|
|
29
32
|
assert_equal 3, spans.count
|
30
33
|
|
31
34
|
assert_equal :'resque-client_test', spans[0][:data][:sdk][:name]
|
35
|
+
|
32
36
|
assert_equal :"resque-client", spans[1][:n]
|
37
|
+
assert_equal "FastJob", spans[1][:data][:'resque-client'][:job]
|
38
|
+
assert_equal :critical, spans[1][:data][:'resque-client'][:queue]
|
39
|
+
assert_equal false, spans[1][:data][:'resque-client'].key?(:error)
|
40
|
+
|
33
41
|
assert_equal :redis, spans[2][:n]
|
34
42
|
end
|
35
43
|
|
36
44
|
def test_enqueue_to
|
37
45
|
::Instana.tracer.start_or_continue_trace('resque-client_test') do
|
38
|
-
::Resque.enqueue_to(:critical,
|
46
|
+
::Resque.enqueue_to(:critical, FastJob)
|
39
47
|
end
|
40
48
|
|
41
49
|
traces = Instana.processor.queued_traces
|
@@ -46,12 +54,15 @@ class ResqueClientTest < Minitest::Test
|
|
46
54
|
|
47
55
|
assert_equal :'resque-client_test', spans[0][:data][:sdk][:name]
|
48
56
|
assert_equal :"resque-client", spans[1][:n]
|
57
|
+
assert_equal "FastJob", spans[1][:data][:'resque-client'][:job]
|
58
|
+
assert_equal :critical, spans[1][:data][:'resque-client'][:queue]
|
59
|
+
assert_equal false, spans[1][:data][:'resque-client'].key?(:error)
|
49
60
|
assert_equal :redis, spans[2][:n]
|
50
61
|
end
|
51
62
|
|
52
63
|
def test_dequeue
|
53
64
|
::Instana.tracer.start_or_continue_trace('resque-client_test', '', {}) do
|
54
|
-
::Resque.dequeue(
|
65
|
+
::Resque.dequeue(FastJob, { :generate => :farfalla })
|
55
66
|
end
|
56
67
|
|
57
68
|
traces = Instana.processor.queued_traces
|
@@ -62,6 +73,56 @@ class ResqueClientTest < Minitest::Test
|
|
62
73
|
|
63
74
|
assert_equal :'resque-client_test', spans[0][:data][:sdk][:name]
|
64
75
|
assert_equal :"resque-client", spans[1][:n]
|
76
|
+
assert_equal "FastJob", spans[1][:data][:'resque-client'][:job]
|
77
|
+
assert_equal :critical, spans[1][:data][:'resque-client'][:queue]
|
78
|
+
assert_equal false, spans[1][:data][:'resque-client'].key?(:error)
|
65
79
|
assert_equal :redis, spans[2][:n]
|
66
80
|
end
|
81
|
+
|
82
|
+
def test_worker_job
|
83
|
+
Resque::Job.create(:critical, FastJob)
|
84
|
+
@worker.work(0)
|
85
|
+
|
86
|
+
traces = Instana.processor.queued_traces
|
87
|
+
assert_equal 1, traces.count
|
88
|
+
|
89
|
+
spans = traces[0].spans.to_a
|
90
|
+
assert_equal 3, spans.count
|
91
|
+
|
92
|
+
resque_span = spans[0]
|
93
|
+
redis1_span = spans[1]
|
94
|
+
redis2_span = spans[2]
|
95
|
+
|
96
|
+
assert_equal :'resque-worker', resque_span[:n]
|
97
|
+
assert_equal false, resque_span.key?(:error)
|
98
|
+
assert_equal false, resque_span.key?(:ec)
|
99
|
+
assert_equal "FastJob", resque_span[:data][:'resque-worker'][:job]
|
100
|
+
assert_equal "critical", resque_span[:data][:'resque-worker'][:queue]
|
101
|
+
assert_equal false, resque_span[:data][:'resque-worker'].key?(:error)
|
102
|
+
|
103
|
+
assert_equal :redis, redis1_span[:n]
|
104
|
+
assert_equal "SET", redis1_span[:data][:redis][:command]
|
105
|
+
assert_equal :redis, redis2_span[:n]
|
106
|
+
assert_equal "SET", redis2_span[:data][:redis][:command]
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_worker_error_job
|
110
|
+
Resque::Job.create(:critical, ErrorJob)
|
111
|
+
@worker.work(0)
|
112
|
+
|
113
|
+
traces = Instana.processor.queued_traces
|
114
|
+
assert_equal 1, traces.count
|
115
|
+
|
116
|
+
spans = traces[0].spans.to_a
|
117
|
+
resque_span = spans[0]
|
118
|
+
assert_equal 5, spans.count
|
119
|
+
|
120
|
+
assert_equal :'resque-worker', resque_span[:n]
|
121
|
+
assert_equal true, resque_span.key?(:error)
|
122
|
+
assert_equal 1, resque_span[:ec]
|
123
|
+
assert_equal "ErrorJob", resque_span[:data][:'resque-worker'][:job]
|
124
|
+
assert_equal "critical", resque_span[:data][:'resque-worker'][:queue]
|
125
|
+
assert_equal "Exception: Silly Rabbit, Trix are for kids.", resque_span[:data][:'resque-worker'][:error]
|
126
|
+
assert_equal Array, resque_span[:stack].class
|
127
|
+
end
|
67
128
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "redis"
|
2
|
+
require "net/http"
|
3
|
+
|
4
|
+
class ErrorJob
|
5
|
+
@queue = :critical
|
6
|
+
|
7
|
+
def self.perform
|
8
|
+
redis = Redis.new(url: ENV['REDIS_URL'])
|
9
|
+
|
10
|
+
dt = Time.now
|
11
|
+
redis.set('ts', dt)
|
12
|
+
|
13
|
+
raise Exception.new("Silly Rabbit, Trix are for kids.")
|
14
|
+
redis.set(:nb_id, 2)
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.0
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -280,8 +280,8 @@ files:
|
|
280
280
|
- test/instrumentation/rest-client_test.rb
|
281
281
|
- test/instrumentation/sidekiq-client_test.rb
|
282
282
|
- test/instrumentation/sidekiq-worker_test.rb
|
283
|
-
- test/jobs/
|
284
|
-
- test/jobs/
|
283
|
+
- test/jobs/resque_error_job.rb
|
284
|
+
- test/jobs/resque_fast_job.rb
|
285
285
|
- test/jobs/sidekiq_job_1.rb
|
286
286
|
- test/jobs/sidekiq_job_2.rb
|
287
287
|
- test/models/block.rb
|
@@ -312,12 +312,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
312
312
|
version: '2.1'
|
313
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
|
-
- - "
|
315
|
+
- - ">="
|
316
316
|
- !ruby/object:Gem::Version
|
317
|
-
version:
|
317
|
+
version: '0'
|
318
318
|
requirements: []
|
319
319
|
rubyforge_project:
|
320
|
-
rubygems_version: 2.6
|
320
|
+
rubygems_version: 2.7.6
|
321
321
|
signing_key:
|
322
322
|
specification_version: 4
|
323
323
|
summary: Ruby Distributed Tracing & Metrics Sensor for Instana
|
@@ -351,8 +351,8 @@ test_files:
|
|
351
351
|
- test/instrumentation/rest-client_test.rb
|
352
352
|
- test/instrumentation/sidekiq-client_test.rb
|
353
353
|
- test/instrumentation/sidekiq-worker_test.rb
|
354
|
-
- test/jobs/
|
355
|
-
- test/jobs/
|
354
|
+
- test/jobs/resque_error_job.rb
|
355
|
+
- test/jobs/resque_fast_job.rb
|
356
356
|
- test/jobs/sidekiq_job_1.rb
|
357
357
|
- test/jobs/sidekiq_job_2.rb
|
358
358
|
- test/models/block.rb
|
data/test/jobs/resque_job_1.rb
DELETED