kurchatov 0.0.6.pre.5 → 0.0.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: 870ee3524e61a543f0239a9bc5d5e635b228e964
4
- data.tar.gz: 29c5ea749c45fea4391af9845ac57e112cb59bfa
3
+ metadata.gz: 5f75c8dca0ef451afb605c85dc75cb15e7669a3c
4
+ data.tar.gz: a2573401456215589913a562bf8a0b889f710fd9
5
5
  SHA512:
6
- metadata.gz: 1ae6eb277c085226329af0d2014042e0eae58447c1c0da53bb518236c19092a5d25a2368ee2d2a24bec892ff3cc67d485c1f106ee06076a23d119a25ef07caab
7
- data.tar.gz: 42af4c91a332ed6f1d99c1673578ff031b714e19b56f77fd13e35205d47240d6d7dfc784044bcbf7e2179f5834ce54fcad0526747b7eeb3b6849cf2ef3b618d4
6
+ metadata.gz: 64c933fb2783d2cddea9d370c82ac7e5044749c64a1e3441ab1c14bb91c0fc98fa174745d76562dc0c2e46a02e575329d5a084c75fbc8a4f0b4c0b068f9eb7a6
7
+ data.tar.gz: 554337927ac11c606708306d47e2ac5a78458dab25d10970b577e71799042abbccfe002fe0f3f43fa83ac03d8b374b002e497aef8c6924acf8fe84289d2983b1
data/.travis.yml CHANGED
@@ -4,4 +4,7 @@ language:
4
4
  - 'ruby'
5
5
  rvm:
6
6
  - '1.9.3'
7
+ - '1.8.7'
8
+ - '2.0.0'
9
+ - '2.1.0'
7
10
  script: "./tests/run.sh"
data/CHANGELOG CHANGED
@@ -3,3 +3,4 @@
3
3
  * Version 0.0.6.pre.2: :metric => boolean return integer
4
4
  * Version 0.0.6.pre.4: Required block for plugin
5
5
  * Version 0.0.6.pre.5: Improve http responder, add monitor
6
+ * Version 0.0.6: ruby 1.8.7 support
data/kurchatov.gemspec CHANGED
@@ -25,5 +25,4 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'rake'
26
26
  spec.add_development_dependency 'rspec'
27
27
  spec.add_development_dependency 'pry'
28
- spec.add_development_dependency 'ruby-prof'
29
28
  end
@@ -24,7 +24,7 @@ module Kurchatov
24
24
  hash[:metric] = hash[:metric].to_f if hash[:metric].kind_of?(String)
25
25
  if hash[:metric].kind_of?(Float)
26
26
  hash[:metric] = 0.0 if hash[:metric].nan?
27
- hash[:metric] = hash[:metric].round(2)
27
+ hash[:metric] = ((hash[:metric] * 100).round/100.to_f) # 1.8.7 round
28
28
  end
29
29
 
30
30
  set_diff_metric(hash)
@@ -1,6 +1,6 @@
1
- require_relative 'command'
2
- require_relative 'http'
3
- require_relative 'ohai'
4
- require_relative 'queue'
5
- require_relative 'event'
6
- require_relative 'monitor'
1
+ require 'kurchatov/mixin/command'
2
+ require 'kurchatov/mixin/http'
3
+ require 'kurchatov/mixin/ohai'
4
+ require 'kurchatov/mixin/queue'
5
+ require 'kurchatov/mixin/event'
6
+ require 'kurchatov/mixin/monitor'
@@ -4,14 +4,14 @@ module Kurchatov
4
4
  class Task
5
5
  include Kurchatov::Mixin::Event
6
6
  attr_accessor :thread, :instance
7
+ attr_reader :count_errors, :last_error, :last_error_at
7
8
 
8
9
  def initialize(plugin)
9
10
  @plugin = plugin
10
11
  @thread = Thread.new { @plugin.run }
11
- end
12
-
13
- def status
14
- !!@thread.alive?
12
+ @count_errors = 0
13
+ @last_error = nil
14
+ @last_error_at = nil
15
15
  end
16
16
 
17
17
  def name
@@ -22,8 +22,8 @@ module Kurchatov
22
22
  @plugin.class.to_s
23
23
  end
24
24
 
25
- def uptime
26
- @plugin.uptime
25
+ def config
26
+ @plugin.plugin_config
27
27
  end
28
28
 
29
29
  def died?
@@ -34,6 +34,9 @@ module Kurchatov
34
34
  rescue => e
35
35
  desc = "Plugin '#{@plugin.name}' died. #{e.class}: #{e}\n." +
36
36
  "Trace: #{e.backtrace.join("\n")}"
37
+ @count_errors += 1
38
+ @last_error = desc
39
+ @last_error_at = Time.now
37
40
  Log.error(desc)
38
41
  unless @plugin.ignore_errors
39
42
  event(:service => 'riemann client errors', :desc => desc, :state => 'critical')
@@ -67,7 +70,14 @@ module Kurchatov
67
70
  end
