jaeger-client 0.7.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.rubocop.yml +3 -0
  4. data/.travis.yml +11 -2
  5. data/Makefile +1 -0
  6. data/README.md +127 -13
  7. data/crossdock/Dockerfile +29 -0
  8. data/crossdock/Gemfile +6 -0
  9. data/crossdock/Gemfile.lock +35 -0
  10. data/crossdock/docker-compose.yml +68 -0
  11. data/crossdock/jaeger-docker-compose.yml +48 -0
  12. data/crossdock/rules.mk +35 -0
  13. data/crossdock/server +173 -0
  14. data/jaeger-client.gemspec +4 -2
  15. data/lib/jaeger/client.rb +42 -18
  16. data/lib/jaeger/client/version.rb +1 -1
  17. data/lib/jaeger/encoders/thrift_encoder.rb +142 -0
  18. data/lib/jaeger/extractors.rb +173 -0
  19. data/lib/jaeger/http_sender.rb +28 -0
  20. data/lib/jaeger/injectors.rb +83 -0
  21. data/lib/jaeger/rate_limiter.rb +61 -0
  22. data/lib/jaeger/recurring_executor.rb +35 -0
  23. data/lib/jaeger/reporters.rb +7 -0
  24. data/lib/jaeger/reporters/composite_reporter.rb +17 -0
  25. data/lib/jaeger/reporters/in_memory_reporter.rb +30 -0
  26. data/lib/jaeger/reporters/logging_reporter.rb +22 -0
  27. data/lib/jaeger/reporters/null_reporter.rb +11 -0
  28. data/lib/jaeger/{client/async_reporter.rb → reporters/remote_reporter.rb} +21 -20
  29. data/lib/jaeger/{client/async_reporter → reporters/remote_reporter}/buffer.rb +2 -2
  30. data/lib/jaeger/samplers.rb +8 -0
  31. data/lib/jaeger/samplers/const.rb +24 -0
  32. data/lib/jaeger/samplers/guaranteed_throughput_probabilistic.rb +47 -0
  33. data/lib/jaeger/samplers/per_operation.rb +79 -0
  34. data/lib/jaeger/samplers/probabilistic.rb +38 -0
  35. data/lib/jaeger/samplers/rate_limiting.rb +51 -0
  36. data/lib/jaeger/samplers/remote_controlled.rb +119 -0
  37. data/lib/jaeger/samplers/remote_controlled/instructions_fetcher.rb +34 -0
  38. data/lib/jaeger/scope.rb +38 -0
  39. data/lib/jaeger/scope_manager.rb +47 -0
  40. data/lib/jaeger/scope_manager/scope_identifier.rb +13 -0
  41. data/lib/jaeger/scope_manager/scope_stack.rb +33 -0
  42. data/lib/jaeger/span.rb +97 -0
  43. data/lib/jaeger/span/thrift_log_builder.rb +18 -0
  44. data/lib/jaeger/span_context.rb +57 -0
  45. data/lib/jaeger/thrift_tag_builder.rb +41 -0
  46. data/lib/jaeger/trace_id.rb +48 -0
  47. data/lib/jaeger/tracer.rb +213 -0
  48. data/lib/jaeger/udp_sender.rb +26 -0
  49. data/lib/jaeger/udp_sender/transport.rb +40 -0
  50. metadata +78 -31
  51. data/lib/jaeger/client/carrier.rb +0 -26
  52. data/lib/jaeger/client/encoders/thrift_encoder.rb +0 -94
  53. data/lib/jaeger/client/extractors.rb +0 -88
  54. data/lib/jaeger/client/http_sender.rb +0 -30
  55. data/lib/jaeger/client/injectors.rb +0 -54
  56. data/lib/jaeger/client/samplers.rb +0 -4
  57. data/lib/jaeger/client/samplers/const.rb +0 -29
  58. data/lib/jaeger/client/samplers/probabilistic.rb +0 -30
  59. data/lib/jaeger/client/scope.rb +0 -40
  60. data/lib/jaeger/client/scope_manager.rb +0 -49
  61. data/lib/jaeger/client/scope_manager/scope_identifier.rb +0 -15
  62. data/lib/jaeger/client/scope_manager/scope_stack.rb +0 -35
  63. data/lib/jaeger/client/span.rb +0 -84
  64. data/lib/jaeger/client/span/thrift_log_builder.rb +0 -20
  65. data/lib/jaeger/client/span/thrift_tag_builder.rb +0 -45
  66. data/lib/jaeger/client/span_context.rb +0 -59
  67. data/lib/jaeger/client/trace_id.rb +0 -41
  68. data/lib/jaeger/client/tracer.rb +0 -189
  69. data/lib/jaeger/client/udp_sender.rb +0 -27
  70. data/lib/jaeger/client/udp_sender/transport.rb +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 447a7b165ab77c10cd4d758f2e1ba0328251d9fd143966f406dd0a726d8c2ce0
4
- data.tar.gz: 6fce14b5c113ef4ad60e917d5085ecead91f00ce2a6baaf05878026f2ff04bcb
3
+ metadata.gz: 042e36b2c3502fb1fe7f8c0d42bd1e5130a3adc2d1bce002c466fc0374c4d6c6
4
+ data.tar.gz: a95a574d111ecdd1625bd760603dba7b766b748608a77ddba6c4ada33a94e4aa
5
5
  SHA512:
6
- metadata.gz: fc5eac14ee4471ac96daec09e5a5bd84a9e9ef86133480339d91e7490bc13b82fa127d3421036fc22c41c0dc49542cef5a6327c8fbab88f17b7bce3a117ee880
7
- data.tar.gz: b4df5beac2b6ff98ee6153e802edebc352de7b872105c9be332ddf5ad34b4818fce489aa987800f88f211505750146cd083d58709058b6d9d8204c6902a94447
6
+ metadata.gz: 6d63a549e13b8ca7779860c6f5dab455894690efe49ad2d6c5beb85ddf0775bbedf5c4030ba8fa6e2062cf5cf627507cc49c46e1faa0ee886edfaff480b578d0
7
+ data.tar.gz: af363f9831e2219053d260a9d120cebfc6bec8fa90d5b236351051a48c70203531a62a63783b9cf99417449e9762197462177c57f8f183340db5bd7755582af9
@@ -0,0 +1,3 @@
1
+ [submodule "idl"]
2
+ path = idl
3
+ url = https://github.com/jaegertracing/jaeger-idl.git
@@ -48,3 +48,6 @@ Style/FrozenStringLiteralComment:
48
48
 
49
49
  Metrics/LineLength:
50
50
  Max: 120
51
+
52
+ Style/SingleLineMethods:
53
+ Enabled: false
@@ -1,5 +1,14 @@
1
1
  sudo: false
2
+
2
3
  language: ruby
3
4
  rvm:
4
- - 2.4.0
5
- before_install: gem install bundler -v 1.14.4
5
+ - 2.5.0
6
+
7
+ services:
8
+ - docker
9
+
10
+ before_install: gem install bundler -v 1.17.2
11
+
12
+ script:
13
+ - bundle exec rake
14
+ - make crossdock
@@ -0,0 +1 @@
1
+ -include crossdock/rules.mk
data/README.md CHANGED
@@ -28,29 +28,129 @@ OpenTracing.start_active_span('span name') do
28
28
  end
29
29
  ```
30
30
 
31
- The tracer can also take an externally configured sender. For example, the `HttpSender` can be configured with a different endpoint and headers for authentication.
31
+ See [opentracing-ruby](https://github.com/opentracing/opentracing-ruby) for more examples.
32
+
33
+ ### Reporters
34
+
35
+ #### RemoteReporter (default)
36
+
37
+ RemoteReporter buffers spans in memory and sends them out of process using Sender.
38
+
39
+ There are two senders: `UdpSender` (default) and `HttpSender`.
40
+
41
+ To use `HttpSender`:
42
+
32
43
  ```ruby
33
- require 'jaeger/client'
34
- require 'jaeger/client/http_sender'
44
+ OpenTracing.global_tracer = Jaeger::Client.build(
45
+ service_name: 'service_name',
46
+ reporter: Jaeger::Reporters::RemoteReporter.new(
47
+ sender: Jaeger::HttpSender.new(
48
+ url: 'http://localhost:14268/api/traces',
49
+ headers: { 'key' => 'value' }, # headers key is optional
50
+ encoder: Jaeger::Encoders::ThriftEncoder.new(service_name: 'service_name')
51
+ ),
52
+ flush_interval: 10
53
+ )
54
+ )
55
+ ```
56
+
57
+ #### NullReporter
35
58
 
36
- headers = { "auth_token" => token }
37
- encoder = Jaeger::Client::Encoders::ThriftEncoder.new(service_name: "service_name")
38
- sender = Jaeger::Client::HttpSender.new(url: "http://localhost:14268/api/traces", headers: headers, encoder: encoder)
59
+ NullReporter ignores all spans.
39
60
 
40
- OpenTracing.global_tracer = Jaeger::Client.build(service_name: "service_name", sender: sender)
61
+ ```ruby
62
+ OpenTracing.global_tracer = Jaeger::Client.build(
63
+ service_name: 'service_name',
64
+ reporter: Jaeger::Reporters::NullReporter.new
65
+ )
41
66
  ```
42
67
 
43
- See [opentracing-ruby](https://github.com/opentracing/opentracing-ruby) for more examples.
68
+ #### LoggingReporter
69
+
70
+ LoggingReporter prints some details about the span using `logger`. This is meant only for debugging. Do not parse and use this information for anything critical. The implemenation can change at any time.
71
+
72
+ ```ruby
73
+ OpenTracing.global_tracer = Jaeger::Client.build(
74
+ service_name: 'service_name',
75
+ reporter: Jaeger::Reporters::LoggingReporter.new
76
+ )
77
+ ```
78
+
79
+ LoggingReporter can also use a custom logger. For this provide logger using `logger` keyword argument.
44
80
 
45
81
  ### Samplers
46
82
 
47
83
  #### Const sampler
48
84
 
49
- `Const` sampler always makes the same decision for new traces depending on the initialization value. Set `sampler` to: `Jaeger::Client::Samplers::Const.new(true)` to mark all new traces as sampled.
85
+ `Const` sampler always makes the same decision for new traces depending on the initialization value. Set `sampler` to: `Jaeger::Samplers::Const.new(true)` to mark all new traces as sampled.
50
86
 
51
87
  #### Probabilistic sampler
52
88
 
53
- `Probabilistic` sampler samples traces with probability equal to `rate` (must be between 0.0 and 1.0). This can be enabled by setting `Jaeger::Client::Samplers::Probabilistic.new(rate: 0.1)`
89
+ `Probabilistic` sampler samples traces with probability equal to `rate` (must be between 0.0 and 1.0). This can be enabled by setting `Jaeger::Samplers::Probabilistic.new(rate: 0.1)`
90
+
91
+ #### RateLimiting sampler
92
+
93
+ `RateLimiting` sampler samples at most `max_traces_per_second`. The distribution of sampled traces follows burstiness of the service, i.e. a service with uniformly distributed requests will have those requests sampled uniformly as well, but if requests are bursty, especially sub-second, then a number of sequential requests can be sampled each second.
94
+
95
+ Set `sampler` to `Jaeger::Samplers::RateLimiting.new(max_traces_per_second: 100)`
96
+
97
+ #### GuaranteedThroughputProbabilistic sampler
98
+
99
+ `GuaranteedThroughputProbabilistic` is a sampler that guarantees a throughput by using a Probabilistic sampler and RateLimiting sampler The RateLimiting sampler is used to establish a lower_bound so that every operation is sampled at least once in the time interval defined by the lower_bound.
100
+
101
+ Set `sampler` to `Jaeger::Samplers::GuaranteedThroughputProbabilistic.new(lower_bound: 10, rate: 0.001)`
102
+
103
+ #### PerOperation sampler
104
+
105
+ `PerOperation` sampler leverages both Probabilistic sampler and RateLimiting sampler via the GuaranteedThroughputProbabilistic sampler. This sampler keeps track of all operations and delegates calls the the respective GuaranteedThroughputProbabilistic sampler.
106
+
107
+ Set `sampler` to
108
+ ```ruby
109
+ Jaeger::Samplers::PerOperation.new(
110
+ strategies: {
111
+ per_operation_strategies: [
112
+ { operation: 'GET /articles', probabilistic_sampling: { sampling_rate: 0.5 } },
113
+ { operation: 'POST /articles', probabilistic_sampling: { sampling_rate: 1.0 } }
114
+ ],
115
+ default_sampling_probability: 0.001,
116
+ default_lower_bound_traces_per_second: 1.0 / (10.0 * 60.0)
117
+ },
118
+ max_operations: 1000
119
+ )
120
+ ```
121
+
122
+ #### RemoteControlled sampler
123
+
124
+ `RemoteControlled` sampler is a sampler that is controller by jaeger agent. It starts out with `Probabilistic` sampler. It polls the jaeger-agent and changes sampling strategy accordingly. Set `sampler` to `Jaeger::Client::Samplers::RemoteControlled.new(service_name: 'service_name')`.
125
+
126
+ RemoteControlled sampler options:
127
+
128
+ | Param | Required | Description |
129
+ |-------------------|----------|-------------|
130
+ | service_name | x | name of the current service / application, same as given to Tracer |
131
+ | sampler | | initial sampler to use prior to retrieving strategies from Agent |
132
+ | refresh_interval | | interval in seconds before sampling strategy refreshes (0 to not refresh, defaults to 60) |
133
+ | host | | host for jaeger-agent (defaults to 'localhost') |
134
+ | port | | port for jaeger-agent for SamplingManager endpoint (defaults to 5778) |
135
+ | logger | | logger for communication between jaeger-agent (default to $stdout logger) |
136
+
137
+ ### TraceContext compatible header propagation
138
+
139
+ It is possible to use [W3C Trace Context](https://www.w3.org/TR/trace-context/#overview) headers to propagate the tracing information.
140
+
141
+ To set it up you need to change FORMAT_RACK injector and extractor.
142
+
143
+ ```ruby
144
+ OpenTracing.global_tracer = Jaeger::Client.build(
145
+ service_name: 'service_name',
146
+ injectors: {
147
+ OpenTracing::FORMAT_RACK => [Jaeger::Injectors::TraceContextRackCodec]
148
+ },
149
+ extractors: {
150
+ OpenTracing::FORMAT_RACK => [Jaeger::Extractors::TraceContextRackCodec]
151
+ }
152
+ )
153
+ ```
54
154
 
55
155
  ### Zipkin HTTP B3 compatible header propagation
56
156
 
@@ -58,14 +158,14 @@ Jaeger Tracer supports Zipkin B3 Propagation HTTP headers, which are used by a l
58
158
 
59
159
  To set it up you need to change FORMAT_RACK injector and extractor.
60
160
 
61
- ```
161
+ ```ruby
62
162
  OpenTracing.global_tracer = Jaeger::Client.build(
63
163
  service_name: 'service_name',
64
164
  injectors: {
65
- OpenTracing::FORMAT_RACK => [Jaeger::Client::Injectors::B3RackCodec]
165
+ OpenTracing::FORMAT_RACK => [Jaeger::Injectors::B3RackCodec]
66
166
  },
67
167
  extractors: {
68
- OpenTracing::FORMAT_RACK => [Jaeger::Client::Extractors::B3RackCodec]
168
+ OpenTracing::FORMAT_RACK => [Jaeger::Extractors::B3RackCodec]
69
169
  }
70
170
  )
71
171
  ```
