dogstatsd-instrumentation 0.1.3 → 0.1.4
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7db0d56432676e3ada7e935438162daaee78f837
|
4
|
+
data.tar.gz: 77778a0c9f8048e7333e1d0af61aa1f8a925052d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e17e56309a7a2138dfc3607aae45718bfdb80672b2cfc60b7d7f21a8acd5f0dbaf75bd5145211d9f89ba85f9ae47526a96f8aac9d19248c83ed718936467031e
|
7
|
+
data.tar.gz: 10b077d6d128fae8976f722c6018cf7fdb1b680f14300cb79c73806dbfc57dcdc64f8afbb043ccb4606665912bff06c8f0690ee39a74331e29d60bc71f85c2a8
|
data/lib/dogstatsd.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal true
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
require 'gem_config'
|
5
|
+
require 'datadog/statsd'
|
6
|
+
require_relative 'dogstatsd/instrumentation/client_provider'
|
7
|
+
|
8
|
+
module DogStatsd
|
9
|
+
PUBLIC_METHODS = %w(increment decrement count gauge histogram timing time set service_check format_service_check event batch format_event).freeze
|
10
|
+
|
11
|
+
class << self
|
12
|
+
extend Forwardable
|
13
|
+
|
14
|
+
def_delegators :statsd, *PUBLIC_METHODS
|
15
|
+
|
16
|
+
def statsd
|
17
|
+
Thread.current[:_dogstatsd_instrumentation_client] ||= Instrumentation::ClientProvider.new
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
require 'gem_config'
|
5
|
+
require 'datadog/statsd'
|
6
|
+
|
7
|
+
module DogStatsd
|
8
|
+
module Instrumentation
|
9
|
+
module ClientProvider
|
10
|
+
include GemConfig::Base
|
11
|
+
|
12
|
+
with_configuration do
|
13
|
+
has :enabled, classes: [TrueClass, FalseClass], default: true
|
14
|
+
has :tags, classes: Array, default: []
|
15
|
+
has :tags_h, classes: Hash, default: {}
|
16
|
+
has :namespace, classes: String
|
17
|
+
|
18
|
+
has :host, classes: String, default: Datadog::Statsd::DEFAULT_HOST
|
19
|
+
has :port, classes: Integer, default: Datadog::Statsd::DEFAULT_PORT
|
20
|
+
has :opts, classes: Hash, default: {}
|
21
|
+
has :max_buffer_size, classes: Integer, default: 50
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.new
|
25
|
+
client = Datadog::Statsd.new(
|
26
|
+
configuration.host,
|
27
|
+
configuration.port,
|
28
|
+
configuration.opts.merge(namespace: configuration.namespace, tags: configuration.tags + tagify(configuration.tags_h)),
|
29
|
+
configuration.max_buffer_size
|
30
|
+
)
|
31
|
+
|
32
|
+
def client.send_stats(stat, delta, type, opts={})
|
33
|
+
super if ClientProvider.configuration.enabled
|
34
|
+
end
|
35
|
+
|
36
|
+
client
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.tagify(hash)
|
40
|
+
hash.select { |_, value| value.present? }.map { |key, value| "#{key}:#{value}" }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'active_support'
|
4
4
|
require 'gem_config'
|
5
5
|
require 'datadog/statsd'
|
6
|
+
require_relative 'client_provider'
|
6
7
|
|
7
8
|
module DogStatsd
|
8
9
|
module Instrumentation
|
@@ -10,34 +11,22 @@ module DogStatsd
|
|
10
11
|
include GemConfig::Base
|
11
12
|
|
12
13
|
with_configuration do
|
13
|
-
has :
|
14
|
-
has :base_tags, classes: Hash, default: {}
|
15
|
-
|
16
|
-
has :host, classes: String, default: Datadog::Statsd::DEFAULT_HOST
|
17
|
-
has :port, classes: Integer, default: Datadog::Statsd::DEFAULT_PORT
|
18
|
-
has :opts, classes: Hash, default: {}
|
19
|
-
has :max_buffer_size, classes: Integer, default: 50
|
14
|
+
has :statsd, classes: Object
|
20
15
|
end
|
21
16
|
|
22
17
|
# From GemConfig::Base
|
23
18
|
def self.configure
|
24
19
|
super
|
25
|
-
@@subscriber
|
26
|
-
|
20
|
+
@@subscriber.unsubscribe if @@subscriber
|
21
|
+
|
22
|
+
@@subscriber = Subscriber.new(configuration.statsd || ClientProvider.new)
|
27
23
|
end
|
28
24
|
|
29
25
|
@@subscriber = nil
|
30
26
|
|
31
27
|
class Subscriber
|
32
|
-
def initialize(
|
33
|
-
@
|
34
|
-
|
35
|
-
@statsd = Datadog::Statsd.new(
|
36
|
-
configuration.host,
|
37
|
-
configuration.port,
|
38
|
-
configuration.opts,
|
39
|
-
configuration.max_buffer_size
|
40
|
-
)
|
28
|
+
def initialize(statsd)
|
29
|
+
@statsd = statsd
|
41
30
|
|
42
31
|
@subscriber = ActiveSupport::Notifications.subscribe /process_action.action_controller/ do |*args|
|
43
32
|
event = ActiveSupport::Notifications::Event.new(*args)
|
@@ -58,7 +47,7 @@ module DogStatsd
|
|
58
47
|
end
|
59
48
|
|
60
49
|
def instrument(stat:, value:, tags:)
|
61
|
-
@statsd.histogram stat, value, tags: Subscriber.tagify(
|
50
|
+
@statsd.histogram stat, value, tags: Subscriber.tagify(tags)
|
62
51
|
end
|
63
52
|
|
64
53
|
def self.tagify(hash)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dogstatsd-instrumentation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Costa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dogstatsd-ruby
|
@@ -176,7 +176,9 @@ extra_rdoc_files:
|
|
176
176
|
files:
|
177
177
|
- LICENSE.md
|
178
178
|
- README.md
|
179
|
+
- lib/dogstatsd.rb
|
179
180
|
- lib/dogstatsd/instrumentation.rb
|
181
|
+
- lib/dogstatsd/instrumentation/client_provider.rb
|
180
182
|
- lib/dogstatsd/instrumentation/identity.rb
|
181
183
|
- lib/dogstatsd/instrumentation/request.rb
|
182
184
|
- lib/tasks/reek.rake
|