68
71
 
69
72
  def inspect
70
- @tasks.map {|t| {name: t.name, alive: t.status, type: t.type, uptime: t.uptime} }
73
+ @tasks.map do |t|
74
+ {
75
+ "name" => t.name,
76
+ "type" => t.type,
77
+ "config" => t.config,
78
+ "errors" => {"count" => t.count_errors, "last" => t.last_error, "time" => t.last_error_at}
79
+ }
80
+ end
71
81
  end
72
82
 
73
83
  end
@@ -25,6 +25,10 @@ module Kurchatov
25
25
  @interval = 60.0
26
26
  end
27
27
 
28
+ def plugin_config
29
+ plugin
30
+ end
31
+
28
32
  def run
29
33
  super
30
34
  loop do
@@ -10,12 +10,9 @@ module Kurchatov
10
10
  end
11
11
 
12
12
  def run
13
- @t_start = Time.now
13
+ #
14
14
  end
15
15
 
16
- def uptime
17
- Time.now.to_i - @t_start.to_i
18
- end
19
16
 
20
17
  end
21
18
  end
@@ -10,6 +10,10 @@ module Kurchatov
10
10
  @s_time = Time.now
11
11
  end
12
12
 
13
+ def plugin_config
14
+ {:host => @host, :port => @port}
15
+ end
16
+
13
17
  def run
14
18
  super
15
19
  @server ||= TCPServer.new(@host, @port)
@@ -1,3 +1,3 @@
1
- require_relative 'http'
2
- require_relative 'riemann'
3
- require_relative 'udp'
1
+ require 'kurchatov/responders/http'
2
+ require 'kurchatov/responders/riemann'
3
+ require 'kurchatov/responders/udp'
@@ -9,10 +9,15 @@ module Kurchatov
9
9
  FLUSH_INTERVAL = 0.5
10
10
 
11
11
  def initialize(conn)
12
+ @ignore_errors = true
12
13
  @hosts = conn
13
14
  @riemanns = Array.new
14
15
  end
15
16
 
17
+ def plugin_config
18
+ {:hosts => @hosts}
19
+ end
20
+
16
21
  def run
17
22
  super
18
23
  make_clients
@@ -9,6 +9,9 @@ module Kurchatov
9
9
  @name = "udp responder #{@host}:#{@port}"
10
10
  end
11
11
 
12
+ def plugin_config
13
+ {:host => @host, :port => @port}
14
+ end
12
15
 
13
16
  def run
14
17
  super
@@ -1,3 +1,3 @@
1
1
  module Kurchatov
2
- VERSION = "0.0.6.pre.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/tests/data/event.yml CHANGED
@@ -41,3 +41,14 @@ events:
41
41
  :critical: 10
42
42
  :result: critical
43
43
  :service: Http get test
44
+
45
+ - :eval: 'rest_get("http://127.0.0.1:55755").size'
46
+ :critical: 1
47
+ :result: critical
48
+ :service: Http responder
49
+
50
+ - :metric: 0.98
51
+ :critical: 2
52
+ :warning: 1
53
+ :result: ok
54
+ :service: round float
data/tests/run.sh CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/bin/sh -e
2
2
  bundle exec ruby ./tests/server.rb &
3
- bundle exec kurchatov -c ./tests/data/config.yml -d ./tests/data -H 127.0.0.1 --stop-on-error
3
+ bundle exec kurchatov -c ./tests/data/config.yml -d ./tests/data -H 127.0.0.1 --stop-on-error --http 127.0.0.1:55755
data/tests/server.rb CHANGED
@@ -5,7 +5,7 @@ require 'yaml'
5
5
 
6
6
  PORT = 5555
7
7
  HOST = '127.0.0.1'
8
- RECEIVE_INTERVAL = 20
8
+ RECEIVE_INTERVAL = 60
9
9
 
10
10
  server = TCPServer.new(HOST, PORT)
11
11
  events = []
@@ -15,7 +15,7 @@ Timeout::timeout(RECEIVE_INTERVAL) {
15
15
  client = server.accept
16
16
  loop do
17
17
  line = client.read(4)
18
- break if line.nil? || line.size != 4
18
+ break if line.nil? || line.size != 4
19
19
  length = line.unpack('N').first
20
20
  str = client.read(length)
21
21
  message = Kurchatov::Riemann::Message.decode(str)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kurchatov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6.pre.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasiliev Dmitry
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: ruby-prof
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
97
  description: Gem for monitoring with riemann.
112
98
  email:
113
99
  - vadv.mkn@gmail.com
@@ -222,9 +208,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
208
  version: '0'
223
209
  required_rubygems_version: !ruby/object:Gem::Requirement
224
210
  requirements:
225
- - - '>'
211
+ - - '>='
226
212
  - !ruby/object:Gem::Version
227
- version: 1.3.1
213
+ version: '0'
228
214
  requirements: []
229
215
  rubyforge_project:
230
216
  rubygems_version: 2.0.3