opencensus-datadog 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +49 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/opencensus-datadog.rb +1 -0
- data/lib/opencensus/datadog.rb +10 -0
- data/lib/opencensus/datadog/version.rb +5 -0
- data/lib/opencensus/trace/exporters/datadog.rb +70 -0
- data/lib/opencensus/trace/exporters/datadog/buffer.rb +48 -0
- data/lib/opencensus/trace/exporters/datadog/converter.rb +120 -0
- data/lib/opencensus/trace/exporters/datadog/transport.rb +53 -0
- data/lib/opencensus/trace/exporters/datadog/worker.rb +81 -0
- data/opencensus-datadog.gemspec +31 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cb0b07845e74c490ca55bd81add0a808dd3fc5b5a717a8844a137cebb5611e75
|
4
|
+
data.tar.gz: 1c296eb88966fff0781a7438ca6568467a58679d701100ca217a7b990fb0fc89
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ada9d34c361eb95691cd0c5b84de0ea0739c31288dbd39dc1b4e7b387dd33dd020debd9e1134f3261ae13da24a5be8ecf7539b69c3a20e02ef287824ee00413c
|
7
|
+
data.tar.gz: 6cd7dbbd48d9b1ca8b06b9b62ad1d9d6467dc4a929a7aab190e0782f12f305673b0d86d88016f9106eb14472ddd97c27cadf13f330bacd7b2cc98efdfd4a1a2f
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 munisystem
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Ruby Datadog APM Exporter for OpenCensus
|
2
|
+
|
3
|
+
This library is the implementation of [OpenCensus](https://census-instrumentation/opencensus-ruby) exporter that transfer metrics to [Datadog APM](https://www.datadoghq.com/apm/).
|
4
|
+
It is depending on Datadog Agent v6.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add `opencensus-datadog` to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'opencensus-datadog'
|
12
|
+
```
|
13
|
+
|
14
|
+
And install the gem using Bundler:
|
15
|
+
|
16
|
+
```shell
|
17
|
+
$ bundle install
|
18
|
+
```
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
Register this gem using OpenCensus configuration:
|
23
|
+
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
OpenCensus.configure do |c|
|
27
|
+
c.trace.exporter = OpenCensus::Trace::Integrations::Datadog.new
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
You can also use the following code if using Ruby on Rails:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
config.opencensus.trace.exporter = OpenCensus::Trace::Integrations::Datadog.new
|
35
|
+
```
|
36
|
+
|
37
|
+
By default, this gem sends metrics to the Datadog Agent at `http://localhost:8126`. You can send to different host or port.
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
OpenCensus.configure do |c|
|
41
|
+
c.trace.exporter = OpenCensus::Trace::Integrations::Datadog.new \
|
42
|
+
agent_hostname: '192.168.1.1',
|
43
|
+
agent_port: '1234'
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
## License
|
48
|
+
|
49
|
+
This project is releases under the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "opencensus/datadog"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'opencensus/datadog'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
require 'opencensus/trace/exporters/datadog/transport'
|
4
|
+
require 'opencensus/trace/exporters/datadog/worker'
|
5
|
+
require 'opencensus/trace/exporters/datadog/converter'
|
6
|
+
require 'opencensus/trace/exporters/datadog/buffer'
|
7
|
+
|
8
|
+
module OpenCensus
|
9
|
+
module Trace
|
10
|
+
module Exporters
|
11
|
+
class Datadog
|
12
|
+
DEFAULT_SERVICE = 'opencensus-app'.freeze
|
13
|
+
|
14
|
+
def self.log
|
15
|
+
unless defined? @logger
|
16
|
+
@logger = Logger.new(STDOUT)
|
17
|
+
@logger.level = Logger::WARN
|
18
|
+
end
|
19
|
+
@logger
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(options = {})
|
23
|
+
# create HTTP client for sending spans do Datadog Agent
|
24
|
+
agent_hostname = options.fetch(:agent_hostname, nil)
|
25
|
+
port = options.fetch(:port, nil)
|
26
|
+
@transport = Transport.new(agent_hostname, port)
|
27
|
+
|
28
|
+
# worker parameters
|
29
|
+
@max_buffer_size = options.fetch(:buffer_size, 1000)
|
30
|
+
@flush_interval = options.fetch(:flush_interval, 1)
|
31
|
+
|
32
|
+
# traces metadata
|
33
|
+
@service_name = options.fetch(:service, DEFAULT_SERVICE)
|
34
|
+
|
35
|
+
# each processes have one worker thread
|
36
|
+
@mutex_after_fork = Mutex.new
|
37
|
+
@pid = nil
|
38
|
+
@worker = nil
|
39
|
+
end
|
40
|
+
|
41
|
+
def start
|
42
|
+
@pid = Process.pid
|
43
|
+
@worker = Worker.new(@transport, @max_buffer_size, @flush_interval, @service_name)
|
44
|
+
@worker.start()
|
45
|
+
end
|
46
|
+
|
47
|
+
def shutdown!
|
48
|
+
return if @worker.nil?
|
49
|
+
@worker.stop
|
50
|
+
end
|
51
|
+
|
52
|
+
def export(spans)
|
53
|
+
return nil if spans.nil? || spans.empty?
|
54
|
+
|
55
|
+
# create worker thread if not exist in this process
|
56
|
+
pid = Process.pid
|
57
|
+
if pid != @pid
|
58
|
+
@mutex_after_fork.synchronize do
|
59
|
+
start() if pid != @pid
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
spans.each do |span|
|
64
|
+
@worker.enqueue(span)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module OpenCensus
|
2
|
+
module Trace
|
3
|
+
module Exporters
|
4
|
+
class Datadog
|
5
|
+
class SpanBuffer
|
6
|
+
def initialize(max_size)
|
7
|
+
@max_size = max_size
|
8
|
+
@spans = []
|
9
|
+
@mutex = Mutex.new()
|
10
|
+
@closed = false
|
11
|
+
end
|
12
|
+
|
13
|
+
def push(span)
|
14
|
+
@mutex.synchronize do
|
15
|
+
return if @closed
|
16
|
+
len = @spans.length
|
17
|
+
if len < @max_size || @max_size <= 0
|
18
|
+
return @spans << span
|
19
|
+
else
|
20
|
+
Datadog.log.error("[datadog-exporter] failed to write span into buffer due to exceeding by max buffer size")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def empty?
|
26
|
+
@mutex.synchronize do
|
27
|
+
return @spans.empty?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def pop
|
32
|
+
@mutex.synchronize do
|
33
|
+
spans = @spans
|
34
|
+
@spans = []
|
35
|
+
return spans
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def close
|
40
|
+
@mutex.synchronize do
|
41
|
+
@closed = true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'opencensus'
|
2
|
+
require 'ddtrace/ext/distributed'
|
3
|
+
require 'ddtrace/ext/priority'
|
4
|
+
require 'ddtrace/ext/errors'
|
5
|
+
|
6
|
+
module OpenCensus
|
7
|
+
module Trace
|
8
|
+
module Exporters
|
9
|
+
class Datadog
|
10
|
+
class Converter
|
11
|
+
|
12
|
+
DATADOG_MAX_TRACE_ID = 0xffff_ffff_ffff_ffff
|
13
|
+
|
14
|
+
DATADOG_SPAN_TYPE_KEY = 'span.type'.freeze
|
15
|
+
DATADOG_SERVICE_NAME_KEY = 'service.name'.freeze
|
16
|
+
DATADOG_RESOURCE_NAME_KEY = 'resource.name'.freeze
|
17
|
+
DATADOG_SAMPLING_PRIORITY_KEY = ::Datadog::Ext::DistributedTracing::SAMPLING_PRIORITY_KEY
|
18
|
+
|
19
|
+
STATUS_DESCRIPTION_KEY = 'opencensus.status_description'.freeze
|
20
|
+
|
21
|
+
CANONICAL_CODES = [
|
22
|
+
'ok',
|
23
|
+
'cancelled',
|
24
|
+
'unknown',
|
25
|
+
'invalid_argument',
|
26
|
+
'deadline_exceeded',
|
27
|
+
'not_found',
|
28
|
+
'already_exists',
|
29
|
+
'permission_denied',
|
30
|
+
'resource_exhausted',
|
31
|
+
'failed_precondition',
|
32
|
+
'aborted',
|
33
|
+
'out_of_range',
|
34
|
+
'unimplemented',
|
35
|
+
'internal',
|
36
|
+
'unavailable',
|
37
|
+
'data_loss',
|
38
|
+
'unauthenticated'
|
39
|
+
]
|
40
|
+
|
41
|
+
def initialize(service)
|
42
|
+
@service = service
|
43
|
+
end
|
44
|
+
|
45
|
+
def convert_span(span)
|
46
|
+
dd_span = {
|
47
|
+
span_id: span.span_id.to_i(16),
|
48
|
+
parent_id: span.parent_span_id.to_i(16),
|
49
|
+
trace_id: (span.trace_id.to_i(16) & DATADOG_MAX_TRACE_ID),
|
50
|
+
name: span.name.to_s,
|
51
|
+
service: @service,
|
52
|
+
resource: span.name.to_s,
|
53
|
+
type: span_type(span.kind.to_s),
|
54
|
+
meta: {},
|
55
|
+
metrics: {},
|
56
|
+
error: 0,
|
57
|
+
start: (span.start_time.to_f * 1e9).to_i,
|
58
|
+
duration: ((span.end_time.to_f - span.start_time.to_f) * 1e9).to_i,
|
59
|
+
}
|
60
|
+
|
61
|
+
dd_span[:metrics][DATADOG_SAMPLING_PRIORITY_KEY] = ::Datadog::Ext::Priority::AUTO_KEEP
|
62
|
+
|
63
|
+
convert_status(dd_span, span.status)
|
64
|
+
|
65
|
+
span.attributes.each do |k, v|
|
66
|
+
case v
|
67
|
+
when Integer
|
68
|
+
if k == DATADOG_SAMPLING_PRIORITY_KEY
|
69
|
+
dd_span[:metrics][DATADOG_SAMPLING_PRIORITY_KEY] = v
|
70
|
+
else
|
71
|
+
dd_span[:metrics][k] = v
|
72
|
+
end
|
73
|
+
when ::OpenCensus::Trace::TruncatableString
|
74
|
+
case k
|
75
|
+
when DATADOG_SPAN_TYPE_KEY
|
76
|
+
dd_span[:type] = v.to_s
|
77
|
+
when DATADOG_SERVICE_NAME_KEY
|
78
|
+
dd_span[:service] = v.to_s
|
79
|
+
when DATADOG_RESOURCE_NAME_KEY
|
80
|
+
dd_span[:resource] = v.to_s
|
81
|
+
else
|
82
|
+
dd_span[:meta][k] = v.to_s
|
83
|
+
end
|
84
|
+
else
|
85
|
+
dd_span[:meta][k] = v.to_s
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
dd_span
|
90
|
+
end
|
91
|
+
|
92
|
+
def convert_status(dd_span, status)
|
93
|
+
status_key = STATUS_DESCRIPTION_KEY
|
94
|
+
return if status.nil?
|
95
|
+
if status.code != 0 then
|
96
|
+
status_key = ::Datadog::Ext::Errors::MSG
|
97
|
+
dd_span[:error] = 1
|
98
|
+
code = status.code.to_i
|
99
|
+
return if code < 0 || code >= CANONICAL_CODES.length
|
100
|
+
dd_span[:meta][status_key] = CANONICAL_CODES[code]
|
101
|
+
end
|
102
|
+
dd_span[:meta][status_key] = status.message.to_s unless status.message.empty?
|
103
|
+
return
|
104
|
+
end
|
105
|
+
|
106
|
+
def span_type(kind)
|
107
|
+
case kind
|
108
|
+
when OpenCensus::Trace::Span::SERVER
|
109
|
+
'server'
|
110
|
+
when OpenCensus::Trace::Span::CLIENT
|
111
|
+
'client'
|
112
|
+
else
|
113
|
+
''
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
module OpenCensus
|
4
|
+
module Trace
|
5
|
+
module Exporters
|
6
|
+
class Datadog
|
7
|
+
class Transport
|
8
|
+
DEFAULT_HOSTNAME = '127.0.0.1'.freeze
|
9
|
+
DEFAULT_PORT = '8126'.freeze
|
10
|
+
|
11
|
+
TRACE_ENDPOINT = '/v0.4/traces'.freeze
|
12
|
+
TIMEOUT = 5
|
13
|
+
|
14
|
+
TRACE_COUNT_HEADER = 'X-Datadog-Trace-Count'.freeze
|
15
|
+
RUBY_INTERPRETER = RUBY_VERSION > '1.9' ? RUBY_ENGINE + '-' + RUBY_PLATFORM : 'ruby-' + RUBY_PLATFORM
|
16
|
+
TRACER_VERSION = 'OC/' + OpenCensus::Datadog::VERSION
|
17
|
+
|
18
|
+
def initialize(hostname, port)
|
19
|
+
@hostname = hostname.nil? ? DEFAULT_HOSTNAME : hostname
|
20
|
+
@port = port.nil? ? DEFAULT_PORT : port
|
21
|
+
|
22
|
+
@headers = {}
|
23
|
+
@headers['Datadog-Meta-Lang'] = 'ruby'
|
24
|
+
@headers['Datadog-Meta-Lang-Version'] = RUBY_VERSION
|
25
|
+
@headers['Datadog-Meta-Lang-Interpreter'] = RUBY_INTERPRETER
|
26
|
+
@headers['Datadog-Meta-Tracer-Version'] = TRACER_VERSION
|
27
|
+
@headers['Content-Type'] = 'application/msgpack'
|
28
|
+
end
|
29
|
+
|
30
|
+
def upload(data, count = nil)
|
31
|
+
begin
|
32
|
+
headers = count.nil? ? {} : { TRACE_COUNT_HEADER => count.to_s }
|
33
|
+
headers = headers.merge(@headers)
|
34
|
+
request = Net::HTTP::Post.new(TRACE_ENDPOINT, headers)
|
35
|
+
request.body = data
|
36
|
+
|
37
|
+
response = Net::HTTP.start(@hostname, @port, read_timeout: TIMEOUT) { |http| http.request(request) }
|
38
|
+
|
39
|
+
status_code = response.code.to_i
|
40
|
+
if status_code >= 400 then
|
41
|
+
Datadog.log.error("[daatadog-exporter] #{response.message} (status: #{status_code})")
|
42
|
+
end
|
43
|
+
status_code
|
44
|
+
rescue StandardError => e
|
45
|
+
Datadog.log.error("[daatadog-exporter] failed HTTP request to agent: #{e.message}")
|
46
|
+
500
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'msgpack'
|
2
|
+
|
3
|
+
module OpenCensus
|
4
|
+
module Trace
|
5
|
+
module Exporters
|
6
|
+
class Datadog
|
7
|
+
class Worker
|
8
|
+
|
9
|
+
SHUTDOWN_TIMEOUT = 1
|
10
|
+
|
11
|
+
def initialize(transport, max_buffer_size, flush_interval, service_name)
|
12
|
+
@transport = transport
|
13
|
+
@flush_interval = flush_interval
|
14
|
+
@span_buffer = SpanBuffer.new(max_buffer_size)
|
15
|
+
@converter = Converter.new(service_name)
|
16
|
+
@shutdown = ConditionVariable.new
|
17
|
+
@mutex = Mutex.new
|
18
|
+
|
19
|
+
@worker = nil
|
20
|
+
@run = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def callback_spans
|
24
|
+
return if @span_buffer.empty?
|
25
|
+
|
26
|
+
begin
|
27
|
+
spans = @span_buffer.pop()
|
28
|
+
hash = Hash.new { |h, k| h[k] = [] }
|
29
|
+
spans.each do |span|
|
30
|
+
dd_span = @converter.convert_span(span)
|
31
|
+
hash[dd_span[:trace_id]] << dd_span
|
32
|
+
end
|
33
|
+
traces = hash.map {|key,value| value}
|
34
|
+
count = traces.length
|
35
|
+
@transport.upload(MessagePack.pack(traces), count)
|
36
|
+
rescue StandardError => e
|
37
|
+
Datadog.log.error("[daatadog-exporter] failed to flush spans: #{e}")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def start
|
42
|
+
@mutex.synchronize do
|
43
|
+
return if @run
|
44
|
+
@run = true
|
45
|
+
@worker = Thread.new { perform }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def stop
|
50
|
+
@mutex.synchronize do
|
51
|
+
return unless @run
|
52
|
+
@span_buffer.close
|
53
|
+
@run = false
|
54
|
+
@shutdown.signal
|
55
|
+
end
|
56
|
+
join
|
57
|
+
true
|
58
|
+
end
|
59
|
+
|
60
|
+
def join
|
61
|
+
@worker.join(SHUTDOWN_TIMEOUT)
|
62
|
+
end
|
63
|
+
|
64
|
+
def perform
|
65
|
+
loop do
|
66
|
+
callback_spans
|
67
|
+
@mutex.synchronize do
|
68
|
+
return if !@run && @span_buffer.empty?
|
69
|
+
@shutdown.wait(@mutex, @flush_interval) if @run
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def enqueue(span)
|
75
|
+
@span_buffer.push(span)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "opencensus/datadog/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "opencensus-datadog"
|
8
|
+
spec.version = OpenCensus::Datadog::VERSION
|
9
|
+
spec.authors = ["Yuichi Saito"]
|
10
|
+
spec.email = ["munisystem@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = "Datadog APM exporter for OpenCensus"
|
13
|
+
spec.description = "Datadog APM exporter for OpenCensus"
|
14
|
+
spec.homepage = "https://github.com/munisystem/opencensus-datadog"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
18
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_dependency 'msgpack'
|
25
|
+
spec.add_dependency 'opencensus'
|
26
|
+
spec.add_dependency 'ddtrace'
|
27
|
+
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
29
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opencensus-datadog
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yuichi Saito
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-09-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: msgpack
|
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: opencensus
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ddtrace
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.16'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.16'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
description: Datadog APM exporter for OpenCensus
|
98
|
+
email:
|
99
|
+
- munisystem@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- bin/console
|
112
|
+
- bin/setup
|
113
|
+
- lib/opencensus-datadog.rb
|
114
|
+
- lib/opencensus/datadog.rb
|
115
|
+
- lib/opencensus/datadog/version.rb
|
116
|
+
- lib/opencensus/trace/exporters/datadog.rb
|
117
|
+
- lib/opencensus/trace/exporters/datadog/buffer.rb
|
118
|
+
- lib/opencensus/trace/exporters/datadog/converter.rb
|
119
|
+
- lib/opencensus/trace/exporters/datadog/transport.rb
|
120
|
+
- lib/opencensus/trace/exporters/datadog/worker.rb
|
121
|
+
- opencensus-datadog.gemspec
|
122
|
+
homepage: https://github.com/munisystem/opencensus-datadog
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.7.3
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Datadog APM exporter for OpenCensus
|
146
|
+
test_files: []
|