app_perf_rpm 0.0.9 → 0.1.0

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: 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