signalfx-tracing 1.4.0 → 1.5.1

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
  SHA256:
3
- metadata.gz: a3ac0a01141d6701e7d3017525cdcc710ec1b2115a19f671d61ed10f06766a09
4
- data.tar.gz: 839316022dd7d73149f8e2d31b95761872e58e8ea2e158de5784cd708990fbab
3
+ metadata.gz: e746c7d7bd14f60dd0f45b263b38e05e4f4e591b221ad877d047c38aaf4ec8bf
4
+ data.tar.gz: 7916da5154ead8d2cd37325bfa1bf9ed4f254704919d9802fb883a5783a0aeb9
5
5
  SHA512:
6
- metadata.gz: b8408b6e53193f91c41a76d115c3695f3bce83e917362804cd987b60cbeb5d66aa592f6709f842e8aaf874c2070443e8fc33340723f13093df7e35c997b74bf1
7
- data.tar.gz: a2e6b995a3d30c97b786a3d923bca036175cd2458f0a66dfe5bc1ced94b13488660948b024e492f50320ca88cfd467acf0acd10807976bf6cda8bc437d7a7b34
6
+ metadata.gz: 8e82266212716e99449a73c3d11a8bbee4229c213b95d3be3cea1e96e562ea97969f807f95ebfec0c5e12fae2155ad9b7b8a6960eee7a6a7675e51979d8554f9
7
+ data.tar.gz: 26cd1d84fb7171603390a5f569122d7a91919e5c53b44041a358d651c685ae428d538e81afc6af780bec5024320dae394b0e8d2790e8ea4523077fdc8d8089c0
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ /vendor/
1
2
  *.lock
2
3
  *.gem
3
4
  .idea
