instana 1.3.1 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4f4776893611a534108c425fee351857893c440
4
- data.tar.gz: c432c9c4ac294429d3a2e1c7db6f9d995c7f8e27
3
+ metadata.gz: 44d2db00220595e42136a421be4f1d9d149fb958
4
+ data.tar.gz: 0e52f23d95fbfdf296c4632da28319d170298ca9
5
5
  SHA512:
6
- metadata.gz: 469f5a906f2936196c3af073c7d07b13191414690b3646ac1a216b10deaee0f609d8767b22a4ead6eb32a2d4ef828943b73000de30dca305d7150ad08e9f2e17
7
- data.tar.gz: f9e47e7a26878761d9353a25ae6de9a82b1d6ed19cf143a7e4feb684e47e0ec2139deaee5a7f3e9a780685021539afb27861534c6569f06170062bdb328b7b24
6
+ metadata.gz: 1e753d5fbd1c60c52afaa5a8219ee5c4e980dff40c22d27ccfc719ffc4068c72dae09e8a7fe5e072b30aa63e6a4fd5b240af054444df2a7f4a6a1a7b333aed05
7
+ data.tar.gz: 768f34f163485454e6371ab0ce2b39e44020a19ff44a9efe5a107b9efe282574f9cdcd6c62893a473fd86e323cb94438f2a751e06063e45cadc0c286c3ccf1a8
data/Configuration.md CHANGED
@@ -1,6 +1,24 @@
1
1
  # Configuration
2
2
 
3
- ## Enabling/Disabling Components
3
+ ## Global Enable/Disable
4
+
5
+ The entire gem can be disabled at runtime with:
6
+
7
+ ```Ruby
8
+ ::Instana.config[:enabled] = false # default: true
9
+ ```
10
+
11
+ Other global enable/disable options are:
12
+
13
+ ```Ruby
14
+ # Enable/Disable metrics collection and reporting
15
+ Instana.config[:metrics][:enabled] # default true
16
+
17
+ # Enable/Disable tracing
18
+ Instana.config[:tracing][:enabled] # default true
19
+ ```
20
+
21
+ ## Enabling/Disabling Individual Components
4
22
 
5
23
  Individual components can be enabled and disabled with a local config.
6
24
 
@@ -45,6 +45,8 @@ module Instana
45
45
  # @return Boolean true on success
46
46
  #
47
47
  def collect_and_report
48
+ return unless ::Instana.config[:metrics][:enabled]
49
+
48
50
  payload = {}
49
51
  with_snapshot = false
50
52
 
@@ -3,13 +3,24 @@ module Instana
3
3
 
4
4
  def initialize
5
5
  @config = {}
6
+
6
7
  @config[:agent_host] = '127.0.0.1'
7
8
  @config[:agent_port] = 42699
8
- @config[:metrics] = {}
9
+
10
+ # Global on/off switch for prebuilt environments
11
+ # Setting this to false will disable this gem
12
+ # from doing anything.
13
+ @config[:enabled] = true
14
+
15
+ # Enable/disable metrics globally or individually (default: all enabled)
16
+ @config[:metrics] = { :enabled => true }
9
17
  @config[:metrics][:gc] = { :enabled => true }
10
18
  @config[:metrics][:memory] = { :enabled => true }
11
19
  @config[:metrics][:thread] = { :enabled => true }
12
20
 
21
+ # Enable/disable tracing (default: enabled)
22
+ @config[:tracing] = { :enabled => true }
23
+
13
24
  if ENV.key?('INSTANA_GEM_DEV')
14
25
  @config[:collector] = { :enabled => true, :interval => 3 }
15
26
  else
@@ -36,6 +47,13 @@ module Instana
36
47
 
37
48
  def []=(key, value)
38
49
  @config[key.to_sym] = value
50
+
51
+ if key == :enabled
52
+ # Configuring global enable/disable flag, then set the
53
+ # appropriate children flags.
54
+ @config[:metrics][:enabled] = value
55
+ @config[:tracing][:enabled] = value
56
+ end
39
57
  end
40
58
  end
41
59
  end
@@ -6,6 +6,7 @@ module Instana
6
6
  STAMP = "Instana: ".freeze
7
7
 
8
8
  def initialize(*args)
9
+ super(*args)
9
10
  if ENV.key?('INSTANA_GEM_TEST')
10
11
  self.level = Logger::DEBUG
11
12
  elsif ENV.key?('INSTANA_GEM_DEV')
@@ -14,7 +15,6 @@ module Instana
14
15
  else
15
16
  self.level = Logger::WARN
16
17
  end
17
- super(*args)
18
18
  end
19
19
 
20
20
  # Sets the debug level for this logger. The debug level is broken up into various
