ducksboard_reporter 0.1.5 → 0.1.6

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: 55064babfaea0c586bfb00ce8e78bf3ea30a66d5
4
- data.tar.gz: 01d526c95693b104c8ab3e62364e761572e4e45d
3
+ metadata.gz: 11fb63f4af0155d6b61623c2861565e0228c79c5
4
+ data.tar.gz: 22661f14ac7e1df6be2acdd1d5720c1d9aead8c6
5
5
  SHA512:
6
- metadata.gz: 6cd9f1809ab873bb55d686d29961d251b9813b753648ba556eb04d144d4a58123e6b5a3f64604ceb2390b573eeec9f7c5f0d95ed5b8808b81d421b533a3d3352
7
- data.tar.gz: 01eff8227e66cd9539ea8aecf04468975b3b4acb0ffc729b57fe3ec069c5822ff8349b842ab72942c812ee704558df6b27655510d698cddf27ae6af7daad0a29
6
+ metadata.gz: 38334cbbe75836952ccd566d4c9dfbaad21f1c3fb5959d2a721d82be20262208b2396fee9af795c2f10a19b657dfa84daa9054c4a41040bf7a0e0b42fda97336
7
+ data.tar.gz: e2264b5862ce9021bc899164445f27abc9619bd17820107e876e77771aaee6dbc1f53fe864b190eb7c7b86ae75d52dc022e9bc313d76a325f681f72f249c79e1
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency "celluloid", "~> 0.16"
30
30
  spec.add_runtime_dependency "timers", ">= 1.1.0"
31
31
  spec.add_runtime_dependency "trollop", ">= 1.16.2"
32
+ spec.add_runtime_dependency "faraday", ">= 0.9.0"
32
33
  end
data/example_config.yml CHANGED
@@ -10,9 +10,14 @@ reporters:
10
10
  options:
11
11
  log_file: haproxy.log
12
12
 
13
+ - name: honeybadger
14
+ type: Honeybadger
15
+ options:
16
+ api_key: 58L5pGcr82Vm11G1HHG6
17
+ project_id: 2948
18
+
13
19
  widgets:
14
20
  - type: Box
15
21
  id: 506475
16
- reporter: haproxy_log_requests
17
- value:
18
- current: :requests
22
+ reporter: honeybadger
23
+ value: :unresolved_fault_count
@@ -0,0 +1,58 @@
1
+ require "faraday"
2
+ require "hashie"
3
+
4
+ module DucksboardReporter
5
+ class JsonRemote
6
+ attr_reader :response, :exception
7
+
8
+ class << self
9
+ def get(url, options = {})
10
+ request = Thread.current[:_json_remote_request] = new(url, options)
11
+ request.get
12
+ end
13
+
14
+ def request
15
+ Thread.current[:_json_remote_request]
16
+ end
17
+ end
18
+
19
+ def initialize(url, options = {})
20
+ @url = url
21
+ @connection_timeout = options[:connection_timeout] || options[:timeout]
22
+ @read_timeout = options[:read_timeout] || options[:timeout]
23
+ end
24
+
25
+ def get
26
+ @exception = nil
27
+ conn = Faraday.new(
28
+ url: host_with_scheme_and_port,
29
+ headers: {accept: "application/json"}
30
+ )
31
+ @response = conn.get(uri.request_uri, request_options)
32
+ Hashie::Mash.new(JSON.parse(@response.body))
33
+ rescue => e
34
+ @exception = e
35
+ nil
36
+ end
37
+
38
+ private
39
+
40
+ def host_with_scheme_and_port
41
+ host = "#{uri.scheme}://#{uri.host}"
42
+ host << ":#{uri.port}" if uri.port != 80
43
+ host
44
+ end
45
+
46
+ def uri
47
+ @uri ||= URI.parse(@url)
48
+ end
49
+
50
+ def request_options
51
+ options = {}
52
+ options[:connection_timeout] = @connection_timeout if @connection_timeout
53
+ options[:read_timeout] = @read_timeout if @read_timeout
54
+ options
55
+ end
56
+ end
57
+ end
58
+
@@ -0,0 +1,29 @@
1
+ require "open-uri"
2
+
3
+ module DucksboardReporter
4
+ module Reporters
5
+ class Honeybadger < Reporter
6
+
7
+ def collect
8
+ every(10) do
9
+ @data = JsonRemote.get(url, timeout: 5)
10
+ if @data.nil? && (e = JsonRemote.request.exception)
11
+ error(log_format("Cannot request data from Honeybadger #{e}"))
12
+ end
13
+ end
14
+ end
15
+
16
+ def unresolved_fault_count
17
+ @data.unresolved_fault_count if @data
18
+ end
19
+
20
+ private
21
+
22
+ def url
23
+ @url ||= "https://api.honeybadger.io/v1/projects/#{options[:project_id]}?auth_token=#{options[:api_key]}"
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+
@@ -1,3 +1,3 @@
1
1
  module DucksboardReporter
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -10,12 +10,15 @@ Hash.include Hashie::Extensions::SymbolizeKeys
10
10
  require "ducksboard_reporter/version"
11
11
  require "ducksboard_reporter/reporter"
12
12
  require "ducksboard_reporter/widget"
13
+
13
14
  require "ducksboard_reporter/file_tail"
15
+ require "ducksboard_reporter/json_remote"
14
16
 
15
17
  require "ducksboard_reporter/reporters/random"
16
18
  require "ducksboard_reporter/reporters/haproxy_log_requests"
17
19
  require "ducksboard_reporter/reporters/cpu_usage"
18
20
  require "ducksboard_reporter/reporters/bandwidth"
21
+ require "ducksboard_reporter/reporters/honeybadger"
19
22
 
20
23
  Thread.abort_on_exception = true
21
24
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ducksboard_reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - unnu
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: 1.16.2
153
+ - !ruby/object:Gem::Dependency
154
+ name: faraday
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 0.9.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 0.9.0
153
167
  description: Report values to ducksboard
154
168
  email:
155
169
  - norman.timmler@gmail.com
@@ -168,10 +182,12 @@ files:
168
182
  - example_config.yml
169
183
  - lib/ducksboard_reporter.rb
170
184
  - lib/ducksboard_reporter/file_tail.rb
185
+ - lib/ducksboard_reporter/json_remote.rb
171
186
  - lib/ducksboard_reporter/reporter.rb
172
187
  - lib/ducksboard_reporter/reporters/bandwidth.rb
173
188
  - lib/ducksboard_reporter/reporters/cpu_usage.rb
174
189
  - lib/ducksboard_reporter/reporters/haproxy_log_requests.rb
190
+ - lib/ducksboard_reporter/reporters/honeybadger.rb
175
191
  - lib/ducksboard_reporter/reporters/random.rb
176
192
  - lib/ducksboard_reporter/version.rb
177
193
  - lib/ducksboard_reporter/widget.rb