instana 1.7.8 → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 316edaafce9e919b5191950fcd3a8dfd7ca39ef6
4
- data.tar.gz: 28b3899692291381011da1602da9b3512e5637ff
3
+ metadata.gz: af911c681182db8726372c73e8fd2560374b8508
4
+ data.tar.gz: 230dcaa3a019e7c571a1b10726fc33550092de54
5
5
  SHA512:
6
- metadata.gz: 37f348d6f49c0a6b4214e50d157349d6191fc61c17604d62e1a50ff32730201697220cced8986d4f0abec8e41eaeee95d342952b3b2fd97338bd7fd03c63a21a
7
- data.tar.gz: d442ed00f217b08b4b29f64166c66ff1ecd4f551e238787587d203f887b450eb14933d0349b59f844530cc2e18e4790e57586498d3d4363274fc44891b7907e8
6
+ metadata.gz: 0b80e44dcdeaaed59c3b3f1ee2f4b8b7984b22a5b81ae17a1470de2d6c8a34a8b106ef9e07b2b46cc3a086ce292f10ffe40cc24e60a7530f2d16ea5dcae54dda
7
+ data.tar.gz: f62f4130454c5affedfcf5c322ed2cb83a2ca0ebf48fbd1c846529c2e9bacbe9fd1098a8feedcd5f9c1e0be45530ba91310defdbeacca909d3ec599be6a84875
@@ -0,0 +1,31 @@
1
+ # This file contains a basic OpenTracing example.
2
+ #
3
+ # Note: The instana gem automatically sets the Instana tracer
4
+ # to `OpenTracing.global_tracer`. Once the gem is loaded, you can
5
+ # immediately start making OpenTracing calls.
6
+ #
7
+ require "opentracing"
8
+
9
+ entry_span = OpenTracing.start_span("HandMadeRackServer")
10
+
11
+ entry_span.set_tag(:'http.method', :get)
12
+ entry_span.set_tag(:'http.url', "/users")
13
+ entry_span.set_tag(:'span.kind', "entry")
14
+
15
+ intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
16
+ intermediate_span.finish()
17
+
18
+ db_span = OpenTracing.start_span('mydbspan', :child_of => entry_span)
19
+ db_span.set_tag(:'db.instance', "users")
20
+ db_span.set_tag(:'db.statement', "SELECT * FROM user_table")
21
+ db_span.set_tag(:'db.type', "mysql")
22
+ db_span.set_tag(:'db.user', "mysql_login")
23
+ db_span.set_tag(:'span.kind', "exit")
24
+ db_span.finish()
25
+
26
+ intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
27
+ intermediate_span.log("ALLOK", :message => "All seems ok")
28
+ intermediate_span.finish()
29
+
30
+ entry_span.set_tag(:'http.status_code', 200)
31
+ entry_span.finish()
@@ -1,6 +1,10 @@
1
- # This file outlines some of the concepts with Instana tracing.
2
- # Please also see rdoc for latest info:
3
- # http://www.rubydoc.info/gems/instana/0.9.0.pre.slywolf3/Instana/Tracer
1
+ # This file outlines the Instana Ruby Tracing API.
2
+ #
3
+ # This same tracer also supports OpenTracing. See `opentracing.rb` for
4
+ # separate documentation.
5
+
6
+ # This API is also documented on rubydoc:
7
+ # http://www.rubydoc.info/gems/instana/1.7.8/Instana/Tracer
4
8
 
5
9
  #######################################
6
10
  ## Block tracing
@@ -74,4 +78,3 @@ ensure
74
78
  end
75
79
 
76
80
  Instana::Tracer.log_end(:mywebserver)
77
-
@@ -98,7 +98,7 @@ module Instana
98
98
  if HTTP_SPANS.include?(@data[:n])
99
99
  set_tags(:http => { :error => "#{e.class}: #{e.message}" })
100
100
  else
101
- set_tags(:log => { :message => e.message, :parameters => e.class.to_s })
101
+ log(:error, Time.now, { :message => e.message, :parameters => e.class.to_s })
102
102
  end
103
103
  e.instance_variable_set(:@instana_logged, true)
104
104
  end
@@ -115,6 +115,7 @@ module Instana
115
115
  def configure_custom(name)
