dogstatsd-ruby 5.3.3 → 5.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/lib/datadog/statsd/connection_cfg.rb +2 -2
- data/lib/datadog/statsd/version.rb +1 -1
- data/lib/datadog/statsd.rb +17 -30
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d780ad7a840c021ee3cb31a9e8b512ef7ccff4b82b14be9e300206d3a07cc61e
|
4
|
+
data.tar.gz: 2da798fe3a84f313c5c84655136597c562e3dc1bfaa24f8ba6441ef722c7cc45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f92d7dab8099d571c291e26497020e53087ccdbeecfd84d955778f484112f9b94fb0f4ec7d043b9efabd5d249333168fa44e4fe6e54ba4c9541447b92983ceb
|
7
|
+
data.tar.gz: 8dadc086c84a821d4a1b1824a25ea4861bdf0b6a36cfcf8c50a8d06e19d6853c35974dbefb03fedc9ccd7a3f57ff13a19d206c5eef152c1aa5ffbc1f789da1bc
|
data/README.md
CHANGED
@@ -213,7 +213,13 @@ When using the `single_thread: true` mode, instances of `Datadog::Statsd` are st
|
|
213
213
|
|
214
214
|
## Versioning
|
215
215
|
|
216
|
-
This Ruby gem is using [Semantic Versioning](https://guides.rubygems.org/patterns/#semantic-versioning) but please note that supported Ruby versions can change in a minor release of this library.
|
216
|
+
This Ruby gem is using [Semantic Versioning](https://guides.rubygems.org/patterns/#semantic-versioning) but please note that supported Ruby versions can change in a minor release of this library.
|
217
|
+
As much as possible, we will add a "future deprecation" message in the minor release preceding the one dropping the support.
|
218
|
+
|
219
|
+
## Ruby Versions
|
220
|
+
|
221
|
+
This gem supports and is tested on Ruby minor versions 2.1 through 3.1.
|
222
|
+
Support for Ruby 2.0 was dropped in version 5.4.0.
|
217
223
|
|
218
224
|
## Credits
|
219
225
|
|
@@ -42,8 +42,8 @@ module Datadog
|
|
42
42
|
not_both_error_message:
|
43
43
|
"Both UDP (DD_AGENT_HOST/DD_DOGSTATSD_PORT #{ENV['DD_AGENT_HOST']}:#{ENV['DD_DOGSTATSD_PORT']}) " +
|
44
44
|
"and UDS (DD_DOGSTATSD_SOCKET #{ENV['DD_DOGSTATSD_SOCKET']}) environment variables are set. " +
|
45
|
-
"Set only one or the other."
|
46
|
-
|
45
|
+
"Set only one or the other.",
|
46
|
+
)
|
47
47
|
end
|
48
48
|
|
49
49
|
def initialize_with_defaults()
|
data/lib/datadog/statsd.rb
CHANGED
@@ -13,9 +13,6 @@ require_relative 'statsd/single_thread_sender'
|
|
13
13
|
require_relative 'statsd/forwarder'
|
14
14
|
require_relative 'statsd/timer'
|
15
15
|
|
16
|
-
$deprecation_message_mutex = Mutex.new
|
17
|
-
$deprecation_message_done = false
|
18
|
-
|
19
16
|
# = Datadog::Statsd: A DogStatsd client (https://www.datadoghq.com)
|
20
17
|
#
|
21
18
|
# @example Set up a global Statsd client for a server on localhost:8125
|
@@ -116,19 +113,6 @@ module Datadog
|
|
116
113
|
@serializer = Serialization::Serializer.new(prefix: @prefix, global_tags: tags)
|
117
114
|
@sample_rate = sample_rate
|
118
115
|
|
119
|
-
# deprecation message for ruby < 2.1.0 users as we will drop support for ruby 2.0
|
120
|
-
# in dogstatsd-ruby 5.4.0
|
121
|
-
# TODO(remy): remove this message and the two global vars used in dogstatd-ruby 5.4.0
|
122
|
-
if RUBY_VERSION < '2.1.0' && $deprecation_message_mutex.try_lock && !$deprecation_message_done
|
123
|
-
if logger != nil
|
124
|
-
logger.warn { "deprecation: dogstatsd-ruby will drop support of Ruby < 2.1.0 in a next minor release" }
|
125
|
-
else
|
126
|
-
puts("warning: deprecation: dogstatsd-ruby will drop support of Ruby < 2.1.0 in a next minor release")
|
127
|
-
end
|
128
|
-
$deprecation_message_done = true
|
129
|
-
$deprecation_message_mutex.unlock
|
130
|
-
end
|
131
|
-
|
132
116
|
@forwarder = Forwarder.new(
|
133
117
|
connection_cfg: ConnectionCfg.new(
|
134
118
|
host: host,
|
@@ -154,12 +138,13 @@ module Datadog
|
|
154
138
|
|
155
139
|
# yield a new instance to a block and close it when done
|
156
140
|
# for short-term use-cases that don't want to close the socket manually
|
157
|
-
|
158
|
-
|
141
|
+
# TODO: replace with ... once we are on ruby 2.7
|
142
|
+
def self.open(*args, **kwargs)
|
143
|
+
instance = new(*args, **kwargs)
|
159
144
|
|
160
145
|
yield instance
|
161
146
|
ensure
|
162
|
-
instance.close
|
147
|
+
instance.close if instance
|
163
148
|
end
|
164
149
|
|
165
150
|
# Sends an increment (count = 1) for the given stat to the statsd server.
|
@@ -167,6 +152,7 @@ module Datadog
|
|
167
152
|
# @param [String] stat stat name
|
168
153
|
# @param [Hash] opts the options to create the metric with
|
169
154
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
155
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
170
156
|
# @option opts [Array<String>] :tags An array of tags
|
171
157
|
# @option opts [Numeric] :by increment value, default 1
|
172
158
|
# @see #count
|
@@ -181,6 +167,7 @@ module Datadog
|
|
181
167
|
# @param [String] stat stat name
|
182
168
|
# @param [Hash] opts the options to create the metric with
|
183
169
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
170
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
184
171
|
# @option opts [Array<String>] :tags An array of tags
|
185
172
|
# @option opts [Numeric] :by decrement value, default 1
|
186
173
|
# @see #count
|
@@ -196,13 +183,14 @@ module Datadog
|
|
196
183
|
# @param [Integer] count count
|
197
184
|
# @param [Hash] opts the options to create the metric with
|
198
185
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
186
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
199
187
|
# @option opts [Array<String>] :tags An array of tags
|
200
188
|
def count(stat, count, opts = EMPTY_OPTIONS)
|
201
189
|
opts = { sample_rate: opts } if opts.is_a?(Numeric)
|
202
190
|
send_stats(stat, count, COUNTER_TYPE, opts)
|
203
191
|
end
|
204
192
|
|
205
|
-
# Sends an
|
193
|
+
# Sends an arbitrary gauge value for the given stat to the statsd server.
|
206
194
|
#
|
207
195
|
# This is useful for recording things like available disk space,
|
208
196
|
# memory usage, and the like, which have different semantics than
|
@@ -212,6 +200,7 @@ module Datadog
|
|
212
200
|
# @param [Numeric] value gauge value.
|
213
201
|
# @param [Hash] opts the options to create the metric with
|
214
202
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
203
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
215
204
|
# @option opts [Array<String>] :tags An array of tags
|
216
205
|
# @example Report the current user count:
|
217
206
|
# $statsd.gauge('user.count', User.count)
|
@@ -226,6 +215,7 @@ module Datadog
|
|
226
215
|
# @param [Numeric] value histogram value.
|
227
216
|
# @param [Hash] opts the options to create the metric with
|
228
217
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
218
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
229
219
|
# @option opts [Array<String>] :tags An array of tags
|
230
220
|
# @example Report the current user count:
|
231
221
|
# $statsd.histogram('user.count', User.count)
|
@@ -239,6 +229,7 @@ module Datadog
|
|
239
229
|
# @param [Numeric] value distribution value.
|
240
230
|
# @param [Hash] opts the options to create the metric with
|
241
231
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
232
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
242
233
|
# @option opts [Array<String>] :tags An array of tags
|
243
234
|
# @example Report the current user count:
|
244
235
|
# $statsd.distribution('user.count', User.count)
|
@@ -255,6 +246,7 @@ module Datadog
|
|
255
246
|
# @param [Integer] ms timing in milliseconds
|
256
247
|
# @param [Hash] opts the options to create the metric with
|
257
248
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
249
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
258
250
|
# @option opts [Array<String>] :tags An array of tags
|
259
251
|
def timing(stat, ms, opts = EMPTY_OPTIONS)
|
260
252
|
opts = { sample_rate: opts } if opts.is_a?(Numeric)
|
@@ -269,6 +261,7 @@ module Datadog
|
|
269
261
|
# @param [String] stat stat name
|
270
262
|
# @param [Hash] opts the options to create the metric with
|
271
263
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
264
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
272
265
|
# @option opts [Array<String>] :tags An array of tags
|
273
266
|
# @yield The operation to be timed
|
274
267
|
# @see #timing
|
@@ -288,6 +281,7 @@ module Datadog
|
|
288
281
|
# @param [Numeric] value set value.
|
289
282
|
# @param [Hash] opts the options to create the metric with
|
290
283
|
# @option opts [Numeric] :sample_rate sample rate, 1 for always
|
284
|
+
# @option opts [Boolean] :pre_sampled If true, the client assumes the caller has already sampled metrics at :sample_rate, and doesn't perform sampling.
|
291
285
|
# @option opts [Array<String>] :tags An array of tags
|
292
286
|
# @example Record a unique visitory by id:
|
293
287
|
# $statsd.set('visitors.uniques', User.id)
|
@@ -399,17 +393,10 @@ module Datadog
|
|
399
393
|
attr_reader :serializer
|
400
394
|
attr_reader :forwarder
|
401
395
|
|
402
|
-
PROCESS_TIME_SUPPORTED = (RUBY_VERSION >= '2.1.0')
|
403
396
|
EMPTY_OPTIONS = {}.freeze
|
404
397
|
|
405
|
-
|
406
|
-
|
407
|
-
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
408
|
-
end
|
409
|
-
else
|
410
|
-
def now
|
411
|
-
Time.now.to_f
|
412
|
-
end
|
398
|
+
def now
|
399
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
413
400
|
end
|
414
401
|
|
415
402
|
def send_stats(stat, delta, type, opts = EMPTY_OPTIONS)
|
@@ -417,7 +404,7 @@ module Datadog
|
|
417
404
|
|
418
405
|
sample_rate = opts[:sample_rate] || @sample_rate || 1
|
419
406
|
|
420
|
-
if sample_rate == 1 || rand <= sample_rate
|
407
|
+
if sample_rate == 1 || opts[:pre_sampled] || rand <= sample_rate
|
421
408
|
full_stat = serializer.to_stat(stat, delta, type, tags: opts[:tags], sample_rate: sample_rate)
|
422
409
|
|
423
410
|
forwarder.send_message(full_stat)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dogstatsd-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rein Henrichs
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A Ruby DogStatsd client
|
15
15
|
email: code@datadoghq.com
|
@@ -44,9 +44,9 @@ licenses:
|
|
44
44
|
- MIT
|
45
45
|
metadata:
|
46
46
|
bug_tracker_uri: https://github.com/DataDog/dogstatsd-ruby/issues
|
47
|
-
changelog_uri: https://github.com/DataDog/dogstatsd-ruby/blob/v5.
|
48
|
-
documentation_uri: https://www.rubydoc.info/gems/dogstatsd-ruby/5.
|
49
|
-
source_code_uri: https://github.com/DataDog/dogstatsd-ruby/tree/v5.
|
47
|
+
changelog_uri: https://github.com/DataDog/dogstatsd-ruby/blob/v5.4.0/CHANGELOG.md
|
48
|
+
documentation_uri: https://www.rubydoc.info/gems/dogstatsd-ruby/5.4.0
|
49
|
+
source_code_uri: https://github.com/DataDog/dogstatsd-ruby/tree/v5.4.0
|
50
50
|
post_install_message: |2+
|
51
51
|
|
52
52
|
If you are upgrading from v4.x of the dogstatsd-ruby library, note the major change to the threading model:
|
@@ -59,7 +59,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 2.
|
62
|
+
version: 2.1.0
|
63
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|