newrelic-infinite_tracing 6.11.0.365
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 +7 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +12 -0
- data/Rakefile +24 -0
- data/lib/infinite_tracing.rb +40 -0
- data/lib/infinite_tracing/agent_integrations.rb +20 -0
- data/lib/infinite_tracing/agent_integrations/agent.rb +33 -0
- data/lib/infinite_tracing/agent_integrations/datastore_segment.rb +17 -0
- data/lib/infinite_tracing/agent_integrations/external_request_segment.rb +17 -0
- data/lib/infinite_tracing/agent_integrations/segment.rb +22 -0
- data/lib/infinite_tracing/channel.rb +45 -0
- data/lib/infinite_tracing/client.rb +138 -0
- data/lib/infinite_tracing/config.rb +115 -0
- data/lib/infinite_tracing/connection.rb +171 -0
- data/lib/infinite_tracing/constants.rb +20 -0
- data/lib/infinite_tracing/proto.rb +18 -0
- data/lib/infinite_tracing/proto/infinite_tracing_pb.rb +44 -0
- data/lib/infinite_tracing/proto/infinite_tracing_services_pb.rb +42 -0
- data/lib/infinite_tracing/record_status_handler.rb +49 -0
- data/lib/infinite_tracing/streaming_buffer.rb +162 -0
- data/lib/infinite_tracing/suspended_streaming_buffer.rb +39 -0
- data/lib/infinite_tracing/transformer.rb +54 -0
- data/lib/infinite_tracing/version.rb +12 -0
- data/lib/infinite_tracing/worker.rb +74 -0
- data/lib/new_relic/infinite_tracing.rb +40 -0
- data/lib/newrelic/infinite_tracing.rb +8 -0
- data/lib/proto/infinite_tracing.proto +42 -0
- data/newrelic-infinite_tracing.gemspec +91 -0
- data/tasks/all.rb +8 -0
- data/tasks/proto.rake +51 -0
- metadata +290 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
# The SuspendedStreamingBuffer class discards pushed segments and records
|
7
|
+
# the seen metric. This buffer is installed when the gRPC server returns
|
8
|
+
# UNIMPLEMENTED (status 12) code as a signal to not reconnect to the server.
|
9
|
+
module NewRelic::Agent
|
10
|
+
module InfiniteTracing
|
11
|
+
class SuspendedStreamingBuffer
|
12
|
+
include Constants
|
13
|
+
extend Forwardable
|
14
|
+
def_delegators :@empty_buffer, :empty?, :push
|
15
|
+
|
16
|
+
def initialize max_size = DEFAULT_QUEUE_SIZE
|
17
|
+
@empty_buffer = NewRelic::EMPTY_ARRAY
|
18
|
+
end
|
19
|
+
|
20
|
+
# updates the seen metric and discards the segment
|
21
|
+
def << segment
|
22
|
+
NewRelic::Agent.increment_metric SPANS_SEEN_METRIC
|
23
|
+
end
|
24
|
+
|
25
|
+
def transfer new_buffer
|
26
|
+
# NOOP
|
27
|
+
end
|
28
|
+
|
29
|
+
def close_queue
|
30
|
+
# NOOP
|
31
|
+
end
|
32
|
+
alias :flush_queue :close_queue
|
33
|
+
|
34
|
+
def enumerator
|
35
|
+
@empty_buffer
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
module NewRelic::Agent
|
7
|
+
module InfiniteTracing
|
8
|
+
module Transformer
|
9
|
+
extend self
|
10
|
+
|
11
|
+
def transform span_event
|
12
|
+
intrinsics, user_attributes, agent_attributes = span_event
|
13
|
+
{
|
14
|
+
"trace_id" => intrinsics[NewRelic::Agent::SpanEventPrimitive::TRACE_ID_KEY],
|
15
|
+
"intrinsics" => hash_to_attributes(intrinsics),
|
16
|
+
"user_attributes" => hash_to_attributes(user_attributes),
|
17
|
+
"agent_attributes" => hash_to_attributes(agent_attributes)
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
KLASS_TO_ARG = {
|
24
|
+
String => :string_value,
|
25
|
+
TrueClass => :bool_value,
|
26
|
+
FalseClass => :bool_value,
|
27
|
+
Integer => :int_value,
|
28
|
+
Float => :double_value,
|
29
|
+
}
|
30
|
+
if RUBY_VERSION < '2.4.0'
|
31
|
+
KLASS_TO_ARG[Fixnum] = :int_value
|
32
|
+
end
|
33
|
+
if defined? BigDecimal
|
34
|
+
KLASS_TO_ARG[BigDecimal] = :double_value
|
35
|
+
end
|
36
|
+
|
37
|
+
def safe_param_name value
|
38
|
+
KLASS_TO_ARG[value.class] || raise("Unhandled class #{value.class.name}")
|
39
|
+
end
|
40
|
+
|
41
|
+
def hash_to_attributes values
|
42
|
+
values.map do |key, value|
|
43
|
+
begin
|
44
|
+
[key, AttributeValue.new(safe_param_name(value) => value)]
|
45
|
+
rescue => e
|
46
|
+
puts e.inspect
|
47
|
+
puts [key, value].inspect
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
end.to_h
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
module NewRelic
|
7
|
+
module Agent
|
8
|
+
module InfiniteTracing
|
9
|
+
VERSION = NewRelic::VERSION
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
# The Worker class makes it easy to stop and start a thread at will.
|
7
|
+
# Some basic error handling/capture is wrapped around the Thread to help
|
8
|
+
# propagate the exceptions arising from the threaded processes to the main process
|
9
|
+
# where the main agent code lives.
|
10
|
+
module NewRelic::Agent
|
11
|
+
module InfiniteTracing
|
12
|
+
|
13
|
+
class Worker
|
14
|
+
attr_reader :name, :error
|
15
|
+
|
16
|
+
def initialize name, &job
|
17
|
+
@name = name
|
18
|
+
@job = job
|
19
|
+
@error = nil
|
20
|
+
@worker_thread = nil
|
21
|
+
@lock = Mutex.new
|
22
|
+
@lock.synchronize { start_thread }
|
23
|
+
end
|
24
|
+
|
25
|
+
def status
|
26
|
+
return "error" if error?
|
27
|
+
@lock.synchronize do
|
28
|
+
return "stopped" if @worker_thread.nil?
|
29
|
+
@worker_thread.status || "idle"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def error?
|
34
|
+
!!@error
|
35
|
+
end
|
36
|
+
|
37
|
+
def join timeout=nil
|
38
|
+
return unless @worker_thread
|
39
|
+
NewRelic::Agent.logger.debug "joining worker #{@name} thread..."
|
40
|
+
@worker_thread.join timeout
|
41
|
+
end
|
42
|
+
|
43
|
+
def stop
|
44
|
+
@lock.synchronize do
|
45
|
+
return unless @worker_thread
|
46
|
+
NewRelic::Agent.logger.debug "stopping worker #{@name} thread..."
|
47
|
+
@worker_thread.kill
|
48
|
+
@worker_thread = nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def start_thread
|
55
|
+
NewRelic::Agent.logger.debug "starting worker #{@name} thread..."
|
56
|
+
@worker_thread = Thread.new do
|
57
|
+
catch(:exit) do
|
58
|
+
begin
|
59
|
+
@job.call
|
60
|
+
rescue => err
|
61
|
+
@error = err
|
62
|
+
raise
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
@worker_thread.abort_on_exception = true
|
67
|
+
if @worker_thread.respond_to? :report_on_exception
|
68
|
+
@worker_thread.report_on_exception = NewRelic::Agent.config[:log_level] == "debug"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
require 'uri'
|
7
|
+
|
8
|
+
require 'newrelic_rpm'
|
9
|
+
|
10
|
+
NewRelic::Agent.logger.debug "Detected New Relic Infinite Tracing Gem"
|
11
|
+
|
12
|
+
require 'new_relic/infinite_tracing/version'
|
13
|
+
require 'new_relic/infinite_tracing/config'
|
14
|
+
|
15
|
+
DependencyDetection.defer do
|
16
|
+
named :infinite_tracing
|
17
|
+
|
18
|
+
depends_on do
|
19
|
+
NewRelic::Agent::InfiniteTracing::Config.should_load?
|
20
|
+
end
|
21
|
+
|
22
|
+
executes do
|
23
|
+
NewRelic::Agent.logger.debug "Loading New Relic Infinite Tracing Library"
|
24
|
+
|
25
|
+
require 'new_relic/infinite_tracing/proto'
|
26
|
+
|
27
|
+
require 'new_relic/infinite_tracing/constants'
|
28
|
+
require 'new_relic/infinite_tracing/worker'
|
29
|
+
require 'new_relic/infinite_tracing/record_status_handler'
|
30
|
+
|
31
|
+
require 'new_relic/infinite_tracing/transformer'
|
32
|
+
require 'new_relic/infinite_tracing/streaming_buffer'
|
33
|
+
require 'new_relic/infinite_tracing/suspended_streaming_buffer'
|
34
|
+
require 'new_relic/infinite_tracing/channel'
|
35
|
+
require 'new_relic/infinite_tracing/connection'
|
36
|
+
require 'new_relic/infinite_tracing/client'
|
37
|
+
|
38
|
+
require 'new_relic/infinite_tracing/agent_integrations'
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
|
6
|
+
unless defined? NewRelic::Agent::InfiniteTracing
|
7
|
+
require_relative '../infinite_tracing'
|
8
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// encoding: utf-8
|
2
|
+
// This file is distributed under New Relic's license terms.
|
3
|
+
// See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
syntax = "proto3";
|
6
|
+
|
7
|
+
package com.newrelic.trace.v1;
|
8
|
+
|
9
|
+
service IngestService {
|
10
|
+
// Accepts a stream of Span messages, and returns an irregular stream of
|
11
|
+
// RecordStatus messages.
|
12
|
+
rpc RecordSpan(stream Span) returns (stream RecordStatus) {}
|
13
|
+
|
14
|
+
// Accepts a stream of SpanBatch messages, and returns an irregular
|
15
|
+
// stream of RecordStatus messages. This endpoint can be used to improve
|
16
|
+
// throughput when Span messages are small
|
17
|
+
rpc RecordSpanBatch(stream SpanBatch) returns (stream RecordStatus) {}
|
18
|
+
}
|
19
|
+
|
20
|
+
message SpanBatch {
|
21
|
+
repeated Span spans = 1;
|
22
|
+
}
|
23
|
+
|
24
|
+
message Span {
|
25
|
+
string trace_id = 1;
|
26
|
+
map<string, AttributeValue> intrinsics = 2;
|
27
|
+
map<string, AttributeValue> user_attributes = 3;
|
28
|
+
map<string, AttributeValue> agent_attributes = 4;
|
29
|
+
}
|
30
|
+
|
31
|
+
message AttributeValue {
|
32
|
+
oneof value {
|
33
|
+
string string_value = 1;
|
34
|
+
bool bool_value = 2;
|
35
|
+
int64 int_value = 3;
|
36
|
+
double double_value = 4;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
message RecordStatus {
|
41
|
+
uint64 messages_seen = 1;
|
42
|
+
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#-*- coding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
agent_lib = File.expand_path('../../lib', __FILE__)
|
5
|
+
$LOAD_PATH.unshift(agent_lib) unless $LOAD_PATH.include?(agent_lib)
|
6
|
+
|
7
|
+
lib = File.expand_path('../lib', __FILE__)
|
8
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
9
|
+
|
10
|
+
require 'new_relic/version'
|
11
|
+
|
12
|
+
Gem::Specification.new do |s|
|
13
|
+
|
14
|
+
def self.copy_files filelist
|
15
|
+
subfolder = File.expand_path File.dirname(__FILE__)
|
16
|
+
|
17
|
+
filelist.each do |filename|
|
18
|
+
source_full_filename = File.expand_path(filename)
|
19
|
+
dest_full_filename = File.join(subfolder, File.basename(filename))
|
20
|
+
FileUtils.cp source_full_filename, dest_full_filename
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
shared_files = [
|
25
|
+
"../LICENSE",
|
26
|
+
"../CONTRIBUTING.md",
|
27
|
+
]
|
28
|
+
|
29
|
+
self.copy_files shared_files
|
30
|
+
|
31
|
+
s.name = "newrelic-infinite_tracing"
|
32
|
+
s.version = NewRelic::VERSION::STRING
|
33
|
+
s.required_ruby_version = '>= 2.3.0'
|
34
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
35
|
+
s.authors = [ "Rachel Klein", "Tanna McClure", "Michael Lang" ]
|
36
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
37
|
+
s.licenses = ['New Relic']
|
38
|
+
s.description = <<-EOS
|
39
|
+
The New Relic Ruby agent requires the gem newrelic_rpm, and it includes distributed
|
40
|
+
tracing that uses head-based sampling (standard distributed tracing).
|
41
|
+
|
42
|
+
If you want distributed tracing to use tail-based sampling (Infinite Tracing),
|
43
|
+
you need to add both newrelic_rpm and newrelic-infinite_tracing to your application's
|
44
|
+
Gemfile. For more information, see: https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing
|
45
|
+
|
46
|
+
New Relic is a performance management system, developed by New Relic,
|
47
|
+
Inc (http://www.newrelic.com). New Relic provides you with deep
|
48
|
+
information about the performance of your web application as it runs
|
49
|
+
in production. The New Relic Ruby Agent is dual-purposed as a either a
|
50
|
+
Gem or plugin, hosted on https://github.com/newrelic/rpm/
|
51
|
+
EOS
|
52
|
+
|
53
|
+
s.email = "support@newrelic.com"
|
54
|
+
s.executables = []
|
55
|
+
s.extra_rdoc_files = [
|
56
|
+
"CHANGELOG.md",
|
57
|
+
"LICENSE"
|
58
|
+
]
|
59
|
+
|
60
|
+
s.metadata = {
|
61
|
+
'bug_tracker_uri' => 'https://support.newrelic.com/',
|
62
|
+
'changelog_uri' => 'https://github.com/newrelic/rpm/blob/master/infinite_tracing/CHANGELOG.md',
|
63
|
+
'documentation_uri' => 'https://docs.newrelic.com/docs/agents/ruby-agent',
|
64
|
+
'source_code_uri' => 'https://github.com/newrelic/rpm'
|
65
|
+
}
|
66
|
+
|
67
|
+
file_list = `git ls-files . -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/(?!agent_helper.rb)}) }
|
68
|
+
s.files = file_list
|
69
|
+
|
70
|
+
s.homepage = "https://github.com/newrelic/rpm/tree/master/infinite_tracing"
|
71
|
+
s.require_paths = ["lib", "infinite_tracing"]
|
72
|
+
s.rubygems_version = Gem::VERSION
|
73
|
+
s.summary = "New Relic Infinite Tracing for the Ruby agent"
|
74
|
+
|
75
|
+
s.add_dependency 'newrelic_rpm', NewRelic::VERSION::STRING
|
76
|
+
s.add_dependency 'grpc', '~> 1.28.0'
|
77
|
+
|
78
|
+
s.add_development_dependency 'rake', '12.3.3'
|
79
|
+
s.add_development_dependency 'rb-inotify', '0.9.10' # locked to support < Ruby 2.3 (and listen 3.0.8)
|
80
|
+
s.add_development_dependency 'listen', '3.0.8' # locked to support < Ruby 2.3
|
81
|
+
s.add_development_dependency 'minitest', '~> 5.14.0'
|
82
|
+
s.add_development_dependency 'mocha', '~> 1.9.0'
|
83
|
+
s.add_development_dependency 'pry-nav', '~> 0.3.0'
|
84
|
+
s.add_development_dependency 'pry-stack_explorer', '~> 0.4.9'
|
85
|
+
s.add_development_dependency 'guard', '~> 2.16.0'
|
86
|
+
s.add_development_dependency 'guard-minitest', '~> 2.4.0'
|
87
|
+
s.add_development_dependency 'hometown', '~> 0.2.5'
|
88
|
+
s.add_development_dependency 'bundler'
|
89
|
+
|
90
|
+
s.add_development_dependency 'grpc-tools', "~> 1.14.0"
|
91
|
+
end
|
data/tasks/all.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
# This is required to load in task definitions from merb
|
6
|
+
Dir.glob(File.join(File.dirname(__FILE__),'*.rake')) do |file|
|
7
|
+
load file
|
8
|
+
end
|
data/tasks/proto.rake
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
namespace :proto do
|
6
|
+
desc "Generate proto files"
|
7
|
+
|
8
|
+
task :generate do
|
9
|
+
def extract_license_terms file_contents
|
10
|
+
text = []
|
11
|
+
text << file_contents.shift while !file_contents.empty? && file_contents[0] =~ /^#/
|
12
|
+
text << ""
|
13
|
+
text
|
14
|
+
end
|
15
|
+
|
16
|
+
# adds the NewRelic License notice to the top of the generated files
|
17
|
+
# Removes require lines since these are replicated in the proto.rb file.
|
18
|
+
def add_license_preamble_and_remove_requires output_path
|
19
|
+
gemspec_path = File.expand_path(File.join(output_path, '..', '..', '..', '..', '..'))
|
20
|
+
license_terms = extract_license_terms File.readlines(File.join(gemspec_path, "Gemfile"))
|
21
|
+
Dir.glob(File.join output_path, "*.rb") do |filename|
|
22
|
+
contents = File.readlines filename
|
23
|
+
contents.reject!{|r| r =~ /^\s*require\s.*$/}
|
24
|
+
File.open(filename, 'w') do |output|
|
25
|
+
output.puts license_terms
|
26
|
+
output.puts contents
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
gem_folder = File.expand_path File.join(File.dirname(__FILE__), "..")
|
32
|
+
proto_filename = File.join gem_folder, "lib", "new_relic", "proto", "infinite_tracing.proto"
|
33
|
+
output_path = File.join gem_folder, "lib", "new_relic", "infinite_tracing", "proto"
|
34
|
+
|
35
|
+
FileUtils.mkdir_p output_path
|
36
|
+
cmd = [
|
37
|
+
"grpc_tools_ruby_protoc",
|
38
|
+
"-I#{gem_folder}/lib/new_relic/proto",
|
39
|
+
"--ruby_out=#{output_path}",
|
40
|
+
"--grpc_out=#{output_path} #{proto_filename}"
|
41
|
+
].join(" ")
|
42
|
+
|
43
|
+
if system cmd
|
44
|
+
puts "Proto file generated!"
|
45
|
+
add_license_preamble_and_remove_requires output_path
|
46
|
+
else
|
47
|
+
puts "Failed to generate proto file."
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,290 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: newrelic-infinite_tracing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 6.11.0.365
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rachel Klein
|
8
|
+
- Tanna McClure
|
9
|
+
- Michael Lang
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2020-05-28 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: newrelic_rpm
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 6.11.0.365
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 6.11.0.365
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: grpc
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.28.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.28.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rake
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 12.3.3
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 12.3.3
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rb-inotify
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.9.10
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 0.9.10
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: listen
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 3.0.8
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 3.0.8
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: minitest
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 5.14.0
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 5.14.0
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: mocha
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 1.9.0
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.9.0
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: pry-nav
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.3.0
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.3.0
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: pry-stack_explorer
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.4.9
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 0.4.9
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: guard
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - "~>"
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: 2.16.0
|
148
|
+
type: :development
|
149
|
+
prerelease: false
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - "~>"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 2.16.0
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: guard-minitest
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - "~>"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 2.4.0
|
162
|
+
type: :development
|
163
|
+
prerelease: false
|
164
|
+
version_requirements: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - "~>"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 2.4.0
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: hometown
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - "~>"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 0.2.5
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 0.2.5
|
183
|
+
- !ruby/object:Gem::Dependency
|
184
|
+
name: bundler
|
185
|
+
requirement: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - ">="
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
type: :development
|
191
|
+
prerelease: false
|
192
|
+
version_requirements: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
- !ruby/object:Gem::Dependency
|
198
|
+
name: grpc-tools
|
199
|
+
requirement: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - "~>"
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 1.14.0
|
204
|
+
type: :development
|
205
|
+
prerelease: false
|
206
|
+
version_requirements: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - "~>"
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: 1.14.0
|
211
|
+
description: |
|
212
|
+
The New Relic Ruby agent requires the gem newrelic_rpm, and it includes distributed
|
213
|
+
tracing that uses head-based sampling (standard distributed tracing).
|
214
|
+
|
215
|
+
If you want distributed tracing to use tail-based sampling (Infinite Tracing),
|
216
|
+
you need to add both newrelic_rpm and newrelic-infinite_tracing to your application's
|
217
|
+
Gemfile. For more information, see: https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing
|
218
|
+
|
219
|
+
New Relic is a performance management system, developed by New Relic,
|
220
|
+
Inc (http://www.newrelic.com). New Relic provides you with deep
|
221
|
+
information about the performance of your web application as it runs
|
222
|
+
in production. The New Relic Ruby Agent is dual-purposed as a either a
|
223
|
+
Gem or plugin, hosted on https://github.com/newrelic/rpm/
|
224
|
+
email: support@newrelic.com
|
225
|
+
executables: []
|
226
|
+
extensions: []
|
227
|
+
extra_rdoc_files:
|
228
|
+
- CHANGELOG.md
|
229
|
+
- LICENSE
|
230
|
+
files:
|
231
|
+
- ".gitignore"
|
232
|
+
- CHANGELOG.md
|
233
|
+
- Gemfile
|
234
|
+
- LICENSE
|
235
|
+
- Rakefile
|
236
|
+
- lib/infinite_tracing.rb
|
237
|
+
- lib/infinite_tracing/agent_integrations.rb
|
238
|
+
- lib/infinite_tracing/agent_integrations/agent.rb
|
239
|
+
- lib/infinite_tracing/agent_integrations/datastore_segment.rb
|
240
|
+
- lib/infinite_tracing/agent_integrations/external_request_segment.rb
|
241
|
+
- lib/infinite_tracing/agent_integrations/segment.rb
|
242
|
+
- lib/infinite_tracing/channel.rb
|
243
|
+
- lib/infinite_tracing/client.rb
|
244
|
+
- lib/infinite_tracing/config.rb
|
245
|
+
- lib/infinite_tracing/connection.rb
|
246
|
+
- lib/infinite_tracing/constants.rb
|
247
|
+
- lib/infinite_tracing/proto.rb
|
248
|
+
- lib/infinite_tracing/proto/infinite_tracing_pb.rb
|
249
|
+
- lib/infinite_tracing/proto/infinite_tracing_services_pb.rb
|
250
|
+
- lib/infinite_tracing/record_status_handler.rb
|
251
|
+
- lib/infinite_tracing/streaming_buffer.rb
|
252
|
+
- lib/infinite_tracing/suspended_streaming_buffer.rb
|
253
|
+
- lib/infinite_tracing/transformer.rb
|
254
|
+
- lib/infinite_tracing/version.rb
|
255
|
+
- lib/infinite_tracing/worker.rb
|
256
|
+
- lib/new_relic/infinite_tracing.rb
|
257
|
+
- lib/newrelic/infinite_tracing.rb
|
258
|
+
- lib/proto/infinite_tracing.proto
|
259
|
+
- newrelic-infinite_tracing.gemspec
|
260
|
+
- tasks/all.rb
|
261
|
+
- tasks/proto.rake
|
262
|
+
homepage: https://github.com/newrelic/rpm/tree/master/infinite_tracing
|
263
|
+
licenses:
|
264
|
+
- New Relic
|
265
|
+
metadata:
|
266
|
+
bug_tracker_uri: https://support.newrelic.com/
|
267
|
+
changelog_uri: https://github.com/newrelic/rpm/blob/master/infinite_tracing/CHANGELOG.md
|
268
|
+
documentation_uri: https://docs.newrelic.com/docs/agents/ruby-agent
|
269
|
+
source_code_uri: https://github.com/newrelic/rpm
|
270
|
+
post_install_message:
|
271
|
+
rdoc_options: []
|
272
|
+
require_paths:
|
273
|
+
- lib
|
274
|
+
- infinite_tracing
|
275
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
276
|
+
requirements:
|
277
|
+
- - ">="
|
278
|
+
- !ruby/object:Gem::Version
|
279
|
+
version: 2.3.0
|
280
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
281
|
+
requirements:
|
282
|
+
- - ">"
|
283
|
+
- !ruby/object:Gem::Version
|
284
|
+
version: 1.3.1
|
285
|
+
requirements: []
|
286
|
+
rubygems_version: 3.0.6
|
287
|
+
signing_key:
|
288
|
+
specification_version: 4
|
289
|
+
summary: New Relic Infinite Tracing for the Ruby agent
|
290
|
+
test_files: []
|