@@ -72,7 +72,7 @@ module Instana
72
72
  # :level specifies data collection level (optional)
73
73
  #
74
74
  def log_start_or_continue(name, kvs = {}, incoming_context = {})
75
- return unless ::Instana.agent.ready?
75
+ return if !::Instana.agent.ready? || !::Instana.config[:tracing][:enabled]
76
76
  ::Instana.logger.debug "#{__method__} passed a block. Use `start_or_continue` instead!" if block_given?
77
77
  self.current_trace = ::Instana::Trace.new(name, kvs, incoming_context)
78
78
  end
@@ -191,7 +191,11 @@ module Instana
191
191
  self.current_trace.add_async_info(kvs, span)
192
192
  else
193
193
  trace = ::Instana.processor.staged_trace(span.context.trace_id)
194
- trace.add_async_info(kvs, span)
194
+ if trace
195
+ trace.add_async_info(kvs, span)
196
+ else
197
+ ::Instana.logger.debug "#{__method__}: Couldn't find staged trace. #{span.inspect}"
198
+ end
195
199
  end
196
200
  end
197
201
 
@@ -210,7 +214,11 @@ module Instana
210
214
  self.current_trace.add_async_error(e, span)
211
215
  else
212
216
  trace = ::Instana.processor.staged_trace(span.context.trace_id)
213
- trace.add_async_error(e, span)
217
+ if trace
218
+ trace.add_async_error(e, span)
219
+ else
220
+ ::Instana.logger.debug "#{__method__}: Couldn't find staged trace. #{span.inspect}"
221
+ end
214
222
  end
215
223
  end
216
224
 
@@ -235,7 +243,7 @@ module Instana
235
243
  if trace
236
244
  trace.end_async_span(kvs, span)
237
245
  else
238
- ::Instana.logger.debug "log_async_exit: Couldn't find staged trace. #{span.inspect}"
246
+ ::Instana.logger.debug "#{__method__}: Couldn't find staged trace. #{span.inspect}"
239
247
  end
240
248
  end
241
249
  end
@@ -1,4 +1,4 @@
1
1
  module Instana
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.2"
3
3
  VERSION_FULL = "instana-#{VERSION}"
4
4
  end
data/test/config_test.rb CHANGED
@@ -10,8 +10,28 @@ class ConfigTest < Minitest::Test
10
10
  assert_equal '127.0.0.1', ::Instana.config[:agent_host]
11
11
  assert_equal 42699, ::Instana.config[:agent_port]
12
12
 
13
+ assert ::Instana.config[:enabled]
14
+ assert ::Instana.config[:tracing][:enabled]
15
+ assert ::Instana.config[:metrics][:enabled]
16
+
13
17
  ::Instana.config[:metrics].each do |k, v|
14
18
  assert_equal true, ::Instana.config[:metrics][k].key?(:enabled)
15
19
  end
16
20
  end
21
+
22
+ def test_that_global_affects_children
23
+ # Disabling the gem should explicitly disable
24
+ # metrics and tracing flags
25
+ ::Instana.config[:enabled] = false
26
+
27
+ assert_equal false, ::Instana.config[:tracing][:enabled]
28
+ assert_equal false, ::Instana.config[:metrics][:enabled]
29
+
30
+ # Enabling the gem should explicitly enable
31
+ # metrics and tracing flags
32
+ ::Instana.config[:enabled] = true
33
+
34
+ assert_equal ::Instana.config[:tracing][:enabled]
35
+ assert_equal ::Instana.config[:metrics][:enabled]
36
+ end
17
37
  end
@@ -6,6 +6,20 @@ class TracerTest < Minitest::Test
6
6
  assert ::Instana.tracer.is_a?(::Instana::Tracer)
7
7
  end
8
8
 
9
+ def test_obey_tracing_config
10
+ clear_all!
11
+
12
+ ::Instana.config[:tracing][:enabled] = false
13
+ assert_equal false, ::Instana.tracer.tracing?
14
+
15
+ ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
16
+ assert_equal false, ::Instana.tracer.tracing?
17
+ end
18
+
19
+ ::Instana.config[:tracing][:enabled] = true
20
+ end
21
+
22
+
9
23
  def test_basic_trace_block
10
24
  clear_all!
11
25
 
@@ -13,7 +27,7 @@ class TracerTest < Minitest::Test
13
27
 
14
28
  ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
15
29
  assert_equal true, ::Instana.tracer.tracing?
16
- sleep 0.5
30
+ sleep 0.3
17
31
  end
18
32
 
19
33
  traces = ::Instana.processor.queued_traces
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.3.1
4
+ version: 1.3.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-01-25 00:00:00.000000000 Z
11
+ date: 2017-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler