elastic-apm 3.0.0 → 3.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 +4 -4
- data/.ci/Jenkinsfile +4 -1
- data/CHANGELOG.asciidoc +497 -0
- data/CHANGELOG.md +1 -359
- data/Rakefile +2 -2
- data/docs/advanced.asciidoc +0 -2
- data/docs/api.asciidoc +12 -1
- data/docs/configuration.asciidoc +15 -4
- data/docs/custom-instrumentation.asciidoc +2 -2
- data/docs/debugging.asciidoc +1 -1
- data/docs/getting-started-rack.asciidoc +4 -1
- data/docs/getting-started-rails.asciidoc +2 -2
- data/docs/index.asciidoc +8 -9
- data/docs/introduction.asciidoc +17 -15
- data/docs/opentracing.asciidoc +13 -13
- data/docs/release-notes.asciidoc +11 -1
- data/docs/set-up.asciidoc +16 -0
- data/docs/supported-technologies.asciidoc +2 -4
- data/lib/elastic_apm.rb +2 -2
- data/lib/elastic_apm/agent.rb +4 -4
- data/lib/elastic_apm/central_config.rb +7 -3
- data/lib/elastic_apm/config.rb +2 -2
- data/lib/elastic_apm/config/options.rb +6 -0
- data/lib/elastic_apm/context.rb +15 -1
- data/lib/elastic_apm/instrumenter.rb +8 -7
- data/lib/elastic_apm/normalizers.rb +0 -9
- data/lib/elastic_apm/normalizers/rails.rb +10 -0
- data/lib/elastic_apm/normalizers/{action_controller.rb → rails/action_controller.rb} +0 -0
- data/lib/elastic_apm/normalizers/{action_mailer.rb → rails/action_mailer.rb} +0 -0
- data/lib/elastic_apm/normalizers/{action_view.rb → rails/action_view.rb} +0 -0
- data/lib/elastic_apm/normalizers/{active_record.rb → rails/active_record.rb} +0 -0
- data/lib/elastic_apm/rails.rb +1 -0
- data/lib/elastic_apm/sinatra.rb +36 -0
- data/lib/elastic_apm/transaction.rb +13 -6
- data/lib/elastic_apm/transport/serializers/context_serializer.rb +13 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +10 -6
@@ -47,7 +47,7 @@ module ElasticAPM
|
|
47
47
|
@current = Current.new
|
48
48
|
end
|
49
49
|
|
50
|
-
attr_reader :
|
50
|
+
attr_reader :stacktrace_builder, :enqueue
|
51
51
|
|
52
52
|
def start
|
53
53
|
debug 'Starting instrumenter'
|
@@ -82,6 +82,7 @@ module ElasticAPM
|
|
82
82
|
def start_transaction(
|
83
83
|
name = nil,
|
84
84
|
type = nil,
|
85
|
+
config:,
|
85
86
|
context: nil,
|
86
87
|
trace_context: nil
|
87
88
|
)
|
@@ -92,7 +93,7 @@ module ElasticAPM
|
|
92
93
|
"Transactions may not be nested.\nAlready inside #{transaction}"
|
93
94
|
end
|
94
95
|
|
95
|
-
sampled = trace_context ? trace_context.recorded? : random_sample?
|
96
|
+
sampled = trace_context ? trace_context.recorded? : random_sample?(config)
|
96
97
|
|
97
98
|
transaction =
|
98
99
|
Transaction.new(
|
@@ -101,7 +102,7 @@ module ElasticAPM
|
|
101
102
|
context: context,
|
102
103
|
trace_context: trace_context,
|
103
104
|
sampled: sampled,
|
104
|
-
|
105
|
+
config: config
|
105
106
|
)
|
106
107
|
|
107
108
|
transaction.start
|
@@ -149,7 +150,7 @@ module ElasticAPM
|
|
149
150
|
|
150
151
|
transaction.inc_started_spans!
|
151
152
|
|
152
|
-
if transaction.max_spans_reached?
|
153
|
+
if transaction.max_spans_reached?
|
153
154
|
transaction.inc_dropped_spans!
|
154
155
|
return
|
155
156
|
end
|
@@ -167,7 +168,7 @@ module ElasticAPM
|
|
167
168
|
stacktrace_builder: stacktrace_builder
|
168
169
|
)
|
169
170
|
|
170
|
-
if backtrace && config.span_frames_min_duration?
|
171
|
+
if backtrace && transaction.config.span_frames_min_duration?
|
171
172
|
span.original_backtrace = backtrace
|
172
173
|
end
|
173
174
|
|
@@ -205,7 +206,7 @@ module ElasticAPM
|
|
205
206
|
|
206
207
|
def set_user(user)
|
207
208
|
return unless current_transaction
|
208
|
-
current_transaction.
|
209
|
+
current_transaction.set_user(user)
|
209
210
|
end
|
210
211
|
|
211
212
|
def inspect
|
@@ -216,7 +217,7 @@ module ElasticAPM
|
|
216
217
|
|
217
218
|
private
|
218
219
|
|
219
|
-
def random_sample?
|
220
|
+
def random_sample?(config)
|
220
221
|
rand <= config.transaction_sample_rate
|
221
222
|
end
|
222
223
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/elastic_apm/rails.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
# Module for starting the ElasticAPM agent and hooking into Sinatra.
|
5
|
+
module Sinatra
|
6
|
+
extend self
|
7
|
+
# Start the ElasticAPM agent and hook into Sinatra.
|
8
|
+
#
|
9
|
+
# @param app [Sinatra::Base] A Sinatra app.
|
10
|
+
# @param config [Config, Hash] An instance of Config or a Hash config.
|
11
|
+
# @return [true, nil] true if the agent was started, nil otherwise.
|
12
|
+
def start(app, config)
|
13
|
+
config = Config.new(config) unless config.is_a?(Config)
|
14
|
+
configure_app(app, config)
|
15
|
+
|
16
|
+
ElasticAPM.start(config)
|
17
|
+
ElasticAPM.running?
|
18
|
+
rescue StandardError => e
|
19
|
+
config.logger.error format('Failed to start: %s', e.message)
|
20
|
+
config.logger.debug "Backtrace:\n" + e.backtrace.join("\n")
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def configure_app(app, config)
|
26
|
+
config.service_name ||= format_name(app.to_s)
|
27
|
+
config.framework_name ||= 'Sinatra'
|
28
|
+
config.framework_version ||= ::Sinatra::VERSION
|
29
|
+
config.__root_path ||= Dir.pwd
|
30
|
+
end
|
31
|
+
|
32
|
+
def format_name(str)
|
33
|
+
str && str.gsub('::', '_')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -13,22 +13,25 @@ module ElasticAPM
|
|
13
13
|
|
14
14
|
DEFAULT_TYPE = 'custom'
|
15
15
|
|
16
|
-
# rubocop:disable Metrics/ParameterLists
|
16
|
+
# rubocop:disable Metrics/ParameterLists, Metrics/MethodLength
|
17
17
|
def initialize(
|
18
18
|
name = nil,
|
19
19
|
type = nil,
|
20
20
|
sampled: true,
|
21
21
|
context: nil,
|
22
|
-
|
22
|
+
config:,
|
23
23
|
trace_context: nil
|
24
24
|
)
|
25
25
|
@name = name
|
26
26
|
@type = type || DEFAULT_TYPE
|
27
|
+
@config = config
|
27
28
|
|
28
29
|
@sampled = sampled
|
29
30
|
|
30
31
|
@context = context || Context.new # TODO: Lazy generate this?
|
31
|
-
|
32
|
+
if config.default_labels
|
33
|
+
Util.reverse_merge!(@context.labels, config.default_labels)
|
34
|
+
end
|
32
35
|
|
33
36
|
@trace_context = trace_context || TraceContext.new(recorded: sampled)
|
34
37
|
|
@@ -37,12 +40,12 @@ module ElasticAPM
|
|
37
40
|
|
38
41
|
@notifications = [] # for AS::Notifications
|
39
42
|
end
|
40
|
-
# rubocop:enable Metrics/ParameterLists
|
43
|
+
# rubocop:enable Metrics/ParameterLists, Metrics/MethodLength
|
41
44
|
|
42
45
|
attr_accessor :name, :type, :result
|
43
46
|
|
44
47
|
attr_reader :context, :duration, :started_spans, :dropped_spans,
|
45
|
-
:timestamp, :trace_context, :notifications
|
48
|
+
:timestamp, :trace_context, :notifications, :config
|
46
49
|
|
47
50
|
def sampled?
|
48
51
|
@sampled
|
@@ -82,7 +85,7 @@ module ElasticAPM
|
|
82
85
|
@dropped_spans += 1
|
83
86
|
end
|
84
87
|
|
85
|
-
def max_spans_reached?
|
88
|
+
def max_spans_reached?
|
86
89
|
started_spans > config.transaction_max_spans
|
87
90
|
end
|
88
91
|
|
@@ -92,6 +95,10 @@ module ElasticAPM
|
|
92
95
|
context.response = Context::Response.new(*args)
|
93
96
|
end
|
94
97
|
|
98
|
+
def set_user(user)
|
99
|
+
context.user = Context::User.infer(config, user)
|
100
|
+
end
|
101
|
+
|
95
102
|
def inspect
|
96
103
|
"<ElasticAPM::Transaction id:#{id}" \
|
97
104
|
" name:#{name.inspect} type:#{type.inspect}>"
|
@@ -13,7 +13,8 @@ module ElasticAPM
|
|
13
13
|
tags: mixed_object(context.labels),
|
14
14
|
request: build_request(context.request),
|
15
15
|
response: build_response(context.response),
|
16
|
-
user: build_user(context.user)
|
16
|
+
user: build_user(context.user),
|
17
|
+
service: build_service(context.service)
|
17
18
|
}
|
18
19
|
end
|
19
20
|
|
@@ -79,6 +80,17 @@ module ElasticAPM
|
|
79
80
|
hash: keyword_field(url.hash)
|
80
81
|
}
|
81
82
|
end
|
83
|
+
|
84
|
+
def build_service(service)
|
85
|
+
return unless service
|
86
|
+
|
87
|
+
{
|
88
|
+
framework: {
|
89
|
+
name: keyword_field(service.framework.name),
|
90
|
+
version: keyword_field(service.framework.version)
|
91
|
+
}
|
92
|
+
}
|
93
|
+
end
|
82
94
|
end
|
83
95
|
end
|
84
96
|
end
|
data/lib/elastic_apm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikkel Malmberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- ".pre-commit-config.yaml"
|
66
66
|
- ".rspec"
|
67
67
|
- ".rubocop.yml"
|
68
|
+
- CHANGELOG.asciidoc
|
68
69
|
- CHANGELOG.md
|
69
70
|
- CODE_OF_CONDUCT.md
|
70
71
|
- CONTRIBUTING.md
|
@@ -97,6 +98,7 @@ files:
|
|
97
98
|
- docs/metrics.asciidoc
|
98
99
|
- docs/opentracing.asciidoc
|
99
100
|
- docs/release-notes.asciidoc
|
101
|
+
- docs/set-up.asciidoc
|
100
102
|
- docs/supported-technologies.asciidoc
|
101
103
|
- elastic-apm.gemspec
|
102
104
|
- lib/elastic-apm.rb
|
@@ -136,13 +138,15 @@ files:
|
|
136
138
|
- lib/elastic_apm/middleware.rb
|
137
139
|
- lib/elastic_apm/naively_hashable.rb
|
138
140
|
- lib/elastic_apm/normalizers.rb
|
139
|
-
- lib/elastic_apm/normalizers/
|
140
|
-
- lib/elastic_apm/normalizers/
|
141
|
-
- lib/elastic_apm/normalizers/
|
142
|
-
- lib/elastic_apm/normalizers/
|
141
|
+
- lib/elastic_apm/normalizers/rails.rb
|
142
|
+
- lib/elastic_apm/normalizers/rails/action_controller.rb
|
143
|
+
- lib/elastic_apm/normalizers/rails/action_mailer.rb
|
144
|
+
- lib/elastic_apm/normalizers/rails/action_view.rb
|
145
|
+
- lib/elastic_apm/normalizers/rails/active_record.rb
|
143
146
|
- lib/elastic_apm/opentracing.rb
|
144
147
|
- lib/elastic_apm/rails.rb
|
145
148
|
- lib/elastic_apm/railtie.rb
|
149
|
+
- lib/elastic_apm/sinatra.rb
|
146
150
|
- lib/elastic_apm/span.rb
|
147
151
|
- lib/elastic_apm/span/context.rb
|
148
152
|
- lib/elastic_apm/span_helpers.rb
|