dogstatsd-ruby 5.3.3 → 5.4.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/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
|
- - ">="
|