aws-xray 0.18.0.beta3 → 0.19.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab0c256c45eee8ab62e675a7e53f043e75914c00
4
- data.tar.gz: f8fe4dffa221f8a72747f052617fb20620db4ccb
3
+ metadata.gz: 9f0218d89ab6e56b753057c38781e756412ca766
4
+ data.tar.gz: 232fb91a69d318c535249803a4c1f292158b4331
5
5
  SHA512:
6
- metadata.gz: c98df8d0212f4e46af8e98c965020a008fe7fbbedd9ae7c3f15c1484fdfad633c1a95390d6513de48123198ef37dd79bb30fad095c87cce65068db358b4cc581
7
- data.tar.gz: 35bf66eda77816c8871e37ab27ee0851fabdb102f3a68ab9789da601027276deb15d6305577c2b9ca1890fe59bdf043316c8c1c9737d05615da4c8fbed9d6df5
6
+ metadata.gz: da3574d466ec8181955f4d3919c95240da461339c2ef101c33c8d34dd652b995b75ee5d00319302ee7f5e7513e3d3484e4d9d43d2cc08fbc2f043ffee37d08df
7
+ data.tar.gz: 277dedd93475c26178400807dfb2aaa7b8cf0c27e9cc032c815a52271fcc0848db66ec4dce0903a6b902f83257fed4469061c0428a4b9da8a180db60e8ea687a
data/README.md CHANGED
@@ -16,6 +16,7 @@ AWS X-Ray is a ditributed tracing system. See more detail about AWS X-Ray at [of
16
16
  - Tracing HTTP request/response.
17
17
  - Tracing errors.
18
18
  - Annotation and metadata support.
19
+ - Sampling support.
19
20
 
20
21
  ## Installation
21
22
 
@@ -142,6 +143,17 @@ For that case, pass `AWS_XRAY_LOCATION` environment variable to container to spe
142
143
  docker run --link xray:xray --env AWS_XRAY_LOCATION=xray:2000 my-application
143
144
  ```
144
145
 
146
+ ### Sampling
147
+ Sampling rate should be a float within 0 to 1. Both 0 and 1 are acceptable.
148
+ e.g. 0 means never sampled, 1 means always sampled, 0.3 means 30% of requests (or traces in not Rack app) will be sampled.
149
+ The default sampling rate is `0.001`, which means 0.1% of requests will be sampled.
150
+
151
+ Set sampling rate with `AWS_XRAY_SAMPLING_RATE` env var or:
152
+
153
+ ```ruby
154
+ Aws::Xray.config.sampling_rate = 0.1
155
+ ```
156
+
145
157
  ### Excluded paths
146
158
  To avoid tracing health checking requests, use "excluded paths" configuration.
147
159
 
@@ -90,6 +90,14 @@ module Aws
90
90
  Aws::Xray::Worker.reset(conf)
91
91
  conf
92
92
  end
93
+
94
+ # Default is 0.1%.
95
+ # @return [Float]
96
+ def sampling_rate
97
+ @sampling_rate ||= Float(ENV['AWS_XRAY_SAMPLING_RATE'] || 0.001)
98
+ end
99
+ # @param [Float] sampling_rate
100
+ attr_writer :sampling_rate
93
101
  end
94
102
  end
95
103
  end
@@ -88,7 +88,7 @@ module Aws
88
88
  raise e
89
89
  ensure
90
90
  base_segment.finish
91
- @client.send_segment(base_segment)
91
+ @client.send_segment(base_segment) if @trace.sampled?
92
92
  end
93
93
  end
94
94
 
@@ -107,7 +107,7 @@ module Aws
107
107
  raise e
108
108
  ensure
109
109
  sub.finish
110
- @client.send_segment(sub)
110
+ @client.send_segment(sub) if @trace.sampled?
111
111
  end
112
112
  end
113
113
 
@@ -13,11 +13,27 @@ module Aws
13
13
  def build_from_header_value(header_value, now = Time.now)
14
14
  h = HeaderParser.parse(header_value)
15
15
  root = h['Root'] || generate_root(now)
16
- new(root: root, sampled: h['Sampled'] != '0', parent: h['Parent'])
16
+ new(root: root, sampled: decide_sampling(h['Sampled']), parent: h['Parent'])
17
17
  end
18
18
 
19
19
  private
20
20
 
21
+ # Decide sample this request or not. At first, check parent's sampled
22
+ # and follow the value if it exists. Then decide sampled or not
23
+ # according to configured sampling_rate.
24
+ # @param [String,nil] value
25
+ # @return [Bloolean]
26
+ def decide_sampling(value)
27
+ case value
28
+ when '0'
29
+ false
30
+ when '1'
31
+ true
32
+ else
33
+ rand < Aws::Xray.config.sampling_rate
34
+ end
35
+ end
36
+
21
37
  def generate_root(now)
22
38
  "1-#{now.to_i.to_s(16)}-#{SecureRandom.hex(12)}"
23
39
  end
@@ -1,5 +1,5 @@
1
1
  module Aws
2
2
  module Xray
3
- VERSION = '0.18.0.beta3'
3
+ VERSION = '0.19.0.beta1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-xray
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0.beta3
4
+ version: 0.19.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taiki Ono
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-17 00:00:00.000000000 Z
11
+ date: 2017-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday