instana 1.193.5 → 1.193.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +4 -0
- data/Appraisals +4 -0
- data/gemfiles/aws_30.gemfile +18 -0
- data/lib/instana/activators/aws_sdk_dynamodb.rb +20 -0
- data/lib/instana/instrumentation/aws_sdk_dynamodb.rb +29 -0
- data/lib/instana/instrumentation/excon.rb +3 -3
- data/lib/instana/instrumentation/net-http.rb +1 -1
- data/lib/instana/instrumentation/sidekiq-client.rb +1 -1
- data/lib/instana/instrumentation/sidekiq-worker.rb +1 -1
- data/lib/instana/tracing/span.rb +8 -2
- data/lib/instana/version.rb +1 -1
- data/test/instrumentation/aws_test.rb +33 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db77f1675976effa012f80a5d583f271b99e82db24e288a5af82eae4fa423cf1
|
4
|
+
data.tar.gz: 9fe2b02c6f58355876c91d8954d3039a14b948f67b7a5730319579fb5d405a9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e00009c32acb5e684ee6c2dea9c7a7d4a40133f14ff8ec5929e39e97622b6daf8c5a027ad6cfdf9c3ace7e27f7accb9f1fff25f954e51eab11854ffb7f0f5e9b
|
7
|
+
data.tar.gz: 7b8f0c486ab5deaa118debcedc1bf43b6164832cde533d52cb99fe8ac44c76ffe9c555101331ed7cff4b7e421fa321898ff3cf195af80d3a4cda4ed2b5c19db9
|
data/.circleci/config.yml
CHANGED
@@ -10,6 +10,7 @@ executors:
|
|
10
10
|
DATABASE_URL: 'sqlite3::memory:'
|
11
11
|
- image: memcached
|
12
12
|
- image: redis
|
13
|
+
- image: circleci/dynamodb
|
13
14
|
ruby_26:
|
14
15
|
docker:
|
15
16
|
- image: circleci/ruby:2.6-node
|
@@ -19,6 +20,7 @@ executors:
|
|
19
20
|
DATABASE_URL: 'sqlite3::memory:'
|
20
21
|
- image: memcached
|
21
22
|
- image: redis
|
23
|
+
- image: circleci/dynamodb
|
22
24
|
ruby_27:
|
23
25
|
docker:
|
24
26
|
- image: circleci/ruby:2.7-node
|
@@ -28,6 +30,7 @@ executors:
|
|
28
30
|
DATABASE_URL: 'sqlite3::memory:'
|
29
31
|
- image: memcached
|
30
32
|
- image: redis
|
33
|
+
- image: circleci/dynamodb
|
31
34
|
ruby_25_mysql2:
|
32
35
|
docker:
|
33
36
|
- image: circleci/ruby:2.5-node
|
@@ -196,6 +199,7 @@ workflows:
|
|
196
199
|
- ruby_26
|
197
200
|
- ruby_25
|
198
201
|
gemfile:
|
202
|
+
- "./gemfiles/aws_30.gemfile"
|
199
203
|
- "./gemfiles/cuba_30.gemfile"
|
200
204
|
- "./gemfiles/dalli_20.gemfile"
|
201
205
|
- "./gemfiles/excon_02.gemfile"
|
data/Appraisals
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
# (c) Copyright IBM Corp. 2021
|
4
|
+
# (c) Copyright Instana Inc. 2021
|
5
|
+
|
6
|
+
source "https://rubygems.org"
|
7
|
+
|
8
|
+
gem "rake"
|
9
|
+
gem "minitest", "5.9.1"
|
10
|
+
gem "minitest-reporters"
|
11
|
+
gem "webmock"
|
12
|
+
gem "puma"
|
13
|
+
gem "rubocop", "~> 1.9"
|
14
|
+
gem "rack-test"
|
15
|
+
gem "simplecov", "~> 0.21.2"
|
16
|
+
gem "aws-sdk-dynamodb", "~> 1.59"
|
17
|
+
|
18
|
+
gemspec path: "../"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# (c) Copyright IBM Corp. 2021
|
2
|
+
# (c) Copyright Instana Inc. 2021
|
3
|
+
|
4
|
+
module Instana
|
5
|
+
module Activators
|
6
|
+
class AwsDynamoDB < Activator
|
7
|
+
def can_instrument?
|
8
|
+
defined?(Aws::DynamoDB::Client)
|
9
|
+
end
|
10
|
+
|
11
|
+
def instrument
|
12
|
+
require 'instana/instrumentation/aws_sdk_dynamodb'
|
13
|
+
|
14
|
+
::Aws::DynamoDB::Client.add_plugin(Instana::Instrumentation::DynamoDB)
|
15
|
+
|
16
|
+
true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# (c) Copyright IBM Corp. 2021
|
2
|
+
# (c) Copyright Instana Inc. 2021
|
3
|
+
|
4
|
+
module Instana
|
5
|
+
module Instrumentation
|
6
|
+
class DynamoDB < Seahorse::Client::Plugin
|
7
|
+
class Handler < Seahorse::Client::Handler
|
8
|
+
def call(context)
|
9
|
+
dynamo_tags = {
|
10
|
+
op: context.operation_name,
|
11
|
+
table: table_name_from(context)
|
12
|
+
}
|
13
|
+
|
14
|
+
::Instana.tracer.trace(:dynamodb, dynamo_tags) { @handler.call(context) }
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def table_name_from(context)
|
20
|
+
context.params[:table_name] || context.params[:global_table_name] || 'Unknown'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_handlers(handlers, _config)
|
25
|
+
handlers.add(Handler, step: :initialize)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -5,7 +5,7 @@ module Instana
|
|
5
5
|
module Instrumentation
|
6
6
|
class Excon < ::Excon::Middleware::Base
|
7
7
|
def request_call(datum)
|
8
|
-
return @stack.request_call(datum) unless ::Instana.tracer.tracing?
|
8
|
+
return @stack.request_call(datum) unless ::Instana.tracer.tracing? || !Instana.tracer.current_span.exit_span?
|
9
9
|
|
10
10
|
payload = { :http => {} }
|
11
11
|
path = datum[:path].split('?').first
|
@@ -30,7 +30,7 @@ module Instana
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def error_call(datum)
|
33
|
-
return @stack.error_call(datum) unless ::Instana.tracer.tracing?
|
33
|
+
return @stack.error_call(datum) unless ::Instana.tracer.tracing? || !Instana.tracer.current_span.exit_span?
|
34
34
|
|
35
35
|
if datum[:pipeline] == true
|
36
36
|
::Instana.tracer.log_async_error(datum[:error], datum[:instana_span])
|
@@ -43,7 +43,7 @@ module Instana
|
|
43
43
|
def response_call(datum)
|
44
44
|
# FIXME: Will connect exceptions call a response?
|
45
45
|
#
|
46
|
-
return @stack.response_call(datum) unless ::Instana.tracer.tracing?
|
46
|
+
return @stack.response_call(datum) unless ::Instana.tracer.tracing? || !Instana.tracer.current_span.exit_span?
|
47
47
|
|
48
48
|
result = @stack.response_call(datum)
|
49
49
|
|
@@ -7,7 +7,7 @@ module Instana
|
|
7
7
|
module Instrumentation
|
8
8
|
module NetHTTPInstrumentation
|
9
9
|
def request(*args, &block)
|
10
|
-
if !Instana.tracer.tracing? || !started?
|
10
|
+
if !Instana.tracer.tracing? || Instana.tracer.current_span.exit_span? || !started?
|
11
11
|
do_skip = true
|
12
12
|
return super(*args, &block)
|
13
13
|
end
|
@@ -7,7 +7,7 @@ module Instana
|
|
7
7
|
def call(worker_class, msg, queue, _redis_pool)
|
8
8
|
kv_payload = { :'sidekiq-client' => {} }
|
9
9
|
kv_payload[:'sidekiq-client'][:queue] = queue
|
10
|
-
kv_payload[:'sidekiq-client'][:job] = worker_class
|
10
|
+
kv_payload[:'sidekiq-client'][:job] = worker_class.to_s
|
11
11
|
kv_payload[:'sidekiq-client'][:retry] = msg['retry'].to_s
|
12
12
|
::Instana.tracer.log_entry(:'sidekiq-client', kv_payload)
|
13
13
|
|
@@ -8,7 +8,7 @@ module Instana
|
|
8
8
|
kv_payload = { :'sidekiq-worker' => {} }
|
9
9
|
kv_payload[:'sidekiq-worker'][:job_id] = msg['jid']
|
10
10
|
kv_payload[:'sidekiq-worker'][:queue] = msg['queue']
|
11
|
-
kv_payload[:'sidekiq-worker'][:job] = msg['class']
|
11
|
+
kv_payload[:'sidekiq-worker'][:job] = msg['class'].to_s
|
12
12
|
kv_payload[:'sidekiq-worker'][:retry] = msg['retry'].to_s
|
13
13
|
|
14
14
|
# Temporary until we move connection collection to redis
|
data/lib/instana/tracing/span.rb
CHANGED
@@ -6,10 +6,10 @@ module Instana
|
|
6
6
|
REGISTERED_SPANS = [ :actioncontroller, :actionview, :activerecord, :excon,
|
7
7
|
:memcache, :'net-http', :rack, :render, :'rpc-client',
|
8
8
|
:'rpc-server', :'sidekiq-client', :'sidekiq-worker',
|
9
|
-
:redis, :'resque-client', :'resque-worker', :'graphql.server' ].freeze
|
9
|
+
:redis, :'resque-client', :'resque-worker', :'graphql.server', :dynamodb ].freeze
|
10
10
|
ENTRY_SPANS = [ :rack, :'resque-worker', :'rpc-server', :'sidekiq-worker', :'graphql.server' ].freeze
|
11
11
|
EXIT_SPANS = [ :activerecord, :excon, :'net-http', :'resque-client',
|
12
|
-
:'rpc-client', :'sidekiq-client', :redis ].freeze
|
12
|
+
:'rpc-client', :'sidekiq-client', :redis, :dynamodb ].freeze
|
13
13
|
HTTP_SPANS = [ :rack, :excon, :'net-http' ].freeze
|
14
14
|
|
15
15
|
attr_accessor :parent
|
@@ -289,6 +289,12 @@ module Instana
|
|
289
289
|
@data.inspect
|
290
290
|
end
|
291
291
|
|
292
|
+
# Check to see if the current span indicates an exit from application
|
293
|
+
# code and into an external service
|
294
|
+
def exit_span?
|
295
|
+
EXIT_SPANS.include?(@data[:n])
|
296
|
+
end
|
297
|
+
|
292
298
|
#############################################################
|
293
299
|
# OpenTracing Compatibility Methods
|
294
300
|
#############################################################
|
data/lib/instana/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
# (c) Copyright IBM Corp. 2021
|
2
|
+
# (c) Copyright Instana Inc. 2021
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
class AwsTest < Minitest::Test
|
7
|
+
def test_dynamo_db
|
8
|
+
dynamo = Aws::DynamoDB::Client.new(
|
9
|
+
region: "local",
|
10
|
+
access_key_id: "placeholder",
|
11
|
+
secret_access_key: "placeholder",
|
12
|
+
endpoint: "http://localhost:8000"
|
13
|
+
)
|
14
|
+
|
15
|
+
assert_raises Aws::DynamoDB::Errors::ResourceNotFoundException do
|
16
|
+
Instana::Tracer.start_or_continue_trace(:dynamo_test, {}) do
|
17
|
+
dynamo.get_item(
|
18
|
+
table_name: 'sample_table',
|
19
|
+
key: { s: 'sample_item' }
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
spans = ::Instana.processor.queued_spans
|
25
|
+
dynamo_span, entry_span, *rest = spans
|
26
|
+
|
27
|
+
assert rest.empty?
|
28
|
+
assert_equal entry_span[:s], dynamo_span[:p]
|
29
|
+
assert_equal :dynamodb, dynamo_span[:n]
|
30
|
+
assert_equal :get_item, dynamo_span[:data][:op]
|
31
|
+
assert_equal 'sample_table', dynamo_span[:data][:table]
|
32
|
+
end
|
33
|
+
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.193.
|
4
|
+
version: 1.193.6
|
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: 2021-02-
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- examples/tracing.rb
|
173
173
|
- extras/license_header.rb
|
174
174
|
- gemfiles/.bundle/config
|
175
|
+
- gemfiles/aws_30.gemfile
|
175
176
|
- gemfiles/cuba_30.gemfile
|
176
177
|
- gemfiles/dalli_20.gemfile
|
177
178
|
- gemfiles/excon_02.gemfile
|
@@ -202,6 +203,7 @@ files:
|
|
202
203
|
- lib/instana/activators/action_controller_base.rb
|
203
204
|
- lib/instana/activators/action_view.rb
|
204
205
|
- lib/instana/activators/active_record.rb
|
206
|
+
- lib/instana/activators/aws_sdk_dynamodb.rb
|
205
207
|
- lib/instana/activators/cuba.rb
|
206
208
|
- lib/instana/activators/dalli.rb
|
207
209
|
- lib/instana/activators/excon.rb
|
@@ -240,6 +242,7 @@ files:
|
|
240
242
|
- lib/instana/instrumentation/action_controller.rb
|
241
243
|
- lib/instana/instrumentation/action_view.rb
|
242
244
|
- lib/instana/instrumentation/active_record.rb
|
245
|
+
- lib/instana/instrumentation/aws_sdk_dynamodb.rb
|
243
246
|
- lib/instana/instrumentation/dalli.rb
|
244
247
|
- lib/instana/instrumentation/excon.rb
|
245
248
|
- lib/instana/instrumentation/graphql.rb
|
@@ -276,6 +279,7 @@ files:
|
|
276
279
|
- test/frameworks/roda_test.rb
|
277
280
|
- test/frameworks/sinatra_test.rb
|
278
281
|
- test/instana_test.rb
|
282
|
+
- test/instrumentation/aws_test.rb
|
279
283
|
- test/instrumentation/dalli_test.rb
|
280
284
|
- test/instrumentation/excon_test.rb
|
281
285
|
- test/instrumentation/graphql_test.rb
|
@@ -367,6 +371,7 @@ test_files:
|
|
367
371
|
- test/instrumentation/rails_action_cable_test.rb
|
368
372
|
- test/instrumentation/excon_test.rb
|
369
373
|
- test/instrumentation/grpc_test.rb
|
374
|
+
- test/instrumentation/aws_test.rb
|
370
375
|
- test/support/helpers.rb
|
371
376
|
- test/support/apps/sidekiq/boot.rb
|
372
377
|
- test/support/apps/sidekiq/jobs/sidekiq_job_2.rb
|