116
116
  @data[:n] = :sdk
117
117
  @data[:data] = { :sdk => { :name => name.to_sym } }
118
+ @data[:data][:sdk][:custom] = { :tags => {}, :logs => {} }
118
119
  self
119
120
  end
120
121
 
@@ -243,6 +244,10 @@ module Instana
243
244
  @data[:n] == :sdk
244
245
  end
245
246
 
247
+ def inspect
248
+ @data.inspect
249
+ end
250
+
246
251
  #############################################################
247
252
  # OpenTracing Compatibility Methods
248
253
  #############################################################
@@ -266,7 +271,8 @@ module Instana
266
271
  def set_tag(key, value)
267
272
  if custom?
268
273
  @data[:data][:sdk][:custom] ||= {}
269
- @data[:data][:sdk][:custom][key] = value
274
+ @data[:data][:sdk][:custom][:tags] ||= {}
275
+ @data[:data][:sdk][:custom][:tags][key] = value
270
276
 
271
277
  if key.to_sym == :'span.kind'
272
278
  case value.to_sym
@@ -333,7 +339,7 @@ module Instana
333
339
  #
334
340
  def tags(key = nil)
335
341
  if custom?
336
- tags = @data[:data][:sdk][:custom]
342
+ tags = @data[:data][:sdk][:custom][:tags]
337
343
  else
338
344
  tags = @data[:data][key]
339
345
  end
@@ -347,8 +353,16 @@ module Instana
347
353
  # @param timestamp [Time] time of the log
348
354
  # @param fields [Hash] Additional information to log
349
355
  #
350
- def log(event = nil, _timestamp = Time.now, **fields)
351
- set_tags(:log => { :message => event, :parameters => fields })
356
+ def log(event = nil, timestamp = Time.now, **fields)
357
+ ts = ::Instana::Util.time_to_ms(timestamp).to_s
358
+ if custom?
359
+ @data[:data][:sdk][:custom][:logs][ts] = fields
360
+ @data[:data][:sdk][:custom][:logs][ts][:event] = event
361
+ else
362
+ set_tags(:log => fields)
363
+ end
364
+ rescue StandardError => e
365
+ Instana.logger.debug "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
352
366
  end
353
367
 
354
368
  # Finish the {Span}
@@ -1,4 +1,4 @@
1
1
  module Instana
2
- VERSION = "1.7.8"
2
+ VERSION = "1.7.9"
3
3
  VERSION_FULL = "instana-#{VERSION}"
4
4
  end
@@ -131,9 +131,10 @@ class NetHTTPTest < Minitest::Test
131
131
 
132
132
  assert_equal :'net-http-error-test', first_span.name
133
133
  assert first_span.custom?
134
- assert first_span[:data][:sdk][:custom].key?(:log)
135
- assert first_span[:data][:sdk][:custom][:log].key?(:message)
136
- assert first_span[:data][:sdk][:custom][:log].key?(:parameters)
134
+ ts_key = first_span[:data][:sdk][:custom][:logs].keys.first
135
+ assert first_span[:data][:sdk][:custom][:logs].key?(ts_key)
136
+ assert first_span[:data][:sdk][:custom][:logs][ts_key].key?(:event)
137
+ assert first_span[:data][:sdk][:custom][:logs][ts_key].key?(:parameters)
137
138
 
138
139
  WebMock.disable_net_connect!
139
140
  end
@@ -8,8 +8,8 @@ require "minitest/spec"
8
8
  require "minitest/autorun"
9
9
  require "minitest/reporters"
10
10
  require "minitest/debugger" if ENV['DEBUG']
11
- require 'webmock/minitest'
12
11
  require "minitest/benchmark"
12
+ require 'webmock/minitest'
13
13
 
14
14
  require "instana/test"
15
15
  ::Instana::Test.setup_environment
@@ -17,10 +17,11 @@ require "instana/test"
17
17
  # Boot background webservers to test against.
18
18
  require "./test/servers/rackapp_6511"
19
19
 
20
+ # Allow localhost calls to the internal rails servers
21
+ ::WebMock.disable_net_connect!(allow_localhost: true)
22
+
20
23
  case File.basename(ENV['BUNDLE_GEMFILE'])
