elastic-apm 1.1.0 → 2.0.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.
Potentially problematic release.
This version of elastic-apm might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/.rubocop.yml +7 -1
- data/CHANGELOG.md +45 -0
- data/Gemfile +17 -12
- data/bench/app.rb +1 -2
- data/bench/benchmark.rb +1 -1
- data/bench/stackprof.rb +1 -1
- data/docs/api.asciidoc +115 -76
- data/docs/configuration.asciidoc +232 -167
- data/docs/context.asciidoc +7 -3
- data/docs/custom-instrumentation.asciidoc +17 -28
- data/docs/index.asciidoc +13 -7
- data/docs/supported-technologies.asciidoc +65 -0
- data/elastic-apm.gemspec +3 -2
- data/lib/elastic_apm.rb +272 -121
- data/lib/elastic_apm/agent.rb +56 -107
- data/lib/elastic_apm/config.rb +130 -106
- data/lib/elastic_apm/config/duration.rb +25 -0
- data/lib/elastic_apm/config/size.rb +28 -0
- data/lib/elastic_apm/context_builder.rb +1 -0
- data/lib/elastic_apm/deprecations.rb +19 -0
- data/lib/elastic_apm/error.rb +5 -2
- data/lib/elastic_apm/error/exception.rb +1 -1
- data/lib/elastic_apm/error_builder.rb +5 -0
- data/lib/elastic_apm/instrumenter.rb +121 -53
- data/lib/elastic_apm/internal_error.rb +1 -0
- data/lib/elastic_apm/{log.rb → logging.rb} +16 -11
- data/lib/elastic_apm/metadata.rb +20 -0
- data/lib/elastic_apm/metadata/process_info.rb +26 -0
- data/lib/elastic_apm/metadata/service_info.rb +56 -0
- data/lib/elastic_apm/metadata/system_info.rb +30 -0
- data/lib/elastic_apm/middleware.rb +31 -15
- data/lib/elastic_apm/normalizers/action_controller.rb +1 -1
- data/lib/elastic_apm/normalizers/action_mailer.rb +1 -1
- data/lib/elastic_apm/normalizers/action_view.rb +3 -3
- data/lib/elastic_apm/normalizers/active_record.rb +2 -1
- data/lib/elastic_apm/railtie.rb +1 -1
- data/lib/elastic_apm/span.rb +59 -29
- data/lib/elastic_apm/span/context.rb +30 -4
- data/lib/elastic_apm/span_helpers.rb +1 -1
- data/lib/elastic_apm/spies/delayed_job.rb +7 -7
- data/lib/elastic_apm/spies/elasticsearch.rb +4 -4
- data/lib/elastic_apm/spies/http.rb +38 -0
- data/lib/elastic_apm/spies/mongo.rb +22 -11
- data/lib/elastic_apm/spies/net_http.rb +7 -4
- data/lib/elastic_apm/spies/rake.rb +5 -6
- data/lib/elastic_apm/spies/redis.rb +1 -1
- data/lib/elastic_apm/spies/sequel.rb +9 -7
- data/lib/elastic_apm/spies/sidekiq.rb +5 -5
- data/lib/elastic_apm/spies/tilt.rb +2 -2
- data/lib/elastic_apm/sql_summarizer.rb +3 -3
- data/lib/elastic_apm/stacktrace_builder.rb +6 -6
- data/lib/elastic_apm/subscriber.rb +3 -3
- data/lib/elastic_apm/traceparent.rb +62 -0
- data/lib/elastic_apm/transaction.rb +62 -93
- data/lib/elastic_apm/transport/base.rb +98 -0
- data/lib/elastic_apm/transport/connection.rb +175 -0
- data/lib/elastic_apm/transport/filters.rb +45 -0
- data/lib/elastic_apm/transport/filters/request_body_filter.rb +31 -0
- data/lib/elastic_apm/transport/filters/secrets_filter.rb +59 -0
- data/lib/elastic_apm/transport/serializers.rb +58 -0
- data/lib/elastic_apm/transport/serializers/error_serializer.rb +59 -0
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +30 -0
- data/lib/elastic_apm/transport/serializers/transaction_serializer.rb +33 -0
- data/lib/elastic_apm/transport/worker.rb +73 -0
- data/lib/elastic_apm/util.rb +11 -8
- data/lib/elastic_apm/version.rb +1 -1
- metadata +40 -21
- data/.travis.yml +0 -5
- data/docs/troubleshooting.asciidoc +0 -28
- data/lib/elastic_apm/filters.rb +0 -46
- data/lib/elastic_apm/filters/request_body_filter.rb +0 -33
- data/lib/elastic_apm/filters/secrets_filter.rb +0 -59
- data/lib/elastic_apm/http.rb +0 -139
- data/lib/elastic_apm/process_info.rb +0 -24
- data/lib/elastic_apm/serializers.rb +0 -28
- data/lib/elastic_apm/serializers/errors.rb +0 -61
- data/lib/elastic_apm/serializers/transactions.rb +0 -51
- data/lib/elastic_apm/service_info.rb +0 -54
- data/lib/elastic_apm/system_info.rb +0 -28
- data/lib/elastic_apm/util/dig.rb +0 -31
- data/lib/elastic_apm/util/inspector.rb +0 -61
- data/lib/elastic_apm/worker.rb +0 -106
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'elastic_apm/transport/filters/request_body_filter'
|
4
|
+
require 'elastic_apm/transport/filters/secrets_filter'
|
5
|
+
|
6
|
+
module ElasticAPM
|
7
|
+
module Transport
|
8
|
+
# @api private
|
9
|
+
module Filters
|
10
|
+
def self.new(config)
|
11
|
+
Container.new(config)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @api private
|
15
|
+
class Container
|
16
|
+
def initialize(config)
|
17
|
+
@filters = {
|
18
|
+
request_body: RequestBodyFilter.new(config),
|
19
|
+
secrets: SecretsFilter.new(config)
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def add(key, filter)
|
24
|
+
@filters[key] = filter
|
25
|
+
end
|
26
|
+
|
27
|
+
def remove(key)
|
28
|
+
@filters.delete(key)
|
29
|
+
end
|
30
|
+
|
31
|
+
def apply!(payload)
|
32
|
+
@filters.reduce(payload) do |result, (_key, filter)|
|
33
|
+
result = filter.call(result)
|
34
|
+
break if result.nil?
|
35
|
+
result
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def length
|
40
|
+
@filters.length
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
module Filters
|
6
|
+
# @api private
|
7
|
+
class RequestBodyFilter
|
8
|
+
FILTERED = '[FILTERED]'
|
9
|
+
|
10
|
+
def initialize(config)
|
11
|
+
@config = config
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(payload)
|
15
|
+
strip_body_from payload[:transaction]
|
16
|
+
strip_body_from payload[:error]
|
17
|
+
|
18
|
+
payload
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def strip_body_from(payload)
|
24
|
+
return unless payload
|
25
|
+
return unless (request = payload.dig(:context, :request))
|
26
|
+
request[:body] = FILTERED
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
module Filters
|
6
|
+
# @api private
|
7
|
+
class SecretsFilter
|
8
|
+
FILTERED = '[FILTERED]'
|
9
|
+
|
10
|
+
KEY_FILTERS = [
|
11
|
+
/passw(or)?d/i,
|
12
|
+
/^pw$/,
|
13
|
+
/secret/i,
|
14
|
+
/token/i,
|
15
|
+
/api[-._]?key/i,
|
16
|
+
/session[-._]?id/i
|
17
|
+
].freeze
|
18
|
+
|
19
|
+
VALUE_FILTERS = [
|
20
|
+
# (probably) credit card number
|
21
|
+
/^\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$/
|
22
|
+
].freeze
|
23
|
+
|
24
|
+
def initialize(config)
|
25
|
+
@config = config
|
26
|
+
@key_filters = KEY_FILTERS + config.custom_key_filters
|
27
|
+
end
|
28
|
+
|
29
|
+
def call(payload)
|
30
|
+
strip_from payload[:transaction], :context, :request, :headers
|
31
|
+
strip_from payload[:transaction], :context, :response, :headers
|
32
|
+
strip_from payload[:error], :context, :request, :headers
|
33
|
+
strip_from payload[:error], :context, :response, :headers
|
34
|
+
|
35
|
+
payload
|
36
|
+
end
|
37
|
+
|
38
|
+
def strip_from(event, *path)
|
39
|
+
return unless event
|
40
|
+
return unless (headers = event.dig(*path))
|
41
|
+
|
42
|
+
headers.each do |k, v|
|
43
|
+
if filter_key?(k) || filter_value?(v)
|
44
|
+
headers[k] = FILTERED
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def filter_key?(key)
|
50
|
+
@key_filters.any? { |regex| key.match regex }
|
51
|
+
end
|
52
|
+
|
53
|
+
def filter_value?(value)
|
54
|
+
VALUE_FILTERS.any? { |regex| value.match regex }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module ElasticAPM
|
6
|
+
module Transport
|
7
|
+
# @api private
|
8
|
+
module Serializers
|
9
|
+
# @api private
|
10
|
+
class UnrecognizedResource < InternalError; end
|
11
|
+
|
12
|
+
# @api private
|
13
|
+
class Serializer
|
14
|
+
def initialize(config)
|
15
|
+
@config = config
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def ms(micros)
|
21
|
+
micros.to_f / 1_000
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
class Container
|
27
|
+
def initialize(config)
|
28
|
+
@transaction = Serializers::TransactionSerializer.new(config)
|
29
|
+
@span = Serializers::SpanSerializer.new(config)
|
30
|
+
@error = Serializers::ErrorSerializer.new(config)
|
31
|
+
end
|
32
|
+
|
33
|
+
attr_reader :transaction, :span, :error
|
34
|
+
|
35
|
+
def serialize(resource)
|
36
|
+
case resource
|
37
|
+
when Transaction
|
38
|
+
transaction.build(resource)
|
39
|
+
when Span
|
40
|
+
span.build(resource)
|
41
|
+
when Error
|
42
|
+
error.build(resource)
|
43
|
+
else
|
44
|
+
raise UnrecognizedResource, resource.inspect
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.new(config)
|
50
|
+
Container.new(config)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
require 'elastic_apm/transport/serializers/transaction_serializer'
|
57
|
+
require 'elastic_apm/transport/serializers/span_serializer'
|
58
|
+
require 'elastic_apm/transport/serializers/error_serializer'
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
module Serializers
|
6
|
+
# @api private
|
7
|
+
class ErrorSerializer < Serializer
|
8
|
+
# rubocop:disable Metrics/MethodLength
|
9
|
+
def build(error)
|
10
|
+
base = {
|
11
|
+
id: error.id,
|
12
|
+
transaction_id: error.transaction_id,
|
13
|
+
trace_id: error.trace_id,
|
14
|
+
parent_id: error.parent_id,
|
15
|
+
|
16
|
+
culprit: error.culprit,
|
17
|
+
timestamp: error.timestamp,
|
18
|
+
context: error.context.to_h
|
19
|
+
}
|
20
|
+
|
21
|
+
if (exception = error.exception)
|
22
|
+
base[:exception] = build_exception exception
|
23
|
+
end
|
24
|
+
|
25
|
+
if (log = error.log)
|
26
|
+
base[:log] = build_log log
|
27
|
+
end
|
28
|
+
|
29
|
+
{ error: base }
|
30
|
+
end
|
31
|
+
# rubocop:enable Metrics/MethodLength
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def build_exception(exception)
|
36
|
+
{
|
37
|
+
message: exception.message,
|
38
|
+
type: exception.type,
|
39
|
+
module: exception.module,
|
40
|
+
code: exception.code,
|
41
|
+
attributes: exception.attributes,
|
42
|
+
stacktrace: exception.stacktrace.to_a,
|
43
|
+
handled: exception.handled
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def build_log(log)
|
48
|
+
{
|
49
|
+
message: log.message,
|
50
|
+
level: log.level,
|
51
|
+
logger_name: log.logger_name,
|
52
|
+
param_message: log.param_message,
|
53
|
+
stacktrace: log.stacktrace.to_a
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
module Serializers
|
6
|
+
# @api private
|
7
|
+
class SpanSerializer < Serializer
|
8
|
+
# rubocop:disable Metrics/MethodLength
|
9
|
+
def build(span)
|
10
|
+
{
|
11
|
+
span: {
|
12
|
+
id: span.id,
|
13
|
+
transaction_id: span.transaction_id,
|
14
|
+
parent_id: span.parent_id,
|
15
|
+
name: span.name,
|
16
|
+
type: span.type,
|
17
|
+
start: ms(span.relative_start),
|
18
|
+
duration: ms(span.duration),
|
19
|
+
context: span.context&.to_h,
|
20
|
+
stacktrace: span.stacktrace.to_a,
|
21
|
+
timestamp: span.timestamp,
|
22
|
+
trace_id: span.trace_id
|
23
|
+
}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
# rubocop:enable Metrics/MethodLength
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
module Serializers
|
6
|
+
# @api private
|
7
|
+
class TransactionSerializer < Serializer
|
8
|
+
# rubocop:disable Metrics/MethodLength
|
9
|
+
def build(transaction)
|
10
|
+
{
|
11
|
+
transaction: {
|
12
|
+
id: transaction.id,
|
13
|
+
trace_id: transaction.trace_id,
|
14
|
+
parent_id: transaction.parent_id,
|
15
|
+
name: transaction.name,
|
16
|
+
type: transaction.type,
|
17
|
+
result: transaction.result.to_s,
|
18
|
+
duration: ms(transaction.duration),
|
19
|
+
timestamp: transaction.timestamp,
|
20
|
+
sampled: transaction.sampled?,
|
21
|
+
context: transaction.context.to_h,
|
22
|
+
span_count: {
|
23
|
+
started: transaction.started_spans,
|
24
|
+
dropped: transaction.dropped_spans
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
# rubocop:enable Metrics/MethodLength
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ElasticAPM
|
4
|
+
module Transport
|
5
|
+
# @api private
|
6
|
+
class Worker
|
7
|
+
include Logging
|
8
|
+
|
9
|
+
# @api private
|
10
|
+
class StopMessage; end
|
11
|
+
|
12
|
+
# @api private
|
13
|
+
class FlushMessage; end
|
14
|
+
|
15
|
+
def initialize(
|
16
|
+
config,
|
17
|
+
queue,
|
18
|
+
serializers:,
|
19
|
+
filters:,
|
20
|
+
conn_adapter: Connection
|
21
|
+
)
|
22
|
+
@config = config
|
23
|
+
@queue = queue
|
24
|
+
|
25
|
+
@stopping = false
|
26
|
+
|
27
|
+
@connection = conn_adapter.new(config)
|
28
|
+
@serializers = serializers
|
29
|
+
@filters = filters
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_reader :queue, :filters, :name, :connection, :serializers
|
33
|
+
|
34
|
+
def stop
|
35
|
+
@stopping = true
|
36
|
+
end
|
37
|
+
|
38
|
+
def stopping?
|
39
|
+
@stopping
|
40
|
+
end
|
41
|
+
|
42
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
43
|
+
def work_forever
|
44
|
+
while (msg = queue.pop)
|
45
|
+
case msg
|
46
|
+
when StopMessage
|
47
|
+
stop
|
48
|
+
else
|
49
|
+
process msg
|
50
|
+
end
|
51
|
+
|
52
|
+
next unless stopping?
|
53
|
+
|
54
|
+
debug 'Stopping worker -- %s', self
|
55
|
+
@connection.flush
|
56
|
+
break
|
57
|
+
end
|
58
|
+
rescue Exception => e
|
59
|
+
warn 'Worker died with exception: %s', e.inspect
|
60
|
+
debug e.backtrace.join("\n")
|
61
|
+
end
|
62
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def process(resource)
|
67
|
+
serialized = serializers.serialize(resource)
|
68
|
+
@filters.apply!(serialized)
|
69
|
+
@connection.write(serialized.to_json)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/elastic_apm/util.rb
CHANGED
@@ -7,19 +7,22 @@ module ElasticAPM
|
|
7
7
|
target - target.to_i % 60
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.micros(target = Time.now
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def self.inspect_transaction(transaction)
|
15
|
-
Inspector.new.transaction transaction
|
10
|
+
def self.micros(target = Time.now)
|
11
|
+
utc = target.utc
|
12
|
+
utc.to_i * 1_000_000 + utc.usec
|
16
13
|
end
|
17
14
|
|
18
15
|
def self.git_sha
|
19
16
|
sha = `git rev-parse --verify HEAD 2>&1`.chomp
|
20
17
|
$? && $?.success? ? sha : nil # rubocop:disable Style/SpecialGlobalVars
|
21
18
|
end
|
19
|
+
|
20
|
+
def self.hex_to_bits(str)
|
21
|
+
str.hex.to_s(2).rjust(str.size * 4, '0')
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.reverse_merge!(first, second)
|
25
|
+
first.merge!(second) { |_, old, _| old }
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
|
-
|
25
|
-
require 'elastic_apm/util/inspector'
|
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:
|
4
|
+
version: 2.0.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: 2018-
|
11
|
+
date: 2018-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -16,14 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
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.0
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: http
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
27
41
|
description:
|
28
42
|
email:
|
29
43
|
- mikkel@elastic.co
|
@@ -35,7 +49,6 @@ files:
|
|
35
49
|
- ".hound.yml"
|
36
50
|
- ".rspec"
|
37
51
|
- ".rubocop.yml"
|
38
|
-
- ".travis.yml"
|
39
52
|
- CHANGELOG.md
|
40
53
|
- CODE_OF_CONDUCT.md
|
41
54
|
- Gemfile
|
@@ -60,12 +73,14 @@ files:
|
|
60
73
|
- docs/getting-started-rack.asciidoc
|
61
74
|
- docs/getting-started-rails.asciidoc
|
62
75
|
- docs/index.asciidoc
|
63
|
-
- docs/
|
76
|
+
- docs/supported-technologies.asciidoc
|
64
77
|
- elastic-apm.gemspec
|
65
78
|
- lib/elastic-apm.rb
|
66
79
|
- lib/elastic_apm.rb
|
67
80
|
- lib/elastic_apm/agent.rb
|
68
81
|
- lib/elastic_apm/config.rb
|
82
|
+
- lib/elastic_apm/config/duration.rb
|
83
|
+
- lib/elastic_apm/config/size.rb
|
69
84
|
- lib/elastic_apm/context.rb
|
70
85
|
- lib/elastic_apm/context/request.rb
|
71
86
|
- lib/elastic_apm/context/request/socket.rb
|
@@ -73,17 +88,18 @@ files:
|
|
73
88
|
- lib/elastic_apm/context/response.rb
|
74
89
|
- lib/elastic_apm/context/user.rb
|
75
90
|
- lib/elastic_apm/context_builder.rb
|
91
|
+
- lib/elastic_apm/deprecations.rb
|
76
92
|
- lib/elastic_apm/error.rb
|
77
93
|
- lib/elastic_apm/error/exception.rb
|
78
94
|
- lib/elastic_apm/error/log.rb
|
79
95
|
- lib/elastic_apm/error_builder.rb
|
80
|
-
- lib/elastic_apm/filters.rb
|
81
|
-
- lib/elastic_apm/filters/request_body_filter.rb
|
82
|
-
- lib/elastic_apm/filters/secrets_filter.rb
|
83
|
-
- lib/elastic_apm/http.rb
|
84
96
|
- lib/elastic_apm/instrumenter.rb
|
85
97
|
- lib/elastic_apm/internal_error.rb
|
86
|
-
- lib/elastic_apm/
|
98
|
+
- lib/elastic_apm/logging.rb
|
99
|
+
- lib/elastic_apm/metadata.rb
|
100
|
+
- lib/elastic_apm/metadata/process_info.rb
|
101
|
+
- lib/elastic_apm/metadata/service_info.rb
|
102
|
+
- lib/elastic_apm/metadata/system_info.rb
|
87
103
|
- lib/elastic_apm/middleware.rb
|
88
104
|
- lib/elastic_apm/naively_hashable.rb
|
89
105
|
- lib/elastic_apm/normalizers.rb
|
@@ -91,12 +107,7 @@ files:
|
|
91
107
|
- lib/elastic_apm/normalizers/action_mailer.rb
|
92
108
|
- lib/elastic_apm/normalizers/action_view.rb
|
93
109
|
- lib/elastic_apm/normalizers/active_record.rb
|
94
|
-
- lib/elastic_apm/process_info.rb
|
95
110
|
- lib/elastic_apm/railtie.rb
|
96
|
-
- lib/elastic_apm/serializers.rb
|
97
|
-
- lib/elastic_apm/serializers/errors.rb
|
98
|
-
- lib/elastic_apm/serializers/transactions.rb
|
99
|
-
- lib/elastic_apm/service_info.rb
|
100
111
|
- lib/elastic_apm/span.rb
|
101
112
|
- lib/elastic_apm/span/context.rb
|
102
113
|
- lib/elastic_apm/span_helpers.rb
|
@@ -104,6 +115,7 @@ files:
|
|
104
115
|
- lib/elastic_apm/spies/action_dispatch.rb
|
105
116
|
- lib/elastic_apm/spies/delayed_job.rb
|
106
117
|
- lib/elastic_apm/spies/elasticsearch.rb
|
118
|
+
- lib/elastic_apm/spies/http.rb
|
107
119
|
- lib/elastic_apm/spies/json.rb
|
108
120
|
- lib/elastic_apm/spies/mongo.rb
|
109
121
|
- lib/elastic_apm/spies/net_http.rb
|
@@ -118,15 +130,22 @@ files:
|
|
118
130
|
- lib/elastic_apm/stacktrace/frame.rb
|
119
131
|
- lib/elastic_apm/stacktrace_builder.rb
|
120
132
|
- lib/elastic_apm/subscriber.rb
|
121
|
-
- lib/elastic_apm/
|
133
|
+
- lib/elastic_apm/traceparent.rb
|
122
134
|
- lib/elastic_apm/transaction.rb
|
135
|
+
- lib/elastic_apm/transport/base.rb
|
136
|
+
- lib/elastic_apm/transport/connection.rb
|
137
|
+
- lib/elastic_apm/transport/filters.rb
|
138
|
+
- lib/elastic_apm/transport/filters/request_body_filter.rb
|
139
|
+
- lib/elastic_apm/transport/filters/secrets_filter.rb
|
140
|
+
- lib/elastic_apm/transport/serializers.rb
|
141
|
+
- lib/elastic_apm/transport/serializers/error_serializer.rb
|
142
|
+
- lib/elastic_apm/transport/serializers/span_serializer.rb
|
143
|
+
- lib/elastic_apm/transport/serializers/transaction_serializer.rb
|
144
|
+
- lib/elastic_apm/transport/worker.rb
|
123
145
|
- lib/elastic_apm/util.rb
|
124
|
-
- lib/elastic_apm/util/dig.rb
|
125
146
|
- lib/elastic_apm/util/inflector.rb
|
126
|
-
- lib/elastic_apm/util/inspector.rb
|
127
147
|
- lib/elastic_apm/util/lru_cache.rb
|
128
148
|
- lib/elastic_apm/version.rb
|
129
|
-
- lib/elastic_apm/worker.rb
|
130
149
|
- vendor/.gitkeep
|
131
150
|
homepage: https://github.com/elastic/apm-agent-ruby
|
132
151
|
licenses:
|
@@ -141,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
160
|
requirements:
|
142
161
|
- - ">="
|
143
162
|
- !ruby/object:Gem::Version
|
144
|
-
version: 2.
|
163
|
+
version: 2.3.0
|
145
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
165
|
requirements:
|
147
166
|
- - ">="
|