zipkin-tracer 0.37.0 → 0.38.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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/CHANGELOG.md +3 -0
- data/README.md +9 -0
- data/lib/zipkin-tracer/config.rb +8 -1
- data/lib/zipkin-tracer/tracer_factory.rb +10 -0
- data/lib/zipkin-tracer/version.rb +1 -1
- data/lib/zipkin-tracer/zipkin_rabbit_mq_sender.rb +49 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05de91c3ee2300d261bd19d481b4fe602e818f48ddce33294791543c04579f20
|
4
|
+
data.tar.gz: 883b5cc753bae954ab8fe432975a40899f617a0771b7352adfefffbc8cb1b0df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0c80c681f43960a95f03c28e34b506d7bf7161fd7b0c5d6ae185a8295ff31782ff99abcb6a43adf0a2053909200cd4f36808122c8e2bf3e20d13d946b4461f3
|
7
|
+
data.tar.gz: 743a4f9c0274c51beab9532cb6603d66499568ecc6c7fde0327fa72786be792653b45b333de970ec78285f2e367ee76d59489f27822d156d78e92d07f7eb20f5
|
data/.travis.yml
CHANGED
@@ -20,8 +20,8 @@ deploy:
|
|
20
20
|
notifications:
|
21
21
|
webhooks:
|
22
22
|
urls:
|
23
|
-
- https://webhooks.gitter.im/e/
|
23
|
+
- https://webhooks.gitter.im/e/ead3c37d57527214e9f2
|
24
|
+
- https://webhooks.gitter.im/e/e57478303f87ecd7bffc
|
24
25
|
on_success: change
|
25
26
|
on_failure: always
|
26
|
-
on_start: false
|
27
27
|
script: "bundle exec rspec"
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -30,6 +30,9 @@ use ZipkinTracer::RackHandler, config
|
|
30
30
|
* `:zookeeper` - The address of the zookeeper server to use by the Kafka sender
|
31
31
|
* `:sqs_queue_name` - The name of the Amazon SQS queue to use the SQS sender
|
32
32
|
* `:sqs_region` - The AWS region for the Amazon SQS queue (optional)
|
33
|
+
* `:rabbit_mq_connection` - The bunny connection to be used by the RabbitMQ sender
|
34
|
+
* `:rabbit_mq_exchange` - The name of the exchange to be used by the RabbitMQ sender (optional)
|
35
|
+
* `:rabbit_mq_routing_key` - The name of the routing key to be used by the RabbitMQ sender (optional)
|
33
36
|
* `:log_tracing` - Set to true to log all traces. Only used if traces are not sent to the API or Kafka.
|
34
37
|
|
35
38
|
#### Plugins
|
@@ -142,6 +145,12 @@ The following [Amazon SQS permissions](https://docs.aws.amazon.com/AWSSimpleQueu
|
|
142
145
|
|
143
146
|
Optionally, you can set `:sqs_region` to specify the AWS region to connect to.
|
144
147
|
|
148
|
+
### RabbitMQ
|
149
|
+
Uses RabbitMQ as the transport
|
150
|
+
|
151
|
+
If `:rabbit_mq_connection` is set in the config, then the gem will use RabbitMQ. You will need to pass a [Bunny](https://github.com/ruby-amqp/bunny) connection.
|
152
|
+
You can optionally set the exchange name and routing key using `:rabbit_mq_exchange` and `:rabbit_mq_routing_key`
|
153
|
+
|
145
154
|
### Logger
|
146
155
|
|
147
156
|
The simplest sender that does something. It will log all your spans.
|
data/lib/zipkin-tracer/config.rb
CHANGED
@@ -7,7 +7,8 @@ module ZipkinTracer
|
|
7
7
|
class Config
|
8
8
|
attr_reader :service_name, :sample_rate, :sampled_as_boolean, :trace_id_128bit, :async, :logger,
|
9
9
|
:json_api_host, :zookeeper, :kafka_producer, :kafka_topic, :sqs_queue_name, :sqs_region, :log_tracing,
|
10
|
-
:annotate_plugin, :filter_plugin, :whitelist_plugin
|
10
|
+
:annotate_plugin, :filter_plugin, :whitelist_plugin, :rabbit_mq_connection, :rabbit_mq_exchange,
|
11
|
+
:rabbit_mq_routing_key
|
11
12
|
|
12
13
|
def initialize(app, config_hash)
|
13
14
|
config = config_hash || Application.config(app)
|
@@ -23,6 +24,10 @@ module ZipkinTracer
|
|
23
24
|
# Amazon SQS queue information
|
24
25
|
@sqs_queue_name = config[:sqs_queue_name]
|
25
26
|
@sqs_region = config[:sqs_region]
|
27
|
+
# Rabbit MQ information
|
28
|
+
@rabbit_mq_connection = config[:rabbit_mq_connection]
|
29
|
+
@rabbit_mq_exchange = config[:rabbit_mq_exchange]
|
30
|
+
@rabbit_mq_routing_key = config[:rabbit_mq_routing_key]
|
26
31
|
# Percentage of traces which by default this service traces (as float, 1.0 means 100%)
|
27
32
|
@sample_rate = config[:sample_rate] || DEFAULTS[:sample_rate]
|
28
33
|
# A block of code which can be called to do extra annotations of traces
|
@@ -66,6 +71,8 @@ module ZipkinTracer
|
|
66
71
|
:kafka_producer
|
67
72
|
elsif present?(@sqs_queue_name) && defined?(Aws::SQS)
|
68
73
|
:sqs
|
74
|
+
elsif @rabbit_mq_connection
|
75
|
+
:rabbit_mq
|
69
76
|
elsif !!@log_tracing
|
70
77
|
:logger
|
71
78
|
else
|
@@ -25,6 +25,16 @@ module ZipkinTracer
|
|
25
25
|
region: config.sqs_region
|
26
26
|
}
|
27
27
|
Trace::ZipkinSqsSender.new(options)
|
28
|
+
when :rabbit_mq
|
29
|
+
require 'zipkin-tracer/zipkin_rabbit_mq_sender'
|
30
|
+
options = {
|
31
|
+
rabbit_mq_connection: config.rabbit_mq_connection,
|
32
|
+
rabbit_mq_exchange: config.rabbit_mq_exchange,
|
33
|
+
rabbit_mq_routing_key: config.rabbit_mq_routing_key,
|
34
|
+
async: config.async,
|
35
|
+
logger: config.logger
|
36
|
+
}
|
37
|
+
Trace::ZipkinRabbitMqSender.new(options)
|
28
38
|
when :logger
|
29
39
|
require 'zipkin-tracer/zipkin_logger_sender'
|
30
40
|
Trace::ZipkinLoggerSender.new(logger: config.logger)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'sucker_punch'
|
3
|
+
require 'zipkin-tracer/zipkin_sender_base'
|
4
|
+
require 'zipkin-tracer/hostname_resolver'
|
5
|
+
|
6
|
+
module Trace
|
7
|
+
class RabbitMqPublisher
|
8
|
+
include SuckerPunch::Job
|
9
|
+
|
10
|
+
def perform(exchange, routing_key, spans)
|
11
|
+
spans_with_ips = ::ZipkinTracer::HostnameResolver.new
|
12
|
+
.spans_with_ips(spans, ZipkinRabbitMqSender::IP_FORMAT)
|
13
|
+
.map(&:to_h)
|
14
|
+
|
15
|
+
message = JSON.generate(spans_with_ips)
|
16
|
+
|
17
|
+
exchange.publish(message, routing_key: routing_key)
|
18
|
+
rescue => e
|
19
|
+
SuckerPunch.logger.error(e)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# This class sends information to the Zipkin RabbitMQ Collector.
|
24
|
+
class ZipkinRabbitMqSender < ZipkinSenderBase
|
25
|
+
IP_FORMAT = :string
|
26
|
+
DEFAULT_EXCHANGE = ''
|
27
|
+
DEAFULT_ROUTING_KEY = 'zipkin'
|
28
|
+
|
29
|
+
def initialize(options)
|
30
|
+
connection = options[:rabbit_mq_connection]
|
31
|
+
channel = connection.create_channel
|
32
|
+
exchange_name = options[:rabbit_mq_exchange] || DEFAULT_EXCHANGE
|
33
|
+
@routing_key = options[:rabbit_mq_routing_key] || DEAFULT_ROUTING_KEY
|
34
|
+
@exchange = channel.exchange(exchange_name)
|
35
|
+
@async = options[:async] != false
|
36
|
+
SuckerPunch.logger = options[:logger]
|
37
|
+
|
38
|
+
super(options)
|
39
|
+
end
|
40
|
+
|
41
|
+
def flush!
|
42
|
+
if @async
|
43
|
+
RabbitMqPublisher.perform_async(@exchange, @routing_key, spans.dup)
|
44
|
+
else
|
45
|
+
RabbitMqPublisher.new.perform(@exchange, @routing_key, spans)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipkin-tracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.38.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franklin Hu
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2019-
|
17
|
+
date: 2019-07-16 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: faraday
|
@@ -229,6 +229,7 @@ files:
|
|
229
229
|
- lib/zipkin-tracer/zipkin_kafka_sender.rb
|
230
230
|
- lib/zipkin-tracer/zipkin_logger_sender.rb
|
231
231
|
- lib/zipkin-tracer/zipkin_null_sender.rb
|
232
|
+
- lib/zipkin-tracer/zipkin_rabbit_mq_sender.rb
|
232
233
|
- lib/zipkin-tracer/zipkin_sender_base.rb
|
233
234
|
- lib/zipkin-tracer/zipkin_sqs_sender.rb
|
234
235
|
- zipkin-tracer.gemspec
|
@@ -253,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
254
|
- !ruby/object:Gem::Version
|
254
255
|
version: '0'
|
255
256
|
requirements: []
|
256
|
-
rubygems_version: 3.0.
|
257
|
+
rubygems_version: 3.0.4
|
257
258
|
signing_key:
|
258
259
|
specification_version: 4
|
259
260
|
summary: Ruby tracing via Zipkin
|