data/README.md CHANGED
@@ -34,7 +34,7 @@ Here are the requirements and supported software for the library.
34
34
  | [Mysql2](#mysql2) | mysql2-instrumentation | >= 0.4.0 |
35
35
  | [Net::HTTP](#nethttp) | nethttp-instrumentation | Ruby >= 2.0 |
36
36
  | [Pg](#pg) | pg-instrumentation | >= 0.18.0 |
37
- | [Rack](#rack) | rack-tracer | >= 0.1 |
37
+ | [Rack](#rack) | sfx-rack-tracer | >= 0.10.0 |
38
38
  | [Rails](#rails) | rails-instrumentation | >= 3.0.0 |
39
39
  | [Redis](#redis) | redis-instrumentation | >= 4.0.0 |
40
40
  | [RestClient](#restclient) | restclient-instrumentation | >= 1.5.0 |
@@ -44,7 +44,7 @@ Here are the requirements and supported software for the library.
44
44
 
45
45
  Instrumentation for routes using Puma or Passenger is provided through
46
46
  Rack. If you use a framework that builds on top of Rack, such as Rails or
47
- Sinatra, install the `rack-tracer` instrumentation with your dependency manager
47
+ Sinatra, install the `sfx-rack-tracer` instrumentation with your dependency manager
48
48
  or with the bootstrap utility. In these cases, the routes through the web
49
49
  server are automatically traced.
50
50
 
@@ -369,7 +369,7 @@ end
369
369
  ```
370
370
  ### Rack
371
371
 
372
- Rack spans are created using the `rack-tracer` gem. This is enabled
372
+ Rack spans are created using the `sfx-rack-tracer` gem. This is enabled
373
373
  automatically for other frameworks that are built on top of Rack, but it can
374
374
  also be separately enabled.
375
375
 
@@ -394,7 +394,7 @@ use Rack::Tracer
394
394
  ### Rails
395
395
 
396
396
  Rails applications can be traced using the notifications provided by ActiveSupport.
397
- It will use `rack-tracer` to trace by requests.
397
+ It will use `sfx-rack-tracer` to trace by requests.
398
398
 
399
399
  The forked source for this instrumentation is located
400
400
  [here](https://github.com/signalfx/ruby-rails-instrumentation).
@@ -541,7 +541,7 @@ Arguments:
541
541
  ### Sinatra
542
542
 
543
543
  Sinatra instrumentation traces requests and template rendering. The instrumenter
544
- registers a Sinatra extension that uses `rack-tracer` to trace requests and
544
+ registers a Sinatra extension that uses `sfx-rack-tracer` to trace requests and
545
545
  monkey-patches to trace view rendering. Rack instrumentation is automatically
546
546
  enabled when using Sinatra instrumentation.
547
547
 
@@ -12,8 +12,8 @@ instrumentations = {
12
12
  "mysql2" => ["mysql2-instrumentation", "~> 0.2.1"],
13
13
  "nethttp" => ["nethttp-instrumentation", "~> 0.1.2"],
14
14
  "pg" => ["pg-instrumentation", "~> 0.1.0"],
15
- "rack" => ["rack-tracer", { git: 'git://github.com/signalfx/ruby-rack-tracer.git', branch: 'sfx_release' }],
16
- "rails" => ["rails-instrumentation", "~> 0.1.3"],
15
+ "rack" => ["sfx-rack-tracer", "~> 0.10.0"],
16
+ "rails" => ["rails-instrumentation", "~> 0.1.5"],
17
17
  "redis" => ["redis-instrumentation", "~> 0.2.0"],
18
18
  "restclient" => ["restclient-instrumentation", "~> 0.1.1"],
19
19
  "sequel" => ["sequel-instrumentation", "~> 0.1.0"],
@@ -5,7 +5,7 @@ group :instrumentations do
5
5
  gem 'mysql2-instrumentation', '~> 0.2.1'
6
6
  gem 'nethttp-instrumentation', '~> 0.1.2'
7
7
  gem 'pg-instrumentation', '~> 0.1.0'
8
- gem 'rack-tracer', git: 'git://github.com/signalfx/ruby-rack-tracer.git', branch: 'sfx_release'
8
+ gem 'sfx-rack-tracer', '0.10.0'
9
9
  gem 'rails-instrumentation', '0.1.3'
10
10
  gem 'redis-instrumentation', '~> 0.2.0'
11
11
  gem 'restclient-instrumentation', '~> 0.1.1'
@@ -2,8 +2,11 @@ require 'jaeger/client'
2
2
  require 'signalfx/tracing/http_sender'
3
3
  require 'signalfx/tracing/register'
4
4
  require 'signalfx/tracing/compat'
5
+ require 'signalfx/tracing/client'
5
6
  require 'signalfx/tracing/sfx_logger'
6
7
  require 'signalfx/tracing/tags'
8
+ require 'signalfx/tracing/tracer'
9
+ require 'signalfx/tracing/span'
7
10
  require 'thread'
8
11
 
9
12
  module SignalFx
@@ -75,7 +78,7 @@ module SignalFx
75
78
  OpenTracing::FORMAT_TEXT_MAP => [Jaeger::Client::Extractors::B3TextMapCodec]
76
79
  }
77
80
 
78
- @tracer = Jaeger::Client.build(
81
+ @tracer = SignalFx::Tracing::Client.build(
79
82
  service_name: service_name,
80
83
  reporter: @reporter,
81
84
  injectors: injectors,
@@ -0,0 +1,38 @@
1
+ module SignalFx
2
+ module Tracing
3
+ module Client
4
+ include ::Jaeger::Client
5
+
6
+ def self.build(host: '127.0.0.1',
7
+ port: 6831,
8
+ service_name:,
9
+ flush_interval: DEFAULT_FLUSH_INTERVAL,
10
+ sampler: Samplers::Const.new(true),
11
+ logger: Logger.new(STDOUT),
12
+ sender: nil,
13
+ reporter: nil,
14
+ injectors: {},
15
+ extractors: {},
16
+ tags: {})
17
+ encoder = Encoders::ThriftEncoder.new(service_name: service_name, tags: tags)
18
+
19
+ if sender
20
+ warn '[DEPRECATION] Passing `sender` directly to Jaeger::Client.build is deprecated.' \
21
+ 'Please use `reporter` instead.'
22
+ end
23
+
24
+ reporter ||= Reporters::RemoteReporter.new(
25
+ sender: sender || UdpSender.new(host: host, port: port, encoder: encoder, logger: logger),
26
+ flush_interval: flush_interval
27
+ )
28
+
29
+ Tracer.new(
30
+ reporter: reporter,
31
+ sampler: sampler,
32
+ injectors: Injectors.prepare(injectors),
33
+ extractors: Extractors.prepare(extractors)
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
@@ -31,9 +31,9 @@ module SignalFx
31
31
  ::Faraday::Connection.module_eval do
32
32
  alias_method :initialize_original, :initialize
33
33
 
34
- def initialize(url = nil, options = nil)
34
+ def initialize(url = nil, options = nil, &block)
35
35
  # initialize the connection as usual
36
- initialize_original(url, options)
36
+ initialize_original(url, options, &block)
37
37
 
38
38
  # before we let go, add the Faraday tracer to the beginning of the stack
39
39
  @builder.insert(0, ::Faraday::Tracer)
@@ -0,0 +1,21 @@
1
+ require 'jaeger/span'
2
+
3
+ module SignalFx
4
+ module Tracing
5
+ module Span
6
+ def set_error(error)
7
+ set_tag('error', true)
8
+ log_kv(
9
+ event: 'error',
10
+ :'error.kind' => error.class.to_s,
11
+ :'error.object' => error,
12
+ message: error.message,
13
+ stack: error.backtrace.join("\n")
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+ Jaeger::Span.class_eval { include SignalFx::Tracing::Span }
@@ -1,14 +1,22 @@
1
+ require 'jaeger/tracer'
1
2
 
2
3
  # The default jaeger tracer doesn't expose @reporter, and attr_accessor can't
3
4
  # be added after the fact in a child class. So this just adds an old-fashioned
4
5
  # setter for @reporter.
6
+ # This also adds the set_error method that can be used to add an exception to
7
+ # the currently active span.
5
8
 
6
9
  module SignalFx
7
10
  module Tracing
8
- class Tracer < ::Jaeger::Client::Tracer
11
+ class Tracer < ::Jaeger::Tracer
9
12
  def set_reporter(reporter)
10
13
  @reporter = reporter
11
14
  end
15
+
16
+ def set_error(error)
17
+ span = active_span
18
+ span.set_error(error) if span
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -1,5 +1,5 @@
1
1
  module Signalfx
2
2
  module Tracing
3
- VERSION = "1.4.0"
3
+ VERSION = "1.5.1"
4
4
  end
5
5
  end
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
23
+ spec.add_development_dependency "bundler", "~> 2.1"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "test-unit"
25
26
 
26
27
  # TODO pin versions once consistent across all dependencies
27
28
  spec.add_dependency "opentracing", "> 0.3.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signalfx-tracing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SignalFx, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-08 00:00:00.000000000 Z
11
+ date: 2020-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: opentracing
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -96,6 +110,7 @@ files:
96
110
  - bin/sfx-rb-trace-bootstrap
97
111
  - gem.deps.rb
98
112
  - lib/signalfx/tracing.rb
113
+ - lib/signalfx/tracing/client.rb
99
114
  - lib/signalfx/tracing/compat.rb
100
115
  - lib/signalfx/tracing/compat/phusion_passenger.rb
101
116
  - lib/signalfx/tracing/http_sender.rb
@@ -118,6 +133,7 @@ files:
118
133
  - lib/signalfx/tracing/register.rb
119
134
  - lib/signalfx/tracing/reporter/auto_reviving_async_reporter.rb
120
135
  - lib/signalfx/tracing/sfx_logger.rb
136
+ - lib/signalfx/tracing/span.rb
121
137
  - lib/signalfx/tracing/tags.rb
122
138
  - lib/signalfx/tracing/tracer.rb
123
139
  - lib/signalfx/tracing/version.rb
@@ -141,8 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
157
  - !ruby/object:Gem::Version
142
158
  version: '0'
143
159
  requirements: []
144
- rubyforge_project:
145
- rubygems_version: 2.7.6.2
160
+ rubygems_version: 3.1.2
146
161
  signing_key:
147
162
  specification_version: 4
148
163
  summary: Auto-instrumentation framework for Ruby