oneapm_rpm 1.3.6 → 1.3.7.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/one_apm/agent/agent/start_worker_thread.rb +8 -8
- data/lib/one_apm/agent/cross_app/cross_app_monitor.rb +2 -2
- data/lib/one_apm/agent/cross_app/cross_app_tracing.rb +2 -2
- data/lib/one_apm/agent/database.rb +17 -17
- data/lib/one_apm/agent/database/obfuscation_helpers.rb +13 -13
- data/lib/one_apm/agent/database/obfuscator.rb +5 -5
- data/lib/one_apm/agent/database/postgres_explain_obfuscator.rb +4 -4
- data/lib/one_apm/agent/datastore/metric_helper.rb +12 -12
- data/lib/one_apm/agent/datastore/mongo/command_formatter.rb +6 -6
- data/lib/one_apm/agent/datastore/mongo/metric_translator.rb +6 -6
- data/lib/one_apm/agent/datastore/mongo/obfuscator.rb +2 -2
- data/lib/one_apm/agent/datastore/mongo/statement_formatter.rb +4 -4
- data/lib/one_apm/agent/javascript_instrumentor.rb +22 -22
- data/lib/one_apm/agent/synthetics_monitor.rb +7 -7
- data/lib/one_apm/agent/threading/thread_profile.rb +2 -2
- data/lib/one_apm/collector/collector/http_connection.rb +4 -4
- data/lib/one_apm/collector/collector_service.rb +1 -1
- data/lib/one_apm/collector/commands/thread_profiler_session.rb +4 -4
- data/lib/one_apm/collector/containers/agent_command_router.rb +4 -4
- data/lib/one_apm/collector/containers/custom_event_aggregator.rb +10 -10
- data/lib/one_apm/collector/containers/error_collector.rb +4 -4
- data/lib/one_apm/collector/containers/sql_sampler.rb +2 -2
- data/lib/one_apm/collector/containers/transaction_event_aggregator.rb +36 -36
- data/lib/one_apm/collector/containers/transaction_sampler.rb +4 -4
- data/lib/one_apm/collector/containers/utilization_data.rb +1 -1
- data/lib/one_apm/collector/samplers/delayed_job_sampler.rb +7 -7
- data/lib/one_apm/collector/samplers/vm_sampler.rb +18 -18
- data/lib/one_apm/collector/stats_engine/gc_profiler.rb +6 -6
- data/lib/one_apm/collector/stats_engine/metric_stats.rb +1 -1
- data/lib/one_apm/collector/support/proc_poller.rb +2 -2
- data/lib/one_apm/configuration.rb +2 -2
- data/lib/one_apm/configuration/default_source.rb +2 -2
- data/lib/one_apm/configuration/environment_source.rb +5 -5
- data/lib/one_apm/configuration/high_security_source.rb +7 -7
- data/lib/one_apm/errors/noticed_error.rb +2 -2
- data/lib/one_apm/inst/dispatcher/puma.rb +7 -4
- data/lib/one_apm/inst/framework/grape.rb +9 -9
- data/lib/one_apm/inst/framework/sinatra/transaction_namer.rb +2 -2
- data/lib/one_apm/inst/http_clients/curb.rb +2 -2
- data/lib/one_apm/inst/http_clients/excon.rb +7 -7
- data/lib/one_apm/inst/http_clients/httpclient.rb +2 -2
- data/lib/one_apm/inst/http_clients/typhoeus.rb +2 -2
- data/lib/one_apm/inst/nosql/memcache.rb +5 -5
- data/lib/one_apm/inst/nosql/mongo2.rb +8 -8
- data/lib/one_apm/inst/orm/active_record.rb +2 -2
- data/lib/one_apm/inst/rails3/action_controller.rb +1 -1
- data/lib/one_apm/inst/rails4/action_view_subscriber.rb +2 -2
- data/lib/one_apm/inst/rails4/active_record_subscriber.rb +3 -3
- data/lib/one_apm/inst/support/queue_time.rb +14 -14
- data/lib/one_apm/logger/agent_logger.rb +4 -4
- data/lib/one_apm/metrics/metric_spec.rb +10 -10
- data/lib/one_apm/rack/browser_monitoring.rb +135 -144
- data/lib/one_apm/rack/developer_mode.rb +22 -33
- data/lib/one_apm/rack/developer_mode/helper.rb +1 -1
- data/lib/one_apm/rack/middleware_base.rb +2 -0
- data/lib/one_apm/rack/middleware_helper.rb +21 -0
- data/lib/one_apm/rack/middleware_hooks.rb +10 -8
- data/lib/one_apm/rack/middleware_tracing.rb +47 -44
- data/lib/one_apm/rack/middleware_wrapper.rb +63 -57
- data/lib/one_apm/support/backtrace/backtrace_node.rb +4 -4
- data/lib/one_apm/support/backtrace/backtrace_service.rb +7 -7
- data/lib/one_apm/support/collection_helper.rb +4 -4
- data/lib/one_apm/support/event_buffer/synthetics_event_buffer.rb +2 -2
- data/lib/one_apm/support/json_marshaller.rb +2 -2
- data/lib/one_apm/support/method_tracer.rb +2 -2
- data/lib/one_apm/support/method_tracer/helpers.rb +2 -2
- data/lib/one_apm/support/obfuscator.rb +5 -5
- data/lib/one_apm/support/rules_engine.rb +2 -2
- data/lib/one_apm/support/rules_engine/replacement_rule.rb +4 -4
- data/lib/one_apm/support/rules_engine/segment_terms_rule.rb +8 -8
- data/lib/one_apm/support/supported_versions.rb +9 -13
- data/lib/one_apm/support/vm/rubinius_vm.rb +1 -1
- data/lib/one_apm/transaction.rb +8 -8
- data/lib/one_apm/transaction/class_methods.rb +8 -8
- data/lib/one_apm/transaction/instance_helpers.rb +1 -1
- data/lib/one_apm/transaction/metric_constants.rb +27 -27
- data/lib/one_apm/transaction/sample_buffer/developer_mode_sample_buffer.rb +3 -3
- data/lib/one_apm/transaction/sample_buffer/force_persist_sample_buffer.rb +2 -2
- data/lib/one_apm/transaction/sample_buffer/slowest_sample_buffer.rb +2 -2
- data/lib/one_apm/transaction/sample_buffer/transaction_sample_buffer.rb +3 -3
- data/lib/one_apm/transaction/segment.rb +2 -2
- data/lib/one_apm/transaction/transaction_finish_append.rb +3 -3
- data/lib/one_apm/transaction/transaction_jruby_functions.rb +3 -3
- data/lib/one_apm/transaction/transaction_name.rb +3 -3
- data/lib/one_apm/transaction/transaction_namer.rb +7 -7
- data/lib/one_apm/transaction/transaction_sample_builder.rb +3 -3
- data/lib/one_apm/transaction/transaction_summary.rb +4 -4
- data/lib/one_apm/transaction/transaction_timings.rb +1 -1
- data/lib/one_apm/version.rb +3 -2
- metadata +3 -2
@@ -3,8 +3,8 @@
|
|
3
3
|
module OneApm
|
4
4
|
module Agent
|
5
5
|
module Threading
|
6
|
-
|
7
|
-
|
6
|
+
OA_MAX_THREAD_PROFILE_DEPTH = 500
|
7
|
+
OA_UNKNOWN_LINE_NUMBER = -1
|
8
8
|
|
9
9
|
class BacktraceBase
|
10
10
|
attr_reader :children
|
@@ -51,7 +51,7 @@ module OneApm
|
|
51
51
|
|
52
52
|
depth = 0
|
53
53
|
backtrace.reverse_each do |frame|
|
54
|
-
break if depth >=
|
54
|
+
break if depth >= OA_MAX_THREAD_PROFILE_DEPTH
|
55
55
|
|
56
56
|
existing_node = current.find_child(frame)
|
57
57
|
if existing_node
|
@@ -107,7 +107,7 @@ module OneApm
|
|
107
107
|
|
108
108
|
file, method, line = parse_backtrace_frame(@raw_line)
|
109
109
|
|
110
|
-
@as_array << [string(file), string(method), line ? int(line) :
|
110
|
+
@as_array << [string(file), string(method), line ? int(line) : OA_UNKNOWN_LINE_NUMBER]
|
111
111
|
@as_array << int(@runnable_count)
|
112
112
|
@as_array << 0
|
113
113
|
@as_array << child_arrays
|
@@ -4,7 +4,7 @@ module OneApm
|
|
4
4
|
module Agent
|
5
5
|
module Threading
|
6
6
|
class BacktraceService
|
7
|
-
|
7
|
+
OA_ALL_TRANSACTIONS = "**ALL**".freeze
|
8
8
|
|
9
9
|
def self.is_supported?
|
10
10
|
RUBY_VERSION >= "1.9.2"
|
@@ -168,24 +168,24 @@ module OneApm
|
|
168
168
|
|
169
169
|
# This method is expected to be called with @lock held.
|
170
170
|
def should_buffer?(bucket)
|
171
|
-
bucket == :request && @profiles.keys.any? { |k| k !=
|
171
|
+
bucket == :request && @profiles.keys.any? { |k| k != OA_ALL_TRANSACTIONS }
|
172
172
|
end
|
173
173
|
|
174
174
|
# This method is expected to be called with @lock held.
|
175
175
|
def need_backtrace?(bucket)
|
176
176
|
(
|
177
177
|
bucket != :ignore &&
|
178
|
-
(@profiles[
|
178
|
+
(@profiles[OA_ALL_TRANSACTIONS] || should_buffer?(bucket))
|
179
179
|
)
|
180
180
|
end
|
181
181
|
|
182
|
-
|
182
|
+
OA_MAX_BUFFER_LENGTH = 500
|
183
183
|
|
184
184
|
# This method is expected to be called with @lock held.
|
185
185
|
def buffer_backtrace_for_thread(thread, timestamp, backtrace, bucket)
|
186
186
|
if should_buffer?(bucket)
|
187
187
|
@buffer[thread] ||= []
|
188
|
-
if @buffer[thread].length <
|
188
|
+
if @buffer[thread].length < OA_MAX_BUFFER_LENGTH
|
189
189
|
@buffer[thread] << [timestamp, backtrace]
|
190
190
|
else
|
191
191
|
OneApm::Manager.increment_metric('Supportability/XraySessions/DroppedBacktraces')
|
@@ -195,8 +195,8 @@ module OneApm
|
|
195
195
|
|
196
196
|
# This method is expected to be called with @lock held.
|
197
197
|
def aggregate_global_backtrace(backtrace, bucket, thread)
|
198
|
-
if @profiles[
|
199
|
-
@profiles[
|
198
|
+
if @profiles[OA_ALL_TRANSACTIONS]
|
199
|
+
@profiles[OA_ALL_TRANSACTIONS].aggregate(backtrace, bucket, thread)
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
@@ -4,8 +4,8 @@ require 'one_apm/probe'
|
|
4
4
|
|
5
5
|
module OneApm
|
6
6
|
module CollectionHelper
|
7
|
-
|
8
|
-
|
7
|
+
OA_DEFAULT_TRUNCATION_SIZE=16 * 1024
|
8
|
+
OA_DEFAULT_ARRAY_TRUNCATION_SIZE=128
|
9
9
|
# Transform parameter hash into a hash whose values are strictly
|
10
10
|
# strings
|
11
11
|
def normalize_params(params)
|
@@ -25,7 +25,7 @@ module OneApm
|
|
25
25
|
when String
|
26
26
|
truncate(params)
|
27
27
|
when Array
|
28
|
-
params.first(
|
28
|
+
params.first(OA_DEFAULT_ARRAY_TRUNCATION_SIZE).map{|item| normalize_params(item)}
|
29
29
|
else
|
30
30
|
truncate(flatten(params))
|
31
31
|
end
|
@@ -60,7 +60,7 @@ module OneApm
|
|
60
60
|
else "#<#{object.class.to_s}>"
|
61
61
|
end
|
62
62
|
end
|
63
|
-
def truncate(string, len=
|
63
|
+
def truncate(string, len=OA_DEFAULT_TRUNCATION_SIZE)
|
64
64
|
case string
|
65
65
|
when Symbol then string
|
66
66
|
when nil then ""
|
@@ -6,7 +6,7 @@ module OneApm
|
|
6
6
|
module Support
|
7
7
|
class JsonMarshaller < Marshaller
|
8
8
|
|
9
|
-
|
9
|
+
OA_OK_YAJL_VERSION = OneApm::VersionNumber.new("1.2.1")
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
OneApm::Manager.logger.info "Using JSON marshaller (#{OneApm::JSONWrapper.backend_name})"
|
@@ -16,7 +16,7 @@ module OneApm
|
|
16
16
|
def warn_for_yajl
|
17
17
|
if defined?(::Yajl)
|
18
18
|
require 'yajl/version'
|
19
|
-
if OneApm::VersionNumber.new(::Yajl::VERSION) <
|
19
|
+
if OneApm::VersionNumber.new(::Yajl::VERSION) < OA_OK_YAJL_VERSION
|
20
20
|
OneApm::Manager.logger.warn "Detected yajl-ruby version #{::Yajl::VERSION} which can cause segfaults with oneapm_rpm's thread profiling features. We strongly recommend you upgrade to the latest yajl-ruby version available."
|
21
21
|
end
|
22
22
|
end
|
@@ -124,7 +124,7 @@ module OneApm
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
-
|
127
|
+
OA_DEFAULT_SETTINGS = {:push_scope => true, :metric => true, :code_header => "", :code_footer => "" }.freeze
|
128
128
|
|
129
129
|
# Checks the provided options to make sure that they make
|
130
130
|
# sense. Raises an error if the options are incorrect to
|
@@ -135,7 +135,7 @@ module OneApm
|
|
135
135
|
raise TypeError.new("Error adding method tracer to #{method_name}: provided options must be a Hash")
|
136
136
|
end
|
137
137
|
check_for_illegal_keys!(method_name, options)
|
138
|
-
options =
|
138
|
+
options = OA_DEFAULT_SETTINGS.merge(options)
|
139
139
|
check_for_push_scope_and_metric(options)
|
140
140
|
options
|
141
141
|
end
|
@@ -4,7 +4,7 @@ module OneApm
|
|
4
4
|
module Support
|
5
5
|
module MethodTracer
|
6
6
|
module Helpers
|
7
|
-
|
7
|
+
OA_MAX_ALLOWED_METRIC_DURATION = 1_000_000_000 # roughly 31 years
|
8
8
|
|
9
9
|
extend self
|
10
10
|
|
@@ -47,7 +47,7 @@ module OneApm
|
|
47
47
|
duration = t1 - t0
|
48
48
|
exclusive = duration - frame.children_time
|
49
49
|
|
50
|
-
if duration >=
|
50
|
+
if duration >= OA_MAX_ALLOWED_METRIC_DURATION
|
51
51
|
OneApm::Manager.logger.log_once(:warn, "too_huge_metric:#{first_name}",
|
52
52
|
"Ignoring metric #{first_name} with unacceptably large duration: #{duration} s")
|
53
53
|
return
|
@@ -8,13 +8,13 @@ module OneApm
|
|
8
8
|
|
9
9
|
attr_reader :key_bytes
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
OA_EMPTY_KEY_BYTES = [0]
|
12
|
+
OA_PACK_FORMAT = 'm'
|
13
13
|
|
14
14
|
# RUM uses a shortened key, so just trim it up front
|
15
15
|
def initialize(key, length=nil)
|
16
16
|
if key.nil? || key.empty?
|
17
|
-
@key_bytes =
|
17
|
+
@key_bytes = OA_EMPTY_KEY_BYTES
|
18
18
|
else
|
19
19
|
@key_bytes = key.bytes.to_a
|
20
20
|
@key_bytes = @key_bytes.first(length) if length
|
@@ -22,11 +22,11 @@ module OneApm
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def obfuscate(text)
|
25
|
-
[ encode(text) ].pack(
|
25
|
+
[ encode(text) ].pack(OA_PACK_FORMAT).gsub(/\n/, '')
|
26
26
|
end
|
27
27
|
|
28
28
|
def deobfuscate(text)
|
29
|
-
encode(text.unpack(
|
29
|
+
encode(text.unpack(OA_PACK_FORMAT).first )
|
30
30
|
end
|
31
31
|
|
32
32
|
def encode(text)
|
@@ -7,8 +7,8 @@ require 'one_apm/support/rules_engine/segment_terms_rule'
|
|
7
7
|
module OneApm
|
8
8
|
module Support
|
9
9
|
class RulesEngine
|
10
|
-
|
11
|
-
|
10
|
+
OA_SEGMENT_SEPARATOR = '/'.freeze
|
11
|
+
OA_LEADING_SLASH_REGEX = %r{^/}.freeze
|
12
12
|
|
13
13
|
include Enumerable
|
14
14
|
extend Forwardable
|
@@ -36,7 +36,7 @@ module OneApm
|
|
36
36
|
|
37
37
|
def matches?(string)
|
38
38
|
if @each_segment
|
39
|
-
string.split(
|
39
|
+
string.split(OA_SEGMENT_SEPARATOR).any? do |segment|
|
40
40
|
segment.match(@match_expression)
|
41
41
|
end
|
42
42
|
else
|
@@ -61,14 +61,14 @@ module OneApm
|
|
61
61
|
|
62
62
|
def apply_to_each_segment(string)
|
63
63
|
string = string.dup
|
64
|
-
leading_slash = string.slice!(
|
65
|
-
segments = string.split(
|
64
|
+
leading_slash = string.slice!(OA_LEADING_SLASH_REGEX)
|
65
|
+
segments = string.split(OA_SEGMENT_SEPARATOR)
|
66
66
|
|
67
67
|
segments.map! do |segment|
|
68
68
|
apply_replacement(segment)
|
69
69
|
end
|
70
70
|
|
71
|
-
"#{leading_slash}#{segments.join(
|
71
|
+
"#{leading_slash}#{segments.join(OA_SEGMENT_SEPARATOR)}"
|
72
72
|
end
|
73
73
|
|
74
74
|
def <=>(other)
|
@@ -4,9 +4,9 @@ module OneApm
|
|
4
4
|
module Support
|
5
5
|
class RulesEngine
|
6
6
|
class SegmentTermsRule
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
OA_SEGMENT_PLACEHOLDER = '*'.freeze
|
8
|
+
OA_ADJACENT_PLACEHOLDERS_REGEX = %r{((?:^|/)\*)(?:/\*)*}.freeze
|
9
|
+
OA_ADJACENT_PLACEHOLDERS_REPLACEMENT = '\1'.freeze
|
10
10
|
|
11
11
|
attr_reader :prefix, :terms
|
12
12
|
|
@@ -26,18 +26,18 @@ module OneApm
|
|
26
26
|
|
27
27
|
def apply(string)
|
28
28
|
rest = string[@trim_range]
|
29
|
-
leading_slash = rest.slice!(
|
29
|
+
leading_slash = rest.slice!(OA_LEADING_SLASH_REGEX)
|
30
30
|
|
31
|
-
segments = rest.split(
|
32
|
-
segments.map! { |s| @terms.include?(s) ? s :
|
31
|
+
segments = rest.split(OA_SEGMENT_SEPARATOR)
|
32
|
+
segments.map! { |s| @terms.include?(s) ? s : OA_SEGMENT_PLACEHOLDER }
|
33
33
|
transformed_suffix = collapse_adjacent_placeholder_segments(segments)
|
34
34
|
|
35
35
|
"#{@prefix}#{leading_slash}#{transformed_suffix}"
|
36
36
|
end
|
37
37
|
|
38
38
|
def collapse_adjacent_placeholder_segments(segments)
|
39
|
-
joined = segments.join(
|
40
|
-
joined.gsub!(
|
39
|
+
joined = segments.join(OA_SEGMENT_SEPARATOR)
|
40
|
+
joined.gsub!(OA_ADJACENT_PLACEHOLDERS_REGEX, OA_ADJACENT_PLACEHOLDERS_REPLACEMENT)
|
41
41
|
joined
|
42
42
|
end
|
43
43
|
end
|
@@ -2,26 +2,24 @@
|
|
2
2
|
|
3
3
|
module OneApm
|
4
4
|
module Agent
|
5
|
-
|
5
|
+
OA_SUPPORTED_VERSIONS =
|
6
6
|
{
|
7
7
|
# Rubies
|
8
8
|
:mri =>
|
9
9
|
{
|
10
10
|
:type => :ruby,
|
11
11
|
:name => "MRI",
|
12
|
-
:supported => ["1.8.7", "1.9.2", "1.9.3", "2.0.0", "~>
|
12
|
+
:supported => ["1.8.7", "1.9.2", "1.9.3", "2.0.0", "~>2.1.0", "~>2.2.0", "~>2.3.0" ],
|
13
13
|
:deprecated => ["1.8.6"],
|
14
14
|
:url => "https://www.ruby-lang.org",
|
15
15
|
:feed => "https://www.ruby-lang.org/en/feeds/news.rss",
|
16
|
-
:notes => [
|
17
|
-
"1.8.7 includes support for Ruby Enterprise Edition (REE)",
|
18
|
-
"Last supported agent on 1.8.6 was 3.6.8.168"]
|
16
|
+
:notes => ["1.8.7 includes support for Ruby Enterprise Edition (REE)"]
|
19
17
|
},
|
20
18
|
:jruby =>
|
21
19
|
{
|
22
20
|
:type => :ruby,
|
23
21
|
:name => "JRuby",
|
24
|
-
:supported => ["~>
|
22
|
+
:supported => ["~>1.6.0", "~>1.7.0"],
|
25
23
|
:url => "http://jruby.org",
|
26
24
|
:feed => "http://jruby.org/atom.xml"
|
27
25
|
},
|
@@ -29,7 +27,7 @@ module OneApm
|
|
29
27
|
{
|
30
28
|
:type => :ruby,
|
31
29
|
:name => "Rubinius",
|
32
|
-
:supported => ["~>
|
30
|
+
:supported => ["~>2.2.1"],
|
33
31
|
:url => "http://rubini.us",
|
34
32
|
:feed => "http://rubini.us/feed/atom.xml"
|
35
33
|
},
|
@@ -83,11 +81,10 @@ module OneApm
|
|
83
81
|
:rails =>
|
84
82
|
{
|
85
83
|
:type => :web,
|
86
|
-
:supported => ["
|
87
|
-
:deprecated => ["~>2.
|
84
|
+
:supported => ["~3.0.0", "~>3.1.0", "~>3.2.0", "~>4.0.0", "~>4.1.0", "~>4.2.0", "~>5.0.0"],
|
85
|
+
:deprecated => ["~>2.3.0"],
|
88
86
|
:url => "https://rubygems.org/gems/rails",
|
89
|
-
:feed => "https://rubygems.org/gems/rails/versions.atom"
|
90
|
-
:notes => ["Last supported agent for 2.0.x was 3.6.8.168"]
|
87
|
+
:feed => "https://rubygems.org/gems/rails/versions.atom"
|
91
88
|
},
|
92
89
|
:sinatra =>
|
93
90
|
{
|
@@ -126,8 +123,7 @@ module OneApm
|
|
126
123
|
:supported => ["~>2.1.0", "~>2.2.0", "~>2.3.0", "~3.0.0", "~>3.1.0", "~>3.2.0", "~>4.0.0"],
|
127
124
|
:deprecated => ["~>2.0.0"],
|
128
125
|
:url => "https://rubygems.org/gems/activerecord",
|
129
|
-
:feed => "https://rubygems.org/gems/activerecord/versions.atom"
|
130
|
-
:notes => ["Last supported agent for 2.0.x was 3.6.8.168"]
|
126
|
+
:feed => "https://rubygems.org/gems/activerecord/versions.atom"
|
131
127
|
},
|
132
128
|
:datamapper =>
|
133
129
|
{
|
data/lib/one_apm/transaction.rb
CHANGED
@@ -92,21 +92,21 @@ module OneApm
|
|
92
92
|
|
93
93
|
if @has_children
|
94
94
|
name = Transaction.nested_transaction_name(outermost_frame.name)
|
95
|
-
trace_options =
|
95
|
+
trace_options = OA_TRACE_OPTIONS_SCOPED
|
96
96
|
else
|
97
97
|
name = @frozen_name
|
98
|
-
trace_options =
|
98
|
+
trace_options = OA_TRACE_OPTIONS_UNSCOPED
|
99
99
|
end
|
100
100
|
|
101
|
-
trace_options =
|
101
|
+
trace_options = OA_TRACE_IGNORE_OPTIONS if ignore_frame?(outermost_frame.name)
|
102
102
|
|
103
103
|
# These metrics are recorded here instead of in record_summary_metrics
|
104
104
|
# in order to capture the exclusive time associated with the outer-most
|
105
105
|
# TT node.
|
106
106
|
if needs_middleware_summary_metrics?(name)
|
107
|
-
summary_metrics_with_exclusive_time =
|
107
|
+
summary_metrics_with_exclusive_time = OA_MIDDLEWARE_SUMMARY_METRICS
|
108
108
|
else
|
109
|
-
summary_metrics_with_exclusive_time =
|
109
|
+
summary_metrics_with_exclusive_time = OA_EMPTY_SUMMARY_METRICS
|
110
110
|
end
|
111
111
|
|
112
112
|
OneApm::Support::MethodTracer::Helpers.trace_execution_scoped_footer(
|
@@ -194,7 +194,7 @@ module OneApm
|
|
194
194
|
apdex_bucket_global = apdex_bucket(total_duration)
|
195
195
|
apdex_bucket_txn = apdex_bucket(action_duration)
|
196
196
|
|
197
|
-
@metrics.record_unscoped(
|
197
|
+
@metrics.record_unscoped(OA_APDEX_METRIC, apdex_bucket_global, apdex_t)
|
198
198
|
txn_apdex_metric = @frozen_name.gsub(/^[^\/]+\//, 'Apdex/')
|
199
199
|
@metrics.record_unscoped(txn_apdex_metric, apdex_bucket_txn, apdex_t)
|
200
200
|
end
|
@@ -203,8 +203,8 @@ module OneApm
|
|
203
203
|
def record_queue_time
|
204
204
|
value = queue_time
|
205
205
|
if value > 0.0
|
206
|
-
if value < OneApm::Support::MethodTracer::Helpers::
|
207
|
-
@metrics.record_unscoped(
|
206
|
+
if value < OneApm::Support::MethodTracer::Helpers::OA_MAX_ALLOWED_METRIC_DURATION
|
207
|
+
@metrics.record_unscoped(OA_QUEUE_TIME_METRIC, value)
|
208
208
|
else
|
209
209
|
OneApm::Manager.logger.log_once(:warn, :too_high_queue_time, "Not recording unreasonably large queue time of #{value} s")
|
210
210
|
end
|
@@ -30,7 +30,7 @@ module OneApm
|
|
30
30
|
def stop(state, end_time=Time.now)
|
31
31
|
txn = state.current_transaction
|
32
32
|
if txn.nil?
|
33
|
-
OneApm::Manager.logger.error(Transaction::
|
33
|
+
OneApm::Manager.logger.error(Transaction::OA_FAILED_TO_STOP_MESSAGE)
|
34
34
|
return
|
35
35
|
end
|
36
36
|
|
@@ -42,14 +42,14 @@ module OneApm
|
|
42
42
|
else
|
43
43
|
nested_name = nested_transaction_name(nested_frame.name)
|
44
44
|
|
45
|
-
if nested_name.start_with?(Transaction::
|
46
|
-
summary_metrics = Transaction::
|
45
|
+
if nested_name.start_with?(Transaction::OA_MIDDLEWARE_PREFIX)
|
46
|
+
summary_metrics = Transaction::OA_MIDDLEWARE_SUMMARY_METRICS
|
47
47
|
else
|
48
|
-
summary_metrics = Transaction::
|
48
|
+
summary_metrics = Transaction::OA_EMPTY_SUMMARY_METRICS
|
49
49
|
end
|
50
50
|
|
51
|
-
options = Transaction::
|
52
|
-
options = Transaction::
|
51
|
+
options = Transaction::OA_NESTED_TRACE_STOP_OPTIONS
|
52
|
+
options = Transaction::OA_TRACE_IGNORE_OPTIONS if txn.ignore_frame?(nested_name)
|
53
53
|
|
54
54
|
OneApm::Support::MethodTracer::Helpers.trace_execution_scoped_footer(
|
55
55
|
state,
|
@@ -81,8 +81,8 @@ module OneApm
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def nested_transaction_name(name)
|
84
|
-
if name.start_with?(Transaction::
|
85
|
-
"#{Transaction::
|
84
|
+
if name.start_with?(Transaction::OA_WEB_TRANSACTION_PREFIX) || name.start_with?(Transaction::OA_OTHER_TRANSACTION_PREFIX)
|
85
|
+
"#{Transaction::OA_SUBTRANSACTION_PREFIX}#{name}"
|
86
86
|
else
|
87
87
|
name
|
88
88
|
end
|