app_perf_rpm 0.0.5 → 0.0.6
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/lib/app_perf_rpm/backtrace.rb +7 -7
- data/lib/app_perf_rpm/configuration.rb +6 -4
- data/lib/app_perf_rpm/instruments/action_controller.rb +33 -16
- data/lib/app_perf_rpm/instruments/action_view.rb +93 -65
- data/lib/app_perf_rpm/instruments/active_record/adapters/mysql2.rb +24 -15
- data/lib/app_perf_rpm/instruments/active_record/adapters/postgresql.rb +95 -52
- data/lib/app_perf_rpm/instruments/active_record/adapters/sqlite3.rb +95 -54
- data/lib/app_perf_rpm/instruments/active_record.rb +1 -1
- data/lib/app_perf_rpm/instruments/activerecord_import.rb +22 -13
- data/lib/app_perf_rpm/instruments/emque_consuming.rb +16 -7
- data/lib/app_perf_rpm/instruments/faraday.rb +26 -16
- data/lib/app_perf_rpm/instruments/net_http.rb +16 -10
- data/lib/app_perf_rpm/instruments/rack.rb +75 -25
- data/lib/app_perf_rpm/instruments/redis.rb +49 -13
- data/lib/app_perf_rpm/instruments/sequel.rb +36 -28
- data/lib/app_perf_rpm/instruments/sidekiq.rb +65 -21
- data/lib/app_perf_rpm/instruments/sinatra.rb +34 -20
- data/lib/app_perf_rpm/instruments/typhoeus.rb +40 -21
- data/lib/app_perf_rpm/rails.rb +2 -1
- data/lib/app_perf_rpm/railtie.rb +4 -4
- data/lib/app_perf_rpm/reporters/json_client.rb +69 -0
- data/lib/app_perf_rpm/reporters/null_client.rb +14 -0
- data/lib/app_perf_rpm/tracer.rb +20 -89
- data/lib/app_perf_rpm/tracing/buffer.rb +25 -0
- data/lib/app_perf_rpm/tracing/carrier.rb +23 -0
- data/lib/app_perf_rpm/tracing/collector.rb +31 -0
- data/lib/app_perf_rpm/tracing/endpoint.rb +19 -0
- data/lib/app_perf_rpm/tracing/managed_span.rb +36 -0
- data/lib/app_perf_rpm/tracing/managed_tracer.rb +32 -0
- data/lib/app_perf_rpm/tracing/span.rb +67 -0
- data/lib/app_perf_rpm/tracing/span_context.rb +41 -0
- data/lib/app_perf_rpm/tracing/thread_span_stack.rb +32 -0
- data/lib/app_perf_rpm/tracing/trace_id.rb +11 -0
- data/lib/app_perf_rpm/tracing/tracer.rb +91 -0
- data/lib/app_perf_rpm/utils.rb +18 -0
- data/lib/app_perf_rpm.rb +59 -26
- metadata +90 -12
- data/lib/app_perf_rpm/aggregator.rb +0 -77
- data/lib/app_perf_rpm/dispatcher.rb +0 -85
- data/lib/app_perf_rpm/middleware.rb +0 -30
- data/lib/app_perf_rpm/span.rb +0 -103
- data/lib/app_perf_rpm/worker.rb +0 -46
@@ -0,0 +1,31 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class Collector
|
4
|
+
attr_reader :buffer
|
5
|
+
|
6
|
+
def initialize(local_endpoint)
|
7
|
+
@buffer = Buffer.new
|
8
|
+
@local_endpoint = local_endpoint
|
9
|
+
end
|
10
|
+
|
11
|
+
def retrieve
|
12
|
+
@buffer.retrieve
|
13
|
+
end
|
14
|
+
|
15
|
+
def send_span(span, end_time)
|
16
|
+
duration = end_time - span.start_time
|
17
|
+
|
18
|
+
@buffer << {
|
19
|
+
"traceId" => span.context.trace_id,
|
20
|
+
"id" => span.context.span_id,
|
21
|
+
"parentId" => span.context.parent_id,
|
22
|
+
"name" => span.operation_name,
|
23
|
+
"timestamp" => span.start_time,
|
24
|
+
"duration" => duration * 1_000,
|
25
|
+
"logEntries" => span.log_entries,
|
26
|
+
"tags" => span.tags
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'socket'
|
2
|
+
|
3
|
+
module AppPerfRpm
|
4
|
+
module Tracing
|
5
|
+
class Endpoint
|
6
|
+
LOCAL_IP = (
|
7
|
+
Socket.ip_address_list.detect(&:ipv4_private?) ||
|
8
|
+
Socket.ip_address_list.reverse.detect(&:ipv4?)
|
9
|
+
).ip_address
|
10
|
+
|
11
|
+
def self.local_endpoint(service_name)
|
12
|
+
{
|
13
|
+
"serviceName" => service_name,
|
14
|
+
"ipv4" => LOCAL_IP
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class ManagedSpan < Span
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
def_delegators :@span, :context, :operation_name=, :set_tag, :set_baggage_item, :get_baggage_item, :log, :finish
|
7
|
+
|
8
|
+
def initialize(span, deactivate)
|
9
|
+
@span = span
|
10
|
+
@deactivate = deactivate.respond_to?(:call) ? deactivate : nil
|
11
|
+
@active = true
|
12
|
+
end
|
13
|
+
|
14
|
+
def wrapped
|
15
|
+
@span
|
16
|
+
end
|
17
|
+
|
18
|
+
def active?
|
19
|
+
@active
|
20
|
+
end
|
21
|
+
|
22
|
+
def deactivate
|
23
|
+
if @active && @deactivate
|
24
|
+
deactivated_span = @deactivate.call
|
25
|
+
warn "ActiveSpan::SpanSource inconsistency found during deactivation" unless deactivated_span == self
|
26
|
+
@active = false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def finish(end_time: AppPerfRpm.now)
|
31
|
+
deactivate
|
32
|
+
@span.finish(end_time: end_time)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class ManagedTracer < OpenTracing::Tracer
|
4
|
+
extend Forwardable
|
5
|
+
def_delegators :@tracer, :inject, :extract
|
6
|
+
|
7
|
+
attr_reader :thread_span_stack
|
8
|
+
|
9
|
+
def initialize(tracer, thread_span_stack = ThreadSpanStack.new)
|
10
|
+
@tracer = tracer
|
11
|
+
@thread_span_stack = thread_span_stack
|
12
|
+
end
|
13
|
+
|
14
|
+
def wrapped
|
15
|
+
@tracer
|
16
|
+
end
|
17
|
+
|
18
|
+
def collector
|
19
|
+
@tracer.collector
|
20
|
+
end
|
21
|
+
|
22
|
+
def active_span
|
23
|
+
thread_span_stack.active_span
|
24
|
+
end
|
25
|
+
|
26
|
+
def start_span(operation_name, child_of: active_span, **args)
|
27
|
+
span = @tracer.start_span(operation_name, child_of: child_of, **args)
|
28
|
+
@thread_span_stack.set_active_span(span)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class Span
|
4
|
+
attr_accessor :operation_name
|
5
|
+
|
6
|
+
attr_reader :context, :start_time, :end_time, :tags, :log_entries
|
7
|
+
def initialize(context, operation_name, collector, start_time: AppPerfRpm.now, tags: {})
|
8
|
+
@context = context
|
9
|
+
@operation_name = operation_name
|
10
|
+
@collector = collector
|
11
|
+
@start_time = start_time
|
12
|
+
@end_time = nil
|
13
|
+
@tags = tags
|
14
|
+
@log_entries = []
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_tag(key, value)
|
18
|
+
@tags = @tags.merge(key => value)
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_tags(tags)
|
22
|
+
tags.each_pair do |key, value|
|
23
|
+
set_tag(key, value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_baggage_item(key, value)
|
28
|
+
@context.set_baggage_item(key, value)
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_baggage_item(key)
|
32
|
+
@context.get_baggage_item(key)
|
33
|
+
end
|
34
|
+
|
35
|
+
def log(event: nil, timestamp: AppPerfRpm.now, **fields)
|
36
|
+
entry = {
|
37
|
+
"event" => event,
|
38
|
+
"timestamp" => timestamp,
|
39
|
+
}
|
40
|
+
|
41
|
+
entry["fields"] = fields if fields
|
42
|
+
@log_entries << entry
|
43
|
+
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
|
47
|
+
def log_error(exception, timestamp: AppPerfRpm.now)
|
48
|
+
log(
|
49
|
+
event: "error",
|
50
|
+
timestamp: timestamp,
|
51
|
+
message: exception.message,
|
52
|
+
error_class: exception.class.to_s,
|
53
|
+
backtrace: AppPerfRpm::Backtrace.clean(exception.backtrace),
|
54
|
+
source: AppPerfRpm::Backtrace.source_extract(exception.backtrace)
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def exit(end_time: AppPerfRpm.now)
|
59
|
+
@end_time = end_time
|
60
|
+
end
|
61
|
+
|
62
|
+
def finish(end_time: AppPerfRpm.now)
|
63
|
+
@collector.send_span(self, @end_time || end_time)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class SpanContext
|
4
|
+
def self.create_parent_context
|
5
|
+
trace_id = TraceId.generate
|
6
|
+
new(trace_id: trace_id, span_id: trace_id, sampled: true)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.create_from_parent_context(span_context)
|
10
|
+
new(
|
11
|
+
span_id: TraceId.generate,
|
12
|
+
parent_id: span_context.span_id,
|
13
|
+
trace_id: span_context.trace_id,
|
14
|
+
sampled: span_context.sampled?
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :span_id, :parent_id, :trace_id, :baggage
|
19
|
+
|
20
|
+
def initialize(span_id:, parent_id: nil, trace_id:, sampled:, baggage: {})
|
21
|
+
@span_id = span_id
|
22
|
+
@parent_id = parent_id
|
23
|
+
@trace_id = trace_id
|
24
|
+
@sampled = sampled
|
25
|
+
@baggage = baggage
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_baggage_item(key, value)
|
29
|
+
baggage[key] = value
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_baggage_item(key)
|
33
|
+
baggage[key]
|
34
|
+
end
|
35
|
+
|
36
|
+
def sampled?
|
37
|
+
@sampled
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module AppPerfRpm
|
2
|
+
module Tracing
|
3
|
+
class ThreadSpanStack
|
4
|
+
def set_active_span(span)
|
5
|
+
active_span = ManagedSpan.new(span, method(:pop))
|
6
|
+
push(active_span)
|
7
|
+
active_span
|
8
|
+
end
|
9
|
+
|
10
|
+
def active_span
|
11
|
+
local_stack.last
|
12
|
+
end
|
13
|
+
|
14
|
+
def clear
|
15
|
+
local_stack.clear
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def push(span)
|
20
|
+
local_stack << span
|
21
|
+
end
|
22
|
+
|
23
|
+
def pop
|
24
|
+
local_stack.pop
|
25
|
+
end
|
26
|
+
|
27
|
+
def local_stack
|
28
|
+
Thread.current[:__active_span__] ||= []
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'opentracing'
|
2
|
+
|
3
|
+
module AppPerfRpm
|
4
|
+
module Tracing
|
5
|
+
class Tracer
|
6
|
+
attr_reader :thread_span_stack, :collector
|
7
|
+
|
8
|
+
def self.build(collector:, sender:, service_name:)
|
9
|
+
sender.start
|
10
|
+
new(collector, sender)
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(collector, sender)
|
14
|
+
@collector = collector
|
15
|
+
@sender = sender
|
16
|
+
end
|
17
|
+
|
18
|
+
def stop
|
19
|
+
@sender.stop
|
20
|
+
end
|
21
|
+
|
22
|
+
def start_span(operation_name, child_of: nil, start_time: AppPerfRpm.now, tags: {}, **)
|
23
|
+
context =
|
24
|
+
if child_of
|
25
|
+
parent_context = child_of.respond_to?(:context) ? child_of.context : child_of
|
26
|
+
SpanContext.create_from_parent_context(parent_context)
|
27
|
+
else
|
28
|
+
SpanContext.create_parent_context
|
29
|
+
end
|
30
|
+
|
31
|
+
span = Span.new(context, operation_name, @collector, {
|
32
|
+
start_time: start_time,
|
33
|
+
tags: tags
|
34
|
+
})
|
35
|
+
end
|
36
|
+
|
37
|
+
def inject(span_context, format, carrier)
|
38
|
+
case format
|
39
|
+
when OpenTracing::FORMAT_TEXT_MAP
|
40
|
+
carrier['trace-id'] = span_context.trace_id
|
41
|
+
carrier['parent-id'] = span_context.parent_id
|
42
|
+
carrier['span-id'] = span_context.span_id
|
43
|
+
carrier['sampled'] = span_context.sampled? ? '1' : '0'
|
44
|
+
when OpenTracing::FORMAT_RACK
|
45
|
+
carrier['X-AppPerf-TraceId'] = span_context.trace_id
|
46
|
+
carrier['X-AppPerf-ParentSpanId'] = span_context.parent_id
|
47
|
+
carrier['X-AppPerf-SpanId'] = span_context.span_id
|
48
|
+
carrier['X-AppPerf-Sampled'] = span_context.sampled? ? '1' : '0'
|
49
|
+
else
|
50
|
+
STDERR.puts "AppPerfRpm::Tracer with format #{format} is not supported yet"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def extract(format, carrier)
|
55
|
+
case format
|
56
|
+
when OpenTracing::FORMAT_TEXT_MAP
|
57
|
+
trace_id = carrier['trace-id']
|
58
|
+
parent_id = carrier['parent-id']
|
59
|
+
span_id = carrier['span-id']
|
60
|
+
sampled = carrier['sampled'] == '1'
|
61
|
+
|
62
|
+
create_span_context(trace_id, span_id, parent_id, sampled)
|
63
|
+
when OpenTracing::FORMAT_RACK
|
64
|
+
trace_id = carrier['HTTP_X_APPPERF_TRACEID']
|
65
|
+
parent_id = carrier['HTTP_X_APPPERF_PARENTSPANID']
|
66
|
+
span_id = carrier['HTTP_X_APPPERF_SPANID']
|
67
|
+
sampled = carrier['HTTP_X_APPPERF_SAMPLED'] == '1'
|
68
|
+
|
69
|
+
create_span_context(trace_id, span_id, parent_id, sampled)
|
70
|
+
else
|
71
|
+
STDERR.puts "AppPerfRpm::Tracer with format #{format} is not supported yet"
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
def create_span_context(trace_id, span_id, parent_id, sampled)
|
78
|
+
if trace_id && span_id
|
79
|
+
SpanContext.new(
|
80
|
+
trace_id: trace_id,
|
81
|
+
parent_id: parent_id,
|
82
|
+
span_id: span_id,
|
83
|
+
sampled: sampled
|
84
|
+
)
|
85
|
+
else
|
86
|
+
nil
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
data/lib/app_perf_rpm/utils.rb
CHANGED
@@ -5,5 +5,23 @@ module AppPerfRpm
|
|
5
5
|
def sanitize_sql(sql, adapter)
|
6
6
|
sql.gsub(REGEXP, '?')
|
7
7
|
end
|
8
|
+
|
9
|
+
def connection_config
|
10
|
+
@connection_config ||= if ::ActiveRecord::VERSION::MAJOR == 2
|
11
|
+
ActiveRecord::Base.connection.instance_variable_get(:@config)
|
12
|
+
else
|
13
|
+
::ActiveRecord::Base.connection_config
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def format_redis(command)
|
18
|
+
command.is_a?(Symbol) ? command.to_s.upcase : command.to_s
|
19
|
+
rescue StandardError => e
|
20
|
+
"?"
|
21
|
+
end
|
22
|
+
|
23
|
+
def format_redis_command(command)
|
24
|
+
command.map { |x| format_redis(x) }.join(' ')
|
25
|
+
end
|
8
26
|
end
|
9
27
|
end
|
data/lib/app_perf_rpm.rb
CHANGED
@@ -3,55 +3,84 @@ require 'oj'
|
|
3
3
|
module AppPerfRpm
|
4
4
|
require 'app_perf_rpm/logger'
|
5
5
|
require 'app_perf_rpm/configuration'
|
6
|
-
require 'app_perf_rpm/span'
|
7
|
-
require 'app_perf_rpm/aggregator'
|
8
|
-
require 'app_perf_rpm/dispatcher'
|
9
|
-
require 'app_perf_rpm/worker'
|
10
6
|
require 'app_perf_rpm/backtrace'
|
7
|
+
|
8
|
+
require 'app_perf_rpm/reporters/json_client'
|
9
|
+
require 'app_perf_rpm/reporters/null_client'
|
10
|
+
|
11
|
+
require 'app_perf_rpm/tracing/buffer'
|
12
|
+
require 'app_perf_rpm/tracing/carrier'
|
13
|
+
require 'app_perf_rpm/tracing/collector'
|
14
|
+
require 'app_perf_rpm/tracing/endpoint'
|
15
|
+
require 'app_perf_rpm/tracing/trace_id'
|
16
|
+
require 'app_perf_rpm/tracing/span_context'
|
17
|
+
require 'app_perf_rpm/tracing/span'
|
18
|
+
require 'app_perf_rpm/tracing/managed_span'
|
19
|
+
require 'app_perf_rpm/tracing/tracer'
|
20
|
+
require 'app_perf_rpm/tracing/managed_tracer'
|
21
|
+
require 'app_perf_rpm/tracing/thread_span_stack'
|
22
|
+
|
11
23
|
require 'app_perf_rpm/tracer'
|
12
24
|
require 'app_perf_rpm/utils'
|
13
|
-
require 'app_perf_rpm/middleware'
|
14
25
|
require 'app_perf_rpm/instrumentation'
|
15
26
|
require 'app_perf_rpm/rails'
|
16
27
|
require 'app_perf_rpm/introspector'
|
17
28
|
|
29
|
+
TRACE_CONTEXT_KEY = 'AppPerf-Trace-Context'
|
30
|
+
|
18
31
|
class << self
|
19
|
-
attr_writer :configuration
|
20
32
|
|
21
|
-
|
22
|
-
|
33
|
+
attr_writer :config
|
34
|
+
|
35
|
+
def config
|
36
|
+
@config ||= Configuration.new
|
23
37
|
end
|
24
38
|
|
25
39
|
def configure
|
26
|
-
yield(
|
40
|
+
yield(config)
|
27
41
|
end
|
28
42
|
|
29
43
|
def load
|
30
44
|
#Oj.mimic_JSON
|
31
45
|
unless disable_agent?
|
32
46
|
AppPerfRpm::Instrumentation.load
|
33
|
-
|
34
|
-
|
35
|
-
if @worker.start
|
36
|
-
@worker_running = true
|
37
|
-
AppPerfRpm.tracing_on
|
38
|
-
end
|
47
|
+
AppPerfRpm.tracing_on
|
39
48
|
end
|
40
49
|
end
|
41
50
|
|
42
|
-
def worker
|
43
|
-
@worker
|
44
|
-
end
|
45
|
-
|
46
51
|
def mutex
|
47
52
|
@mutex ||= Mutex.new
|
48
53
|
end
|
49
54
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
+
def endpoint
|
56
|
+
@endpoint ||= AppPerfRpm::Tracing::Endpoint.local_endpoint(config.application_name)
|
57
|
+
end
|
58
|
+
|
59
|
+
def collector
|
60
|
+
@collector ||= AppPerfRpm::Tracing::Collector.new(endpoint)
|
61
|
+
end
|
62
|
+
|
63
|
+
def url
|
64
|
+
@url ||= "#{config.host}/api/listener/3/#{config.license_key}"
|
65
|
+
end
|
66
|
+
|
67
|
+
def sender
|
68
|
+
@sender ||= AppPerfRpm::Reporters::JsonClient.new(
|
69
|
+
url: url,
|
70
|
+
collector: collector,
|
71
|
+
flush_interval: config.flush_interval
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
def tracer
|
76
|
+
@tracer ||= AppPerfRpm::Tracing::ManagedTracer.new(
|
77
|
+
AppPerfRpm::Tracing::Tracer.build(
|
78
|
+
:service_name => config.application_name,
|
79
|
+
:sender => sender,
|
80
|
+
:collector => collector
|
81
|
+
),
|
82
|
+
AppPerfRpm::Tracing::ThreadSpanStack.new
|
83
|
+
)
|
55
84
|
end
|
56
85
|
|
57
86
|
def tracing_on
|
@@ -73,7 +102,7 @@ module AppPerfRpm
|
|
73
102
|
end
|
74
103
|
|
75
104
|
def tracing?
|
76
|
-
|
105
|
+
!!@tracing
|
77
106
|
end
|
78
107
|
|
79
108
|
def without_tracing
|
@@ -111,7 +140,7 @@ module AppPerfRpm
|
|
111
140
|
end
|
112
141
|
|
113
142
|
def disable_agent?
|
114
|
-
if
|
143
|
+
if config.agent_disabled
|
115
144
|
true
|
116
145
|
elsif Introspector.agentable?
|
117
146
|
false
|
@@ -120,5 +149,9 @@ module AppPerfRpm
|
|
120
149
|
end
|
121
150
|
end
|
122
151
|
|
152
|
+
def now
|
153
|
+
Process.clock_gettime(Process::CLOCK_REALTIME)
|
154
|
+
end
|
155
|
+
|
123
156
|
end
|
124
157
|
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.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Randy Girard
|
@@ -10,6 +10,34 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: oj
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: opentracing
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.1
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: rake
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,19 +95,61 @@ dependencies:
|
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: 0.12.0
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: rails
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- -
|
101
|
+
- - ">="
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- -
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: actionpack
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: activesupport
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
81
151
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
152
|
+
version: '0'
|
83
153
|
description: Ruby Agent for the AppPerf app.
|
84
154
|
email: rgirard59@yahoo.com
|
85
155
|
executables: []
|
@@ -87,10 +157,8 @@ extensions: []
|
|
87
157
|
extra_rdoc_files: []
|
88
158
|
files:
|
89
159
|
- lib/app_perf_rpm.rb
|
90
|
-
- lib/app_perf_rpm/aggregator.rb
|
91
160
|
- lib/app_perf_rpm/backtrace.rb
|
92
161
|
- lib/app_perf_rpm/configuration.rb
|
93
|
-
- lib/app_perf_rpm/dispatcher.rb
|
94
162
|
- lib/app_perf_rpm/instrumentation.rb
|
95
163
|
- lib/app_perf_rpm/instruments/action_controller.rb
|
96
164
|
- lib/app_perf_rpm/instruments/action_view.rb
|
@@ -110,13 +178,23 @@ files:
|
|
110
178
|
- lib/app_perf_rpm/instruments/typhoeus.rb
|
111
179
|
- lib/app_perf_rpm/introspector.rb
|
112
180
|
- lib/app_perf_rpm/logger.rb
|
113
|
-
- lib/app_perf_rpm/middleware.rb
|
114
181
|
- lib/app_perf_rpm/rails.rb
|
115
182
|
- lib/app_perf_rpm/railtie.rb
|
116
|
-
- lib/app_perf_rpm/
|
183
|
+
- lib/app_perf_rpm/reporters/json_client.rb
|
184
|
+
- lib/app_perf_rpm/reporters/null_client.rb
|
117
185
|
- lib/app_perf_rpm/tracer.rb
|
186
|
+
- lib/app_perf_rpm/tracing/buffer.rb
|
187
|
+
- lib/app_perf_rpm/tracing/carrier.rb
|
188
|
+
- lib/app_perf_rpm/tracing/collector.rb
|
189
|
+
- lib/app_perf_rpm/tracing/endpoint.rb
|
190
|
+
- lib/app_perf_rpm/tracing/managed_span.rb
|
191
|
+
- lib/app_perf_rpm/tracing/managed_tracer.rb
|
192
|
+
- lib/app_perf_rpm/tracing/span.rb
|
193
|
+
- lib/app_perf_rpm/tracing/span_context.rb
|
194
|
+
- lib/app_perf_rpm/tracing/thread_span_stack.rb
|
195
|
+
- lib/app_perf_rpm/tracing/trace_id.rb
|
196
|
+
- lib/app_perf_rpm/tracing/tracer.rb
|
118
197
|
- lib/app_perf_rpm/utils.rb
|
119
|
-
- lib/app_perf_rpm/worker.rb
|
120
198
|
- lib/tasks/install.rake
|
121
199
|
homepage: https://www.github.com/randy-girard/app_perf_rpm
|
122
200
|
licenses:
|