atatus 1.3.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/Gemfile +72 -22
- data/LICENSE +1 -1
- data/atatus.gemspec +2 -2
- data/lib/atatus/agent.rb +78 -29
- data/lib/atatus/central_config/cache_control.rb +18 -1
- data/lib/atatus/central_config.rb +72 -27
- data/lib/atatus/child_durations.rb +64 -0
- data/lib/atatus/collector/base.rb +102 -43
- data/lib/atatus/collector/builder.rb +134 -4
- data/lib/atatus/collector/hist.rb +54 -0
- data/lib/atatus/collector/layer.rb +1 -0
- data/lib/atatus/collector/transport.rb +41 -11
- data/lib/atatus/config/bytes.rb +17 -0
- data/lib/atatus/config/duration.rb +17 -0
- data/lib/atatus/config/options.rb +29 -9
- data/lib/atatus/config/regexp_list.rb +17 -0
- data/lib/atatus/config/wildcard_pattern_list.rb +64 -0
- data/lib/atatus/config.rb +129 -28
- data/lib/atatus/context/request/socket.rb +18 -1
- data/lib/atatus/context/request/url.rb +17 -0
- data/lib/atatus/context/request.rb +17 -0
- data/lib/atatus/context/response.rb +27 -2
- data/lib/atatus/context/user.rb +17 -0
- data/lib/atatus/context.rb +32 -1
- data/lib/atatus/context_builder.rb +19 -4
- data/lib/atatus/deprecations.rb +17 -0
- data/lib/atatus/error/exception.rb +24 -0
- data/lib/atatus/error/log.rb +17 -0
- data/lib/atatus/error.rb +27 -0
- data/lib/atatus/error_builder.rb +21 -2
- data/lib/atatus/grape.rb +62 -0
- data/lib/atatus/graphql.rb +91 -0
- data/lib/atatus/grpc.rb +99 -0
- data/lib/atatus/instrumenter.rb +135 -30
- data/lib/atatus/internal_error.rb +17 -0
- data/lib/atatus/logging.rb +17 -2
- data/lib/atatus/metadata/process_info.rb +17 -0
- data/lib/atatus/metadata/service_info.rb +21 -6
- data/lib/atatus/metadata/system_info/container_info.rb +49 -10
- data/lib/atatus/metadata/system_info/hw_info.rb +1 -1
- data/lib/atatus/metadata/system_info.rb +22 -3
- data/lib/atatus/metadata.rb +17 -0
- data/lib/atatus/metrics/breakdown_set.rb +31 -0
- data/lib/atatus/metrics/{cpu_mem.rb → cpu_mem_set.rb} +110 -63
- data/lib/atatus/metrics/metric.rb +140 -0
- data/lib/atatus/metrics/set.rb +123 -0
- data/lib/atatus/metrics/span_scoped_set.rb +56 -0
- data/lib/atatus/metrics/transaction_set.rb +26 -0
- data/lib/atatus/metrics/vm_set.rb +58 -0
- data/lib/atatus/metrics.rb +69 -27
- data/lib/atatus/metricset.rb +48 -4
- data/lib/atatus/middleware.rb +28 -8
- data/lib/atatus/naively_hashable.rb +17 -0
- data/lib/atatus/normalizers/grape/endpoint_run.rb +65 -0
- data/lib/atatus/normalizers/grape.rb +22 -0
- data/lib/atatus/normalizers/rails/action_controller.rb +44 -0
- data/lib/atatus/normalizers/rails/action_mailer.rb +43 -0
- data/lib/atatus/normalizers/{action_view.rb → rails/action_view.rb} +17 -0
- data/lib/atatus/normalizers/rails/active_record.rb +80 -0
- data/lib/atatus/normalizers/rails.rb +27 -0
- data/lib/atatus/normalizers.rb +23 -9
- data/lib/atatus/opentracing.rb +75 -42
- data/lib/atatus/rails.rb +29 -13
- data/lib/atatus/railtie.rb +19 -6
- data/lib/atatus/resque.rb +29 -0
- data/lib/atatus/sinatra.rb +53 -0
- data/lib/atatus/span/context/db.rb +43 -0
- data/lib/atatus/span/context/destination.rb +77 -0
- data/lib/atatus/span/context/http.rb +43 -0
- data/lib/atatus/span/context.rb +43 -28
- data/lib/atatus/span.rb +44 -15
- data/lib/atatus/span_helpers.rb +18 -1
- data/lib/atatus/spies/action_dispatch.rb +27 -6
- data/lib/atatus/spies/delayed_job.rb +26 -5
- data/lib/atatus/spies/dynamo_db.rb +62 -0
- data/lib/atatus/spies/elasticsearch.rb +53 -7
- data/lib/atatus/spies/faraday.rb +54 -20
- data/lib/atatus/spies/http.rb +36 -6
- data/lib/atatus/spies/json.rb +18 -0
- data/lib/atatus/spies/mongo.rb +41 -10
- data/lib/atatus/spies/net_http.rb +52 -11
- data/lib/atatus/spies/rake.rb +42 -23
- data/lib/atatus/spies/redis.rb +17 -0
- data/lib/atatus/spies/resque.rb +57 -0
- data/lib/atatus/spies/sequel.rb +54 -17
- data/lib/atatus/spies/shoryuken.rb +69 -0
- data/lib/atatus/spies/sidekiq.rb +46 -25
- data/lib/atatus/spies/sinatra.rb +20 -4
- data/lib/atatus/spies/sneakers.rb +74 -0
- data/lib/atatus/spies/sucker_punch.rb +58 -0
- data/lib/atatus/spies/tilt.rb +20 -1
- data/lib/atatus/spies.rb +33 -15
- data/lib/atatus/sql/signature.rb +169 -0
- data/lib/atatus/sql/tokenizer.rb +264 -0
- data/lib/atatus/sql/tokens.rb +63 -0
- data/lib/atatus/sql.rb +36 -0
- data/lib/atatus/sql_summarizer.rb +24 -6
- data/lib/atatus/stacktrace/frame.rb +17 -3
- data/lib/atatus/stacktrace.rb +17 -0
- data/lib/atatus/stacktrace_builder.rb +23 -3
- data/lib/atatus/subscriber.rb +23 -4
- data/lib/atatus/trace_context/traceparent.rb +111 -0
- data/lib/atatus/trace_context/tracestate.rb +148 -0
- data/lib/atatus/trace_context.rb +84 -51
- data/lib/atatus/transaction.rb +74 -18
- data/lib/atatus/transport/base.rb +44 -27
- data/lib/atatus/transport/connection/http.rb +58 -35
- data/lib/atatus/transport/connection/proxy_pipe.rb +24 -5
- data/lib/atatus/transport/connection.rb +28 -72
- data/lib/atatus/transport/filters/hash_sanitizer.rb +77 -0
- data/lib/atatus/transport/filters/secrets_filter.rb +30 -55
- data/lib/atatus/transport/filters.rb +18 -1
- data/lib/atatus/transport/headers.rb +83 -0
- data/lib/atatus/transport/serializers/context_serializer.rb +30 -3
- data/lib/atatus/transport/serializers/error_serializer.rb +17 -2
- data/lib/atatus/transport/serializers/metadata_serializer.rb +44 -22
- data/lib/atatus/transport/serializers/metricset_serializer.rb +34 -6
- data/lib/atatus/transport/serializers/span_serializer.rb +47 -12
- data/lib/atatus/transport/serializers/transaction_serializer.rb +18 -2
- data/lib/atatus/transport/serializers.rb +17 -5
- data/lib/atatus/transport/user_agent.rb +48 -0
- data/lib/atatus/transport/worker.rb +31 -7
- data/lib/atatus/util/inflector.rb +17 -0
- data/lib/atatus/util/lru_cache.rb +17 -0
- data/lib/atatus/util/throttle.rb +17 -0
- data/lib/atatus/util.rb +18 -1
- data/lib/atatus/version.rb +19 -1
- data/lib/atatus.rb +84 -16
- metadata +46 -26
- data/Rakefile +0 -19
- data/bench/.gitignore +0 -2
- data/bench/app.rb +0 -53
- data/bench/benchmark.rb +0 -36
- data/bench/report.rb +0 -55
- data/bench/rubyprof.rb +0 -39
- data/bench/stackprof.rb +0 -23
- data/bin/build_docs +0 -5
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/bin/with_framework +0 -7
- data/lib/atatus/metrics/vm.rb +0 -60
- data/lib/atatus/normalizers/action_controller.rb +0 -27
- data/lib/atatus/normalizers/action_mailer.rb +0 -26
- data/lib/atatus/normalizers/active_record.rb +0 -45
- data/lib/atatus/util/prefixed_logger.rb +0 -18
- data/vendor/.gitkeep +0 -0
data/lib/atatus/metrics/vm.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Atatus
|
4
|
-
module Metrics
|
5
|
-
# @api private
|
6
|
-
class VM
|
7
|
-
include Logging
|
8
|
-
|
9
|
-
def initialize(config)
|
10
|
-
@config = config
|
11
|
-
@total_time = 0
|
12
|
-
@disabled = false
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :config
|
16
|
-
attr_writer :disabled
|
17
|
-
|
18
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
19
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
20
|
-
def collect
|
21
|
-
return if disabled?
|
22
|
-
|
23
|
-
stat = GC.stat
|
24
|
-
thread_count = Thread.list.count
|
25
|
-
|
26
|
-
sample = {
|
27
|
-
'ruby.gc.count': stat[:count],
|
28
|
-
'ruby.threads': thread_count
|
29
|
-
}
|
30
|
-
|
31
|
-
(live_slots = stat[:heap_live_slots]) &&
|
32
|
-
sample[:'ruby.heap.slots.live'] = live_slots
|
33
|
-
(heap_slots = stat[:heap_free_slots]) &&
|
34
|
-
sample[:'ruby.heap.slots.free'] = heap_slots
|
35
|
-
(allocated = stat[:total_allocated_objects]) &&
|
36
|
-
sample[:'ruby.heap.allocations.total'] = allocated
|
37
|
-
|
38
|
-
return sample unless GC::Profiler.enabled?
|
39
|
-
|
40
|
-
@total_time += GC::Profiler.total_time
|
41
|
-
GC::Profiler.clear
|
42
|
-
sample[:'ruby.gc.time'] = @total_time
|
43
|
-
|
44
|
-
sample
|
45
|
-
rescue TypeError => e
|
46
|
-
error 'VM metrics encountered error: %s', e
|
47
|
-
debug('Backtrace:') { e.backtrace.join("\n") }
|
48
|
-
|
49
|
-
@disabled = true
|
50
|
-
nil
|
51
|
-
end
|
52
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
53
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
54
|
-
|
55
|
-
def disabled?
|
56
|
-
@disabled
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Atatus
|
4
|
-
module Normalizers
|
5
|
-
module ActionController
|
6
|
-
# @api private
|
7
|
-
class ProcessActionNormalizer < Normalizer
|
8
|
-
register 'process_action.action_controller'
|
9
|
-
|
10
|
-
TYPE = 'app'
|
11
|
-
SUBTYPE = 'controller'
|
12
|
-
ACTION = 'action'
|
13
|
-
|
14
|
-
def normalize(transaction, _name, payload)
|
15
|
-
transaction.name = endpoint(payload)
|
16
|
-
[transaction.name, TYPE, SUBTYPE, ACTION, nil]
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def endpoint(payload)
|
22
|
-
"#{payload[:controller]}##{payload[:action]}"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Atatus
|
4
|
-
module Normalizers
|
5
|
-
module ActionMailer
|
6
|
-
# @api private
|
7
|
-
class ProcessActionNormalizer < Normalizer
|
8
|
-
register 'process.action_mailer'
|
9
|
-
|
10
|
-
TYPE = 'app'
|
11
|
-
SUBTYPE = 'mailer'
|
12
|
-
ACTION = 'action'
|
13
|
-
|
14
|
-
def normalize(_transaction, _name, payload)
|
15
|
-
[endpoint(payload), TYPE, SUBTYPE, ACTION, nil]
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def endpoint(payload)
|
21
|
-
"#{payload[:mailer]}##{payload[:action]}"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'atatus/sql_summarizer'
|
4
|
-
|
5
|
-
module Atatus
|
6
|
-
module Normalizers
|
7
|
-
module ActiveRecord
|
8
|
-
# @api private
|
9
|
-
class SqlNormalizer < Normalizer
|
10
|
-
register 'sql.active_record'
|
11
|
-
|
12
|
-
TYPE = 'db'
|
13
|
-
ACTION = 'sql'
|
14
|
-
|
15
|
-
def initialize(*args)
|
16
|
-
super
|
17
|
-
|
18
|
-
@subtype = lookup_adapter || 'unknown'
|
19
|
-
@summarizer = SqlSummarizer.new
|
20
|
-
end
|
21
|
-
|
22
|
-
def normalize(_transaction, _name, payload)
|
23
|
-
return :skip if %w[SCHEMA CACHE].include?(payload[:name])
|
24
|
-
|
25
|
-
name = summarize(payload[:sql]) || payload[:name]
|
26
|
-
context =
|
27
|
-
Span::Context.new(db: { statement: payload[:sql], type: 'sql' })
|
28
|
-
[name, TYPE, @subtype, ACTION, context]
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def summarize(sql)
|
34
|
-
@summarizer.summarize(sql)
|
35
|
-
end
|
36
|
-
|
37
|
-
def lookup_adapter
|
38
|
-
::ActiveRecord::Base.connection.adapter_name.downcase
|
39
|
-
rescue StandardError
|
40
|
-
nil
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Atatus
|
4
|
-
# @api private
|
5
|
-
class PrefixedLogger < Logger
|
6
|
-
def initialize(logdev, prefix: '', **args)
|
7
|
-
super(logdev, **args)
|
8
|
-
|
9
|
-
@prefix = prefix
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :prefix
|
13
|
-
|
14
|
-
def add(severity, message = nil, progname = nil, &block)
|
15
|
-
super(severity, message, format('%s%s', prefix, progname), &block)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/vendor/.gitkeep
DELETED
File without changes
|