hosted_graphite 0.0.8 → 0.1.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/.gitignore +2 -0
- data/README.md +14 -0
- data/lib/hosted_graphite.rb +19 -20
- data/lib/hosted_graphite/ext/sidekiq.rb +36 -0
- data/lib/hosted_graphite/http.rb +1 -1
- data/lib/hosted_graphite/protocol.rb +5 -3
- data/lib/hosted_graphite/statsd.rb +6 -31
- data/lib/hosted_graphite/tcp.rb +1 -1
- data/lib/hosted_graphite/testing.rb +1 -1
- data/lib/hosted_graphite/udp.rb +1 -1
- data/lib/hosted_graphite/version.rb +1 -1
- data/test/test_missing_apikey.rb +3 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8feed7b2061113ad3af0e7defd664a1a73beb2f0
|
4
|
+
data.tar.gz: 68e0bbcafce9ab5d6dcfa3718b708ec330d562a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 432f36fad8a68e71932ba818fbdb107bbad05ed66b37c8f9c45a90f3b5e1957a412aa2c901269ff430d8a6baa9310915f5d5f7e3f5d1c881008dca5df31f380e
|
7
|
+
data.tar.gz: 3599c2698e689e9ef331510032cce5d6de8a0cfe99cc944cdcceefb5d2e57ec236b8c19d443319ffb1086e12d8f0698440e2c29311bf2fecc3c39aba8bbfffbe
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -84,6 +84,20 @@ HostedGraphite.gauge 'bar', 100
|
|
84
84
|
HostedGraphite.time('newsletter.monthly') { @newsletter.deliver_now }
|
85
85
|
```
|
86
86
|
|
87
|
+
### Extensions
|
88
|
+
#### Sidekiq
|
89
|
+
```ruby
|
90
|
+
require 'hosted_graphite/ext/sidekiq'
|
91
|
+
|
92
|
+
Sidekiq.configure_server do |config|
|
93
|
+
config.server_middleware do |chain|
|
94
|
+
# chain.prepend Sidekiq::Middleware::Server::StatsdMetrics, namespace: 'my_app'
|
95
|
+
# or
|
96
|
+
# chain.prepend Sidekiq::Middleware::Server::Metrics
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
87
101
|
## Contributing
|
88
102
|
|
89
103
|
1. Fork it ( https://github.com/seuros/hosted_graphite/fork )
|
data/lib/hosted_graphite.rb
CHANGED
@@ -7,10 +7,11 @@ require 'hosted_graphite/http'
|
|
7
7
|
|
8
8
|
module HostedGraphite
|
9
9
|
extend Forwardable
|
10
|
+
extend self
|
11
|
+
|
10
12
|
def_delegators :protocol, :send_metric
|
11
13
|
module_function :send_metric
|
12
|
-
|
13
|
-
@@protocol = nil
|
14
|
+
@protocol = nil
|
14
15
|
|
15
16
|
class MissingAPIKey < StandardError
|
16
17
|
def initialize
|
@@ -18,27 +19,25 @@ module HostedGraphite
|
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
22
|
+
def api_key
|
23
|
+
@api_key ||= ENV['HOSTEDGRAPHITE_APIKEY']
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def api_key=(key)
|
27
|
+
@api_key = key
|
28
|
+
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
def protocol
|
31
|
+
@protocol
|
32
|
+
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
34
|
+
def protocol=(protocol)
|
35
|
+
case protocol
|
36
|
+
when Class
|
37
|
+
@protocol = protocol.new
|
38
|
+
when String, Symbol
|
39
|
+
protocol = protocol.to_s.upcase
|
40
|
+
@protocol = const_get(protocol).new
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
gem 'sidekiq', '>= 4.1.1'
|
2
|
+
require 'sidekiq'
|
3
|
+
|
4
|
+
module HostedGraphite
|
5
|
+
module Ext
|
6
|
+
module Sidekiq
|
7
|
+
class Metrics
|
8
|
+
def initialize(namespace:)
|
9
|
+
@client = HostedGraphite
|
10
|
+
@namespace = namespace
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(worker, msg, _, &block)
|
14
|
+
w = msg['wrapped'] || worker.class.to_s
|
15
|
+
w = [@namespace,'jobs', w].compact.join('.')
|
16
|
+
begin
|
17
|
+
@client.increment("#{w}.performed")
|
18
|
+
@client.time("#{w}.time", &block)
|
19
|
+
@client.increment("#{w}.succeed")
|
20
|
+
rescue Exception
|
21
|
+
@client.increment("#{w}.failed")
|
22
|
+
raise
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class StatsdMetrics < Metrics
|
28
|
+
def initialize(namespace:)
|
29
|
+
super
|
30
|
+
require 'hosted_graphite/statsd'
|
31
|
+
@client = StatsD.new
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/hosted_graphite/http.rb
CHANGED
@@ -6,13 +6,15 @@ module HostedGraphite
|
|
6
6
|
API_URI = 'https://hostedgraphite.com/api/v1/sink'.freeze
|
7
7
|
PORT = 2003.freeze
|
8
8
|
|
9
|
-
def
|
10
|
-
|
11
|
-
@api_key = HostedGraphite.api_key
|
9
|
+
def api_key
|
10
|
+
HostedGraphite.api_key
|
12
11
|
end
|
13
12
|
|
14
13
|
def send_metric(name, value, timestamp = nil)
|
14
|
+
raise MissingAPIKey unless api_key
|
15
15
|
send_message(build_message(name, value, timestamp))
|
16
|
+
rescue MissingAPIKey => e
|
17
|
+
raise e
|
16
18
|
rescue => e
|
17
19
|
# set HOSTEDGRAPHITE_DEBUG to to raise errors instead of silencing them.
|
18
20
|
raise e if ENV['HOSTEDGRAPHITE_DEBUG']
|
@@ -3,6 +3,8 @@ require 'hosted_graphite'
|
|
3
3
|
require 'statsd'
|
4
4
|
|
5
5
|
module HostedGraphite
|
6
|
+
def_delegators :statsd, :increment, :decrement, :count, :gauge, :set, :timing, :time
|
7
|
+
|
6
8
|
class StatsD < Statsd
|
7
9
|
HOST = 'statsd.hostedgraphite.com'.freeze
|
8
10
|
PORT = 8125.freeze
|
@@ -11,7 +13,7 @@ module HostedGraphite
|
|
11
13
|
raise MissingAPIKey unless HostedGraphite.api_key
|
12
14
|
super(HOST, PORT)
|
13
15
|
@namespace = HostedGraphite.api_key
|
14
|
-
@prefix
|
16
|
+
@prefix = "#{@namespace}."
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
@@ -24,35 +26,8 @@ module HostedGraphite
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
-
class << self
|
30
|
-
def increment(stat, sample_rate=1)
|
31
|
-
@@statsd.increment stat, sample_rate
|
32
|
-
end
|
33
|
-
|
34
|
-
def decrement(stat, sample_rate=1)
|
35
|
-
@@statsd.decrement stat, sample_rate
|
36
|
-
end
|
37
|
-
|
38
|
-
def count(stat, count, sample_rate=1)
|
39
|
-
@@statsd.count stat, count, sample_rate
|
40
|
-
end
|
41
|
-
|
42
|
-
def gauge(stat, value, sample_rate=1)
|
43
|
-
@@statsd.gauge stat, value, sample_rate
|
44
|
-
end
|
45
|
-
|
46
|
-
def set(stat, value, sample_rate=1)
|
47
|
-
@@statsd.set stat, value, sample_rate
|
48
|
-
end
|
49
|
-
|
50
|
-
def timing(stat, ms, sample_rate=1)
|
51
|
-
@@statsd.timing stat, ms, sample_rate
|
52
|
-
end
|
53
|
-
|
54
|
-
def time(stat, sample_rate=1, &blk)
|
55
|
-
@@statsd.time stat, sample_rate, &blk
|
56
|
-
end
|
29
|
+
def statsd
|
30
|
+
@statsd ||= StatsD.new
|
57
31
|
end
|
32
|
+
|
58
33
|
end
|
data/lib/hosted_graphite/tcp.rb
CHANGED
data/lib/hosted_graphite/udp.rb
CHANGED
data/test/test_missing_apikey.rb
CHANGED
@@ -12,19 +12,19 @@ class MissingAPIKeyTest < Minitest::Test
|
|
12
12
|
|
13
13
|
def test_udp_protocol
|
14
14
|
assert_raises HostedGraphite::MissingAPIKey do
|
15
|
-
HostedGraphite::UDP.new
|
15
|
+
HostedGraphite::UDP.new.send_metric('foo', 1)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_tcp_protocol
|
20
20
|
assert_raises HostedGraphite::MissingAPIKey do
|
21
|
-
HostedGraphite::TCP.new
|
21
|
+
HostedGraphite::TCP.new.send_metric('foo', 1)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_http_protocol
|
26
26
|
assert_raises HostedGraphite::MissingAPIKey do
|
27
|
-
HostedGraphite::HTTP.new
|
27
|
+
HostedGraphite::HTTP.new.send_metric('foo', 1)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hosted_graphite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- Rakefile
|
68
68
|
- hosted_graphite.gemspec
|
69
69
|
- lib/hosted_graphite.rb
|
70
|
+
- lib/hosted_graphite/ext/sidekiq.rb
|
70
71
|
- lib/hosted_graphite/http.rb
|
71
72
|
- lib/hosted_graphite/protocol.rb
|
72
73
|
- lib/hosted_graphite/statsd.rb
|
@@ -100,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
101
|
version: '0'
|
101
102
|
requirements: []
|
102
103
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.5.1
|
104
105
|
signing_key:
|
105
106
|
specification_version: 4
|
106
107
|
summary: A Ruby client for HostedGraphite
|
@@ -111,4 +112,3 @@ test_files:
|
|
111
112
|
- test/test_stastd.rb
|
112
113
|
- test/test_tcp_protocol.rb
|
113
114
|
- test/test_udp_protocol.rb
|
114
|
-
has_rdoc:
|