21
24
  when /rails50|rails42|rails32/
22
- # Allow localhost calls to the internal rails servers
23
- ::WebMock.disable_net_connect!(allow_localhost: true)
24
25
  require './test/servers/rails_3205'
25
26
  when /libraries/
26
27
  # Configure gRPC
@@ -30,8 +30,9 @@ class CustomTracingTest < Minitest::Test
30
30
  assert first_span.key?(:data)
31
31
  assert first_span[:data].key?(:sdk)
32
32
  assert first_span[:data][:sdk].key?(:custom)
33
+ assert first_span[:data][:sdk][:custom].key?(:tags)
33
34
  assert_equal :custom_trace, first_span[:data][:sdk][:name]
34
- assert_equal 1, first_span[:data][:sdk][:custom][:one]
35
+ assert_equal 1, first_span[:data][:sdk][:custom][:tags][:one]
35
36
  assert_equal :ruby, first_span[:ta]
36
37
 
37
38
  assert first_span.key?(:f)
@@ -85,13 +86,14 @@ class CustomTracingTest < Minitest::Test
85
86
  assert second_span.key?(:data)
86
87
  assert second_span[:data].key?(:sdk)
87
88
  assert second_span[:data][:sdk].key?(:custom)
89
+ assert second_span[:data][:sdk][:custom].key?(:tags)
88
90
  assert :custom_span, second_span[:data][:sdk][:name]
89
91
  assert :unknown, second_span[:data][:sdk][:type]
90
92
  assert [[1, 2, 3], "test_arg", :ok], second_span[:data][:sdk][:arguments]
91
93
  assert true, second_span[:data][:sdk][:return]
92
- assert_equal 1, second_span[:data][:sdk][:custom][:on_entry_kv]
93
- assert_equal 1, second_span[:data][:sdk][:custom][:on_info_kv]
94
- assert_equal 1, second_span[:data][:sdk][:custom][:on_exit_kv]
94
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:on_entry_kv]
95
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:on_info_kv]
96
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:on_exit_kv]
95
97
  end
96
98
 
97
99
  def test_custom_tracing_with_error
@@ -148,13 +150,14 @@ class CustomTracingTest < Minitest::Test
148
150
  assert second_span.key?(:data)
149
151
  assert second_span[:data].key?(:sdk)
150
152
  assert second_span[:data][:sdk].key?(:custom)
153
+ assert second_span[:data][:sdk][:custom].key?(:tags)
151
154
  assert :custom_span, second_span[:data][:sdk][:name]
152
155
  assert :unknown, second_span[:data][:sdk][:type]
153
156
  assert [[1, 2, 3], "test_arg", :ok], second_span[:data][:sdk][:arguments]
154
157
  assert true, second_span[:data][:sdk][:return]
155
- assert_equal 1, second_span[:data][:sdk][:custom][:on_entry_kv]
156
- assert !second_span[:data][:sdk][:custom].key?(:on_info_kv)
157
- assert_equal 1, second_span[:data][:sdk][:custom][:on_exit_kv]
158
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:on_entry_kv]
159
+ assert !second_span[:data][:sdk][:custom][:tags].key?(:on_info_kv)
160
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:on_exit_kv]
158
161
 
159
162
  # Check the error
160
163
  assert_equal true, second_span[:error]
@@ -213,7 +213,7 @@ class OpenTracerTest < Minitest::Test
213
213
  span[:data][:sdk].delete(:type)
214
214
  span.set_tag(:'span.kind', :blah)
215
215
  assert_equal false, span[:data][:sdk].key?(:type)
216
- assert_equal :blah, span[:data][:sdk][:custom][:'span.kind']
216
+ assert_equal :blah, span[:data][:sdk][:custom][:tags][:'span.kind']
217
217
 
218
218
  span.finish
219
219
  end
@@ -250,6 +250,9 @@ class OpenTracerTest < Minitest::Test
250
250
 
251
251
  assert_equal ts_start_ms, span[:ts]
252
252
  assert_equal (ts_finish_ms - ts_start_ms), span[:d]
253
+
254
+ assert_equal 1234, span[:data][:sdk][:custom][:tags][:start_tag]
255
+ assert_equal 'tag_value', span[:data][:sdk][:custom][:tags][:another_tag]
253
256
  end