@@ -74,6 +174,20 @@ It's also possible to set up multiple injectors and extractors. Each injector wi
74
174
 
75
175
  If multiple extractors is used then the span context from the first match will be returned.
76
176
 
177
+ ### Process Tags
178
+
179
+ Jaeger Tracer allows you to define process level tags. By default the tracer provides `jaeger.version`, `ip` and `hostname`. You may want to overwrite `ip` or `hostname` if the tracer cannot auto-detect them.
180
+
181
+ ```ruby
182
+ OpenTracing.global_tracer = Jaeger::Client.build(
183
+ service_name: 'service_name',
184
+ tags: {
185
+ 'hostname' => 'custom-hostname',
186
+ 'custom_tag' => 'custom-tag-value'
187
+ }
188
+ )
189
+ ```
190
+
77
191
  ## Development
78
192
 
79
193
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,29 @@
1
+ FROM ruby:2.5-alpine
2
+
3
+ ENV APP_HOME /app
4
+
5
+ # git is required by bundler to run jaeger gem with local path
6
+ RUN apk add --no-cache git
7
+
8
+ # Add only files needed for installing gem dependencies. This allows us to
9
+ # change other files without needing to install gems every time when building
10
+ # the docker image.
11
+ ADD Gemfile Gemfile.lock jaeger-client.gemspec $APP_HOME/
12
+ ADD lib/jaeger/client/version.rb $APP_HOME/lib/jaeger/client/
13
+ ADD crossdock/Gemfile crossdock/Gemfile.lock $APP_HOME/crossdock/
14
+
15
+ RUN apk add --no-cache --virtual .app-builddeps build-base \
16
+ && cd $APP_HOME && bundle install \
17
+ && cd $APP_HOME/crossdock && bundle install \
18
+ && apk del .app-builddeps
19
+
20
+ ADD . $APP_HOME
21
+
22
+ RUN chown -R nobody:nogroup $APP_HOME
23
+ USER nobody
24
+
25
+ WORKDIR $APP_HOME/crossdock
26
+
27
+ CMD ["bundle", "exec", "./server"]
28
+
29
+ EXPOSE 8080-8082
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'jaeger-client', path: '../'
4
+ gem 'rack'
5
+ gem 'sinatra'
6
+ gem 'webrick', '~> 1.4.2'
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ jaeger-client (0.7.1)
5
+ opentracing (~> 0.3)
6
+ thrift
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ mustermann (1.0.3)
12
+ opentracing (0.4.3)
13
+ rack (2.0.6)
14
+ rack-protection (2.0.4)
15
+ rack
16
+ sinatra (2.0.4)
17
+ mustermann (~> 1.0)
18
+ rack (~> 2.0)
19
+ rack-protection (= 2.0.4)
20
+ tilt (~> 2.0)
21
+ thrift (0.11.0.0)
22
+ tilt (2.0.9)
23
+ webrick (1.4.2)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ jaeger-client!
30
+ rack
31
+ sinatra
32
+ webrick (~> 1.4.2)
33
+
34
+ BUNDLED WITH
35
+ 1.16.2
@@ -0,0 +1,68 @@
1
+ version: '2'
2
+
3
+ services:
4
+ crossdock:
5
+ image: crossdock/crossdock
6
+ links:
7
+ - test_driver
8
+ - go
9
+ - python
10
+ - java
11
+ - ruby
12
+ environment:
13
+ - WAIT_FOR=test_driver,go,python,java,ruby
14
+ - WAIT_FOR_TIMEOUT=60s
15
+
16
+ - CALL_TIMEOUT=60s
17
+
18
+ - AXIS_CLIENT=go
19
+
20
+ - AXIS_S1NAME=go,python,java,ruby
21
+ - AXIS_SAMPLED=true,false
22
+ - AXIS_S2NAME=go,python,java,ruby
23
+ - AXIS_S2TRANSPORT=http
24
+ - AXIS_S3NAME=go,python,java,ruby
25
+ - AXIS_S3TRANSPORT=http
26
+
27
+ - BEHAVIOR_TRACE=client,s1name,sampled,s2name,s2transport,s3name,s3transport
28
+
29
+ - AXIS_TESTDRIVER=test_driver
30
+ - AXIS_SERVICES=ruby
31
+
32
+ - BEHAVIOR_ENDTOEND=testdriver,services
33
+
34
+ - REPORT=compact
35
+ go:
36
+ image: jaegertracing/xdock-go
37
+ ports:
38
+ - "8080-8082"
39
+
40
+ java:
41
+ image: jaegertracing/xdock-java
42
+ depends_on:
43
+ - jaeger-agent
44
+ ports:
45
+ - "8080-8082"
46
+
47
+ python:
48
+ image: jaegertracing/xdock-py
49
+ depends_on:
50
+ - jaeger-agent
51
+ ports:
52
+ - "8080-8082"
53
+
54
+ ruby:
55
+ build:
56
+ context: ../.
57
+ dockerfile: crossdock/Dockerfile
58
+ ports:
59
+ - "8080-8082"
60
+
61
+ test_driver:
62
+ image: jaegertracing/test-driver
63
+ depends_on:
64
+ - jaeger-query
65
+ - jaeger-collector
66
+ - jaeger-agent
67
+ ports:
68
+ - "8080"
@@ -0,0 +1,48 @@
1
+ version: '2'
2
+
3
+ services:
4
+ jaeger-collector:
5
+ image: jaegertracing/jaeger-collector
6
+ command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra", "--collector.zipkin.http-port=9411"]
7
+ ports:
8
+ - "14269"
9
+ - "14268:14268"
10
+ - "14267"
11
+ - "14250"
12
+ - "9411:9411"
13
+ restart: on-failure
14
+ depends_on:
15
+ - cassandra-schema
16
+
17
+ jaeger-query:
18
+ image: jaegertracing/jaeger-query
19
+ command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra"]
20
+ ports:
21
+ - "16686:16686"
22
+ - "16687"
23
+ restart: on-failure
24
+ depends_on:
25
+ - cassandra-schema
26
+
27
+ jaeger-agent:
28
+ image: jaegertracing/jaeger-agent
29
+ # FIXME temporarily switching back to tchannel
30
+ # https://github.com/jaegertracing/jaeger/issues/1229
31
+ command: ["--reporter.tchannel.host-port=jaeger-collector:14267"]
32
+ ports:
33
+ - "5775:5775/udp"
34
+ - "6831:6831/udp"
35
+ - "6832:6832/udp"
36
+ - "5778:5778"
37
+ restart: on-failure
38
+ depends_on:
39
+ - jaeger-collector
40
+
41
+ cassandra:
42
+ image: cassandra:3.9
43
+
44
+ cassandra-schema:
45
+ image: jaegertracing/jaeger-cassandra-schema
46
+ depends_on:
47
+ - cassandra
48
+
@@ -0,0 +1,35 @@
1
+ XDOCK_YAML=crossdock/docker-compose.yml
2
+ TRACETEST_THRIFT=idl/thrift/crossdock/tracetest.thrift
3
+ JAEGER_COMPOSE_URL=https://raw.githubusercontent.com/jaegertracing/jaeger/master/crossdock/jaeger-docker-compose.yml
4
+ XDOCK_JAEGER_YAML=crossdock/jaeger-docker-compose.yml
5
+
6
+ .PHONY: clean-compile
7
+ clean-compile:
8
+ find . -name '*.pyc' -exec rm {} \;
9
+
10
+ .PHONY: docker
11
+ docker: clean-compile crossdock-download-jaeger
12
+ docker build -f crossdock/Dockerfile -t jaeger-client-ruby .
13
+
14
+ .PHONY: crossdock
15
+ crossdock: ${TRACETEST_THRIFT} crossdock-download-jaeger
16
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) kill ruby
17
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) rm -f ruby
18
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) build ruby
19
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) run crossdock
20
+
21
+ .PHONY: crossdock-fresh
22
+ crossdock-fresh: ${TRACETEST_THRIFT} crossdock-download-jaeger
23
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) kill
24
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) rm --force
25
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) pull
26
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) build
27
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) run crossdock
28
+
29
+ .PHONY: crossdock-logs crossdock-download-jaeger
30
+ crossdock-logs:
31
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) logs
32
+
33
+ .PHONY: crossdock-download-jaeger
34
+ crossdock-download-jaeger:
35
+ curl -o $(XDOCK_JAEGER_YAML) $(JAEGER_COMPOSE_URL)