app_perf_rpm 0.0.9 → 0.1.0

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: 885a1e6e276e46db0483fb90e0609f8da8056cdd
4
- data.tar.gz: d3f66d03b834f3cd9ecdb65962e645b7a8be6a13
3
+ metadata.gz: dd7a40e56d4bc00dea5bbf67099f5862b663deb8
4
+ data.tar.gz: 762bb7394394c6ce50103cb56c88d8f43138d32a
5
5
  SHA512:
6
- metadata.gz: 8909cc4d1fabc5b1ed3e563c3e56fc98fd6c4d58a12ed9d42dc9ea59c1e5c2d47b6a14379ebe0592505a2dd8e251b135fbe12d61e3cd796d0dfd1b46647c9315
7
- data.tar.gz: d9307dc6b1dfe4bd802d42bce75cff3a23c4f50202b272e6df9c6d38d9a27ad74560b443f1070b97718fc6cd70bdd1251bad99a977288f9c2b52b6a87903d7fa
6
+ metadata.gz: 189ce83378fa35221a932dd21af383028c9ecd2e816adcde76731f79e4997010ee0ea551d0885804eedd127a91942ec5c077f338fa6d39e4bf32f0db44d3cf8a
7
+ data.tar.gz: b23c2c35e107c08c813ef5397ed4ec9b51a34ee5d90b17f83bde2b524aaaa3bff6bb6ce63b1997ef8173628e5a1c22c8359c2aaee32bf2691087111579a1d7b1
@@ -32,19 +32,20 @@ module AppPerfRpm
32
32
  self.agent_disabled ||= default_if_blank(ENV["APP_PERF_AGENT_DISABLED"], false)
33
33
  self.ignore_paths ||= /\/assets/
34
34
  self.instrumentation = {
35
- :rack => { :enabled => true, :backtrace => :app, :source => true, :trace_middleware => false },
36
- :active_record => { :enabled => true, :backtrace => :app, :source => true },
37
- :active_record_import => { :enabled => true, :backtrace => :app, :source => true },
38
- :action_view => { :enabled => true, :backtrace => :app, :source => true },
39
- :action_controller => { :enabled => true, :backtrace => :app, :source => true },
40
- :emque_consuming => { :enabled => true, :backtrace => :app, :source => true },
41
- :redis => { :enabled => true, :backtrace => :app, :source => true },
42
- :sequel => { :enabled => true, :backtrace => :app, :source => true },
43
- :sidekiq => { :enabled => true, :backtrace => :app, :source => true },
44
- :sinatra => { :enabled => true, :backtrace => :app, :source => true },
45
- :net_http => { :enabled => true, :backtrace => :app, :source => true },
46
- :typhoeus => { :enabled => true, :backtrace => :app, :source => true },
47
- :faraday => { :enabled => true, :backtrace => :app, :source => true }
35
+ :rack => { :enabled => true, :backtrace => :app, :source => true, :trace_middleware => false },
36
+ :active_record => { :enabled => true, :backtrace => :app, :source => true },
37
+ :active_record_import => { :enabled => true, :backtrace => :app, :source => true },
38
+ :active_model_serializer => { :enabled => true, :backtrace => :app, :source => true },
39
+ :action_view => { :enabled => true, :backtrace => :app, :source => true },
40
+ :action_controller => { :enabled => true, :backtrace => :app, :source => true },
41
+ :emque_consuming => { :enabled => true, :backtrace => :app, :source => true },
42
+ :redis => { :enabled => true, :backtrace => :app, :source => true },
43
+ :sequel => { :enabled => true, :backtrace => :app, :source => true },
44
+ :sidekiq => { :enabled => true, :backtrace => :app, :source => true },
45
+ :sinatra => { :enabled => true, :backtrace => :app, :source => true },
46
+ :net_http => { :enabled => true, :backtrace => :app, :source => true },
47
+ :typhoeus => { :enabled => true, :backtrace => :app, :source => true },
48
+ :faraday => { :enabled => true, :backtrace => :app, :source => true }
48
49
  }
49
50
  end
50
51
  end
@@ -0,0 +1,35 @@
1
+ if ::AppPerfRpm.config.instrumentation[:action_view][:enabled] &&
2
+ defined?(::ActiveModel) &&
3
+ defined?(::ActiveModel::Serializer) &&
4
+ defined?(::ActiveModel::Serializer::CollectionSerializer) &&
5
+ defined?(::ActiveModel::Serializer::ArraySerializer)
6
+ [
7
+ ::ActiveModel::Serializer,
8
+ ::ActiveModel::Serializer::CollectionSerializer,
9
+ ::ActiveModel::Serializer::ArraySerializer
10
+ ].each do |klass|
11
+ klass.class_eval do
12
+ alias :as_json_without_trace :as_json
13
+ def as_json(*args)
14
+ if ::AppPerfRpm::Tracer.tracing?
15
+ span = AppPerfRpm.tracer.start_span("ActiveModel::Serializer", tags: {
16
+ "serializer" => self.class.to_s
17
+ })
18
+ AppPerfRpm::Utils.log_source_and_backtrace(span, :active_model_serializer)
19
+ end
20
+
21
+ as_json_without_trace(*args)
22
+ rescue Exception => e
23
+ if span
24
+ span.set_tag('error', true)
25
+ span.log_error(e)
26
+ end
27
+ raise
28
+ ensure
29
+ span.finish if span
30
+ end
31
+ end
32
+ end
33
+
34
+ AppPerfRpm.logger.info "Initializing activemodel/serializer tracer."
35
+ end
@@ -90,6 +90,7 @@ if ::AppPerfRpm.config.instrumentation[:rack][:enabled]
90
90
  raise
91
91
  ensure
92
92
  span.finish if span
93
+ AppPerfRpm::Tracer.sample_off!
93
94
  end
94
95
 
95
96
  def ignore_path?(path)
@@ -28,6 +28,7 @@ module AppPerfRpm
28
28
  raise
29
29
  ensure
30
30
  span.finish if span
31
+ AppPerfRpm::Tracer.sample_off!
31
32
  end
32
33
 
33
34
  private
@@ -10,7 +10,7 @@ module AppPerfRpm
10
10
  # Since we keep track of the active span, meaning we have entered into
11
11
  # tracing at some point, and we no longer have an active span,
12
12
  # reset tracing.
13
- Thread.current[:sample] = false if !AppPerfRpm.tracer.active_span
13
+ sample_off! if !AppPerfRpm.tracer.active_span
14
14
 
15
15
  # Now determine if we want to trace, either by an incoming
16
16
  # trace or meeting the sample rate.
@@ -18,6 +18,10 @@ module AppPerfRpm
18
18
  Thread.current[:sample]
19
19
  end
20
20
 
21
+ def sample_off!
22
+ Thread.current[:sample] = false
23
+ end
24
+
21
25
  def sampled?
22
26
  !!Thread.current[:sample]
23
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_perf_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Randy Girard
@@ -162,6 +162,7 @@ files:
162
162
  - lib/app_perf_rpm/instrumentation.rb
163
163
  - lib/app_perf_rpm/instruments/action_controller.rb
164
164
  - lib/app_perf_rpm/instruments/action_view.rb
165
+ - lib/app_perf_rpm/instruments/active_model_serializer.rb
165
166
  - lib/app_perf_rpm/instruments/active_record.rb
166
167
  - lib/app_perf_rpm/instruments/active_record/adapters/mysql2.rb
167
168
  - lib/app_perf_rpm/instruments/active_record/adapters/postgresql.rb