instana 1.5.0 → 1.5.2
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/Configuration.md +0 -47
- data/README.md +1 -0
- data/Rakefile +0 -2
- data/instana.gemspec +1 -1
- data/lib/instana/agent.rb +9 -9
- data/lib/instana/frameworks/rails.rb +1 -1
- data/lib/instana/logger.rb +0 -54
- data/lib/instana/tracing/processor.rb +4 -4
- data/lib/instana/tracing/span.rb +1 -1
- data/lib/instana/version.rb +1 -1
- data/test/instrumentation/grpc_test.rb +24 -4
- data/test/test_helper.rb +0 -3
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2f4bc2a5ccafd6784e94f221a85e0fba6834fe23
|
|
4
|
+
data.tar.gz: f23e89da1122a87d34206ffaaa213aef0833c692
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f653bfd0c09c1a1bd878b809b475c668d91c7c7bc759fbd306801d49a1bf18bea66b89747176043c72102e98e439005205170e8d2bfa63ecdf21e2dbbc225f27
|
|
7
|
+
data.tar.gz: 497fa0cd4b43d55260eceb7c34bbc66b6e0b8a497283b607a05761cfb1cf9afd0ad67bc849f0bb28ba7ea84aa7263849ce7239f33a3a9a7b07939a081acdc873
|
data/Configuration.md
CHANGED
|
@@ -123,50 +123,3 @@ The gem can be configured to use your application logger instead:
|
|
|
123
123
|
|
|
124
124
|
Setting `INSTANA_GEM_DEV` to a non nil value will enable extra logging output generally useful
|
|
125
125
|
for development.
|
|
126
|
-
|
|
127
|
-
#### Extended Debug Logging
|
|
128
|
-
|
|
129
|
-
_Note: To use this, you must leave the gem original logger intact and not replace it as described above._
|
|
130
|
-
|
|
131
|
-
The gem allows the debug level to be configured that affects
|
|
132
|
-
what extra debug info it reports. It allows for:
|
|
133
|
-
|
|
134
|
-
* `:agent` - shows all agent state related debug messages
|
|
135
|
-
* `:agent_comm` - outputs all request/response pairs to and from the
|
|
136
|
-
host agent
|
|
137
|
-
* `:trace` - outputs debug messages related to tracing and trace management
|
|
138
|
-
|
|
139
|
-
Log messages can be generated for these channels using:
|
|
140
|
-
|
|
141
|
-
```Ruby
|
|
142
|
-
::Instana.logger.agent("agent specific log msg")
|
|
143
|
-
::Instana.logger.agent_comm("agent communication specific log msg")
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
To set the debug log level:
|
|
147
|
-
|
|
148
|
-
```Ruby
|
|
149
|
-
::Instana.logger.debug_level = [:agent, :agent_comm, :trace]
|
|
150
|
-
# or
|
|
151
|
-
::Instana.logger.debug_level = [:agent_comm]
|
|
152
|
-
# or
|
|
153
|
-
::Instana.logger.debug_level = :agent
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
or to reset it:
|
|
157
|
-
|
|
158
|
-
```Ruby
|
|
159
|
-
::Instana.logger.debug_level = nil
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Example output:
|
|
163
|
-
```bash
|
|
164
|
-
[2] pry(main)> Instana.logger.debug_level = :agent_comm
|
|
165
|
-
=> :agent_comm
|
|
166
|
-
|
|
167
|
-
D, [2016-12-01T11:45:12.876527 #74127] DEBUG -- : Instana: POST Req -> -body-: http://127.0.0.1:42699/com.instana.plugin.ruby.74127 ->
|
|
168
|
-
-{"gc":{"heap_live":171890,"heap_free":522},"memory":{"rss_size":51212.0}}- Resp -> body:#<Net::HTTPOK:0x007faee2161078> -> -[]-
|
|
169
|
-
|
|
170
|
-
[3] pry(main)> Instana.logger.debug_level = nil
|
|
171
|
-
=> nil
|
|
172
|
-
```
|
data/README.md
CHANGED
|
@@ -24,6 +24,7 @@ Any and all feedback is welcome. Happy Ruby visibility.
|
|
|
24
24
|
[](http://www.sinatrarb.com/)
|
|
25
25
|
[](http://padrinorb.com/)
|
|
26
26
|
[](https://rack.github.io/)
|
|
27
|
+
[](http://www.grpc.io/)
|
|
27
28
|
|
|
28
29
|
## Installation
|
|
29
30
|
|
data/Rakefile
CHANGED
data/instana.gemspec
CHANGED
data/lib/instana/agent.rb
CHANGED
|
@@ -63,7 +63,7 @@ module Instana
|
|
|
63
63
|
# the host agent.
|
|
64
64
|
#
|
|
65
65
|
def after_fork
|
|
66
|
-
::Instana.logger.
|
|
66
|
+
::Instana.logger.debug "after_fork hook called. Falling back to unannounced state and spawning a new background agent thread."
|
|
67
67
|
|
|
68
68
|
# Reseed the random number generator for this
|
|
69
69
|
# new thread.
|
|
@@ -170,7 +170,7 @@ module Instana
|
|
|
170
170
|
#
|
|
171
171
|
def announce_sensor
|
|
172
172
|
unless @discovered
|
|
173
|
-
::Instana.logger.
|
|
173
|
+
::Instana.logger.debug("#{__method__} called but discovery hasn't run yet!")
|
|
174
174
|
return false
|
|
175
175
|
end
|
|
176
176
|
|
|
@@ -195,7 +195,7 @@ module Instana
|
|
|
195
195
|
req = Net::HTTP::Put.new(uri)
|
|
196
196
|
req.body = announce_payload.to_json
|
|
197
197
|
|
|
198
|
-
::Instana.logger.
|
|
198
|
+
::Instana.logger.debug "Announce: http://#{@discovered[:agent_host]}:#{@discovered[:agent_port]}/#{DISCOVERY_PATH} - payload: #{req.body}"
|
|
199
199
|
|
|
200
200
|
response = make_host_agent_request(req)
|
|
201
201
|
|
|
@@ -223,7 +223,7 @@ module Instana
|
|
|
223
223
|
#
|
|
224
224
|
def report_metrics(payload)
|
|
225
225
|
unless @discovered
|
|
226
|
-
::Instana.logger.
|
|
226
|
+
::Instana.logger.debug("#{__method__} called but discovery hasn't run yet!")
|
|
227
227
|
return false
|
|
228
228
|
end
|
|
229
229
|
|
|
@@ -275,7 +275,7 @@ module Instana
|
|
|
275
275
|
uri = URI.parse("http://#{@discovered[:agent_host]}:#{@discovered[:agent_port]}/#{path}")
|
|
276
276
|
req = Net::HTTP::Post.new(uri)
|
|
277
277
|
req.body = payload.to_json
|
|
278
|
-
::Instana.logger.
|
|
278
|
+
::Instana.logger.debug "Responding to agent request: #{req.inspect}"
|
|
279
279
|
make_host_agent_request(req)
|
|
280
280
|
end
|
|
281
281
|
|
|
@@ -288,7 +288,7 @@ module Instana
|
|
|
288
288
|
return unless @state == :announced
|
|
289
289
|
|
|
290
290
|
unless @discovered
|
|
291
|
-
::Instana.logger.
|
|
291
|
+
::Instana.logger.debug("#{__method__} called but discovery hasn't run yet!")
|
|
292
292
|
return false
|
|
293
293
|
end
|
|
294
294
|
|
|
@@ -397,7 +397,7 @@ module Instana
|
|
|
397
397
|
return true if ENV['INSTANA_GEM_TEST']
|
|
398
398
|
|
|
399
399
|
if forked?
|
|
400
|
-
::Instana.logger.
|
|
400
|
+
::Instana.logger.debug "Instana: detected fork. Calling after_fork"
|
|
401
401
|
after_fork
|
|
402
402
|
end
|
|
403
403
|
|
|
@@ -417,7 +417,7 @@ module Instana
|
|
|
417
417
|
# `:announced`, `:unannounced`
|
|
418
418
|
#
|
|
419
419
|
def transition_to(state)
|
|
420
|
-
::Instana.logger.
|
|
420
|
+
::Instana.logger.debug("Transitioning to #{state}")
|
|
421
421
|
case state
|
|
422
422
|
when :announced
|
|
423
423
|
# announce successful; set state
|
|
@@ -456,7 +456,7 @@ module Instana
|
|
|
456
456
|
end
|
|
457
457
|
|
|
458
458
|
response = @httpclient.request(req)
|
|
459
|
-
::Instana.logger.
|
|
459
|
+
# ::Instana.logger.debug "#{req.method}->#{req.uri} body:(#{req.body}) Response:#{response} body:(#{response.body})"
|
|
460
460
|
|
|
461
461
|
response
|
|
462
462
|
rescue Errno::ECONNREFUSED
|
|
@@ -5,7 +5,7 @@ if defined?(::Rails)
|
|
|
5
5
|
::Instana.logger = ::Rails.logger if ::Rails.logger
|
|
6
6
|
|
|
7
7
|
if ::Rails::VERSION::MAJOR < 3
|
|
8
|
-
::Rails.configuration.
|
|
8
|
+
::Rails.configuration.after_initialize do
|
|
9
9
|
::Instana.logger.info "Instrumenting Rack"
|
|
10
10
|
::Rails.configuration.middleware.insert 0, ::Instana::Rack
|
|
11
11
|
end
|
data/lib/instana/logger.rb
CHANGED
|
@@ -2,7 +2,6 @@ require "logger"
|
|
|
2
2
|
|
|
3
3
|
module Instana
|
|
4
4
|
class XLogger < Logger
|
|
5
|
-
LEVELS = [:agent, :agent_comm, :trace, :agent_response, :tracing].freeze
|
|
6
5
|
STAMP = "Instana: ".freeze
|
|
7
6
|
|
|
8
7
|
def initialize(*args)
|
|
@@ -11,63 +10,11 @@ module Instana
|
|
|
11
10
|
self.level = Logger::DEBUG
|
|
12
11
|
elsif ENV.key?('INSTANA_GEM_DEV')
|
|
13
12
|
self.level = Logger::DEBUG
|
|
14
|
-
self.debug_level = nil
|
|
15
13
|
else
|
|
16
14
|
self.level = Logger::WARN
|
|
17
15
|
end
|
|
18
16
|
end
|
|
19
17
|
|
|
20
|
-
# Sets the debug level for this logger. The debug level is broken up into various
|
|
21
|
-
# sub-levels as defined in LEVELS:
|
|
22
|
-
#
|
|
23
|
-
# :agent - All agent related messages such as state & announcements
|
|
24
|
-
# :agent_comm - Output all payload comm sent between this Ruby gem and the host agent
|
|
25
|
-
# :agent_response - Outputs messages related to handling requests received by the host agent
|
|
26
|
-
# :trace - Output all traces reported to the host agent
|
|
27
|
-
# :tracing - Output messages related to tracing components, spans and management
|
|
28
|
-
#
|
|
29
|
-
# To use:
|
|
30
|
-
# ::Instana.logger.debug_level = [:agent_comm, :trace]
|
|
31
|
-
#
|
|
32
|
-
def debug_level=(levels)
|
|
33
|
-
return unless levels
|
|
34
|
-
|
|
35
|
-
LEVELS.each do |l|
|
|
36
|
-
instance_variable_set("@level_#{l}", false)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
levels = [ levels ] unless levels.is_a?(Array)
|
|
40
|
-
levels.each do |l|
|
|
41
|
-
next unless LEVELS.include?(l)
|
|
42
|
-
instance_variable_set("@level_#{l}", true)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def agent(msg)
|
|
47
|
-
return unless @level_agent
|
|
48
|
-
self.debug(msg)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def agent_comm(msg)
|
|
52
|
-
return unless @level_agent_comm
|
|
53
|
-
self.debug(msg)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def agent_response(msg)
|
|
57
|
-
return unless @level_agent_response
|
|
58
|
-
self.debug(msg)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def trace(msg)
|
|
62
|
-
return unless @level_trace
|
|
63
|
-
self.debug(msg)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def tracing(msg)
|
|
67
|
-
return unless @level_tracing
|
|
68
|
-
self.debug(msg)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
18
|
def error(msg)
|
|
72
19
|
super(STAMP + msg)
|
|
73
20
|
end
|
|
@@ -89,4 +36,3 @@ module Instana
|
|
|
89
36
|
end
|
|
90
37
|
end
|
|
91
38
|
end
|
|
92
|
-
|
|
@@ -25,7 +25,7 @@ module Instana
|
|
|
25
25
|
#
|
|
26
26
|
# @param [Trace] the trace to be added to the queue
|
|
27
27
|
def add(trace)
|
|
28
|
-
::Instana.logger.
|
|
28
|
+
# ::Instana.logger.debug("Queuing completed trace id: #{trace.id}")
|
|
29
29
|
@queue.push(trace)
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ module Instana
|
|
|
33
33
|
#
|
|
34
34
|
# @param [Trace] the trace to be added to the queue
|
|
35
35
|
def stage(trace)
|
|
36
|
-
::Instana.logger.
|
|
36
|
+
::Instana.logger.debug("Staging incomplete trace id: #{trace.id}")
|
|
37
37
|
@staging_queue.add(trace)
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -46,7 +46,7 @@ module Instana
|
|
|
46
46
|
if @staging_queue.size > 0
|
|
47
47
|
@staging_queue.delete_if do |t|
|
|
48
48
|
if t.complete?
|
|
49
|
-
::Instana.logger.
|
|
49
|
+
::Instana.logger.debug("Moving staged complete trace to main queue: #{t.id}")
|
|
50
50
|
add(t)
|
|
51
51
|
true
|
|
52
52
|
elsif t.discard?
|
|
@@ -160,7 +160,7 @@ module Instana
|
|
|
160
160
|
end
|
|
161
161
|
}
|
|
162
162
|
unless candidate
|
|
163
|
-
::Instana.logger.
|
|
163
|
+
::Instana.logger.debug("Couldn't find staged trace with trace_id: #{trace_id}")
|
|
164
164
|
end
|
|
165
165
|
candidate
|
|
166
166
|
end
|
data/lib/instana/tracing/span.rb
CHANGED
|
@@ -355,7 +355,7 @@ module Instana
|
|
|
355
355
|
end
|
|
356
356
|
|
|
357
357
|
if ::Instana.tracer.current_span.id != id
|
|
358
|
-
::Instana.logger.
|
|
358
|
+
::Instana.logger.debug "Closing a span that isn't active. This will result in a broken trace: #{self.inspect}"
|
|
359
359
|
end
|
|
360
360
|
|
|
361
361
|
if is_root?
|
data/lib/instana/version.rb
CHANGED
|
@@ -79,6 +79,9 @@ class GrpcTest < Minitest::Test
|
|
|
79
79
|
|
|
80
80
|
assert 'Hello World', response.message
|
|
81
81
|
|
|
82
|
+
# Pause for a split second to allow traces to be queued
|
|
83
|
+
sleep 0.2
|
|
84
|
+
|
|
82
85
|
assert_equal 2, ::Instana.processor.queue_count
|
|
83
86
|
client_trace, server_trace = differentiate_trace(
|
|
84
87
|
Instana.processor.queued_traces
|
|
@@ -111,6 +114,9 @@ class GrpcTest < Minitest::Test
|
|
|
111
114
|
|
|
112
115
|
assert '01234', response.message
|
|
113
116
|
|
|
117
|
+
# Pause for a split second to allow traces to be queued
|
|
118
|
+
sleep 0.2
|
|
119
|
+
|
|
114
120
|
assert_equal 2, ::Instana.processor.queue_count
|
|
115
121
|
client_trace, server_trace = differentiate_trace(
|
|
116
122
|
Instana.processor.queued_traces
|
|
@@ -138,10 +144,11 @@ class GrpcTest < Minitest::Test
|
|
|
138
144
|
PingPongService::PingRequest.new(message: 'Hello World')
|
|
139
145
|
)
|
|
140
146
|
end
|
|
141
|
-
sleep 1
|
|
142
|
-
|
|
143
147
|
assert %w(0 1 2 3 4), responses.map(&:message)
|
|
144
148
|
|
|
149
|
+
# Pause for a split second to allow traces to be queued
|
|
150
|
+
sleep 0.2
|
|
151
|
+
|
|
145
152
|
assert_equal 2, ::Instana.processor.queue_count
|
|
146
153
|
client_trace, server_trace = differentiate_trace(
|
|
147
154
|
Instana.processor.queued_traces
|
|
@@ -175,6 +182,9 @@ class GrpcTest < Minitest::Test
|
|
|
175
182
|
|
|
176
183
|
assert %w(0 2 4 6 8), responses.to_a.map(&:message)
|
|
177
184
|
|
|
185
|
+
# Pause for a split second to allow traces to be queued
|
|
186
|
+
sleep 0.2
|
|
187
|
+
|
|
178
188
|
assert_equal 2, ::Instana.processor.queue_count
|
|
179
189
|
client_trace, server_trace = differentiate_trace(
|
|
180
190
|
Instana.processor.queued_traces
|
|
@@ -202,6 +212,9 @@ class GrpcTest < Minitest::Test
|
|
|
202
212
|
end
|
|
203
213
|
end
|
|
204
214
|
|
|
215
|
+
# Pause for a split second to allow traces to be queued
|
|
216
|
+
sleep 0.2
|
|
217
|
+
|
|
205
218
|
assert_equal 2, ::Instana.processor.queue_count
|
|
206
219
|
client_trace, server_trace = differentiate_trace(
|
|
207
220
|
Instana.processor.queued_traces
|
|
@@ -234,6 +247,9 @@ class GrpcTest < Minitest::Test
|
|
|
234
247
|
end
|
|
235
248
|
end
|
|
236
249
|
|
|
250
|
+
# Pause for a split second to allow traces to be queued
|
|
251
|
+
sleep 0.2
|
|
252
|
+
|
|
237
253
|
assert_equal 2, ::Instana.processor.queue_count
|
|
238
254
|
client_trace, server_trace = differentiate_trace(
|
|
239
255
|
Instana.processor.queued_traces
|
|
@@ -264,7 +280,9 @@ class GrpcTest < Minitest::Test
|
|
|
264
280
|
rescue
|
|
265
281
|
end
|
|
266
282
|
end
|
|
267
|
-
|
|
283
|
+
|
|
284
|
+
# Pause for a split second to allow traces to be queued
|
|
285
|
+
sleep 0.2
|
|
268
286
|
|
|
269
287
|
assert_equal 2, ::Instana.processor.queue_count
|
|
270
288
|
client_trace, server_trace = differentiate_trace(
|
|
@@ -294,7 +312,9 @@ class GrpcTest < Minitest::Test
|
|
|
294
312
|
end
|
|
295
313
|
)
|
|
296
314
|
end
|
|
297
|
-
|
|
315
|
+
|
|
316
|
+
# Pause for a split second to allow traces to be queued
|
|
317
|
+
sleep 0.2
|
|
298
318
|
|
|
299
319
|
assert_equal 2, ::Instana.processor.queue_count
|
|
300
320
|
client_trace, server_trace = differentiate_trace(
|
data/test/test_helper.rb
CHANGED
|
@@ -27,9 +27,6 @@ end
|
|
|
27
27
|
|
|
28
28
|
Minitest::Reporters.use! MiniTest::Reporters::SpecReporter.new
|
|
29
29
|
|
|
30
|
-
# Set this (or a subset) if you want increased debug output
|
|
31
|
-
#::Instana.logger.debug_level = [ :agent, :agent_comm, :trace ]
|
|
32
|
-
|
|
33
30
|
# Used to reset the gem to boot state. It clears out any queued and/or staged
|
|
34
31
|
# traces and resets the tracer to no active trace.
|
|
35
32
|
#
|
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.5.
|
|
4
|
+
version: 1.5.2
|
|
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: 2017-07-
|
|
11
|
+
date: 2017-07-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - ">="
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 1.
|
|
145
|
+
version: 1.8.1
|
|
146
146
|
type: :runtime
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - ">="
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 1.
|
|
152
|
+
version: 1.8.1
|
|
153
153
|
description: Provides Ruby sensor instrumentation for Instana.
|
|
154
154
|
email:
|
|
155
155
|
- pglombardo@gmail.com
|