254
257
 
255
258
  def test_nested_spans_using_child_of
@@ -45,8 +45,8 @@ class TracerAsyncTest < Minitest::Test
45
45
  # KV checks
46
46
  assert_equal 1, first_span[:data][:rack_start_kv]
47
47
  assert_equal 1, first_span[:data][:rack_end_kv]
48
- assert_equal 1, second_span[:data][:sdk][:custom][:entry_kv]
49
- assert_equal 1, second_span[:data][:sdk][:custom][:exit_kv]
48
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:entry_kv]
49
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:exit_kv]
50
50
  end
51
51
 
52
52
  def test_diff_thread_async_tracing
@@ -103,14 +103,14 @@ class TracerAsyncTest < Minitest::Test
103
103
  # first span in second trace
104
104
  assert_equal :async_thread, first_span.name
105
105
  assert first_span.duration
106
- assert_equal 1, first_span[:data][:sdk][:custom][:async_start]
107
- assert_equal 1, first_span[:data][:sdk][:custom][:async_end]
106
+ assert_equal 1, first_span[:data][:sdk][:custom][:tags][:async_start]
107
+ assert_equal 1, first_span[:data][:sdk][:custom][:tags][:async_end]
108
108
 
109
109
  # second span in second trace
110
110
  assert_equal :sleepy_time, second_span.name
111
111
  assert second_span.duration
112
- assert_equal 1, second_span[:data][:sdk][:custom][:tired]
113
- assert_equal 1, second_span[:data][:sdk][:custom][:wake_up]
112
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:tired]
113
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:wake_up]
114
114
 
115
115
  # Validate linkage
116
116
  # first_span is the parent of first_span
@@ -169,8 +169,8 @@ class TracerAsyncTest < Minitest::Test
169
169
 
170
170
  # second span validation
171
171
  assert_equal :my_async_op, second_span.name
172
- assert_equal 1, second_span[:data][:sdk][:custom][:async_entry_kv]
173
- assert !second_span[:data][:sdk][:custom].key?(:async_exit_kv)
172
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:async_entry_kv]
173
+ assert !second_span[:data][:sdk][:custom][:tags].key?(:async_exit_kv)
174
174
  assert_equal nil, second_span.duration
175
175
 
176
176
  # first_span is the parent of first_span
@@ -252,12 +252,12 @@ class TracerAsyncTest < Minitest::Test
252
252
  # KV checks
253
253
  assert_equal 1, first_span[:data][:rack_start_kv]
254
254
  assert_equal 1, first_span[:data][:rack_end_kv]
255
- assert_equal 1, second_span[:data][:sdk][:custom][:entry_kv]
256
- assert_equal 1, second_span[:data][:sdk][:custom][:exit_kv]
257
- assert_equal 2, third_span[:data][:sdk][:custom][:entry_kv]
258
- assert_equal 2, third_span[:data][:sdk][:custom][:exit_kv]
259
- assert_equal 3, fourth_span[:data][:sdk][:custom][:entry_kv]
260
- assert_equal 3, fourth_span[:data][:sdk][:custom][:exit_kv]
255
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:entry_kv]
256
+ assert_equal 1, second_span[:data][:sdk][:custom][:tags][:exit_kv]
257
+ assert_equal 2, third_span[:data][:sdk][:custom][:tags][:entry_kv]
258
+ assert_equal 2, third_span[:data][:sdk][:custom][:tags][:exit_kv]
259
+ assert_equal 3, fourth_span[:data][:sdk][:custom][:tags][:entry_kv]
260
+ assert_equal 3, fourth_span[:data][:sdk][:custom][:tags][:exit_kv]
261
261
  end
262
262
 
263
263
 
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.7.8
4
+ version: 1.7.9
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-12-13 00:00:00.000000000 Z
11
+ date: 2018-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -192,6 +192,7 @@ files:
192
192
  - benchmarks/time_processing.rb
193
193
  - bin/console
194
194
  - bin/setup
195
+ - examples/opentracing.rb
195
196
  - examples/tracing.rb
196
197
  - gemfiles/libraries.gemfile
197
198
  - gemfiles/rails32.gemfile