chaoite 0.1.3 → 0.1.4

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: 0cd8ef676b4d9d28a60f1de4a1938264e6a7ff9e
4
- data.tar.gz: 298ee5e7a470a2713a2a44b5ea023e1e2af70bdb
3
+ metadata.gz: a15e8ef705f847eafbb8235563d300ac1aa30ed6
4
+ data.tar.gz: 132be2ef8d17512a3906292128c7bf624b250d55
5
5
  SHA512:
6
- metadata.gz: c089fd6766f0c9cbfeeccb5f4e3175d416141152babdf4901d8c8c985b78739e34ca8684969f4198c7472fd3119ef8fbe7f72bf604a40bfdea97e71b8a4a79ad
7
- data.tar.gz: a2dbfe6317075eca68f00216f5065d65a2fc66be68e0c226fabc82981d40b8c3f4163352d144cf0f5b7855460f7d690d1ec639b2590caa1c334001c089b1998c
6
+ metadata.gz: 0da156b1772df06f0fbc4a067f030d02b23897b452f5ba654a498661b58ef9b0d3ed35d53fada3611bdd71e14dcf985fbf21228d60c12e0cdefb4466657f09fd
7
+ data.tar.gz: 4d4cb4a918feeec21f44fd3611f7990bea28599375645e89f6de0232209b102c6b5b79815ac1a9a2ca9220532a9c16cb606679c27f20f2bb99fe7c5e8e15ecc1
data/chaoite.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_runtime_dependency "jsonpath", "~> 0.5"
31
31
  spec.add_runtime_dependency "graphite-api", "~> 0.1"
32
32
 
33
+ spec.add_development_dependency "byebug", "~> 3.5"
33
34
  spec.add_development_dependency "bundler", "~> 1.10"
34
35
  spec.add_development_dependency "rake", "~> 10.0"
35
36
  spec.add_development_dependency "rspec", "~> 3.3"
data/lib/chaoite.rb CHANGED
@@ -33,8 +33,12 @@ module Chaoite
33
33
  client.every 10.seconds do |c|
34
34
  configs.each do |config|
35
35
  metric = Handler.send("#{config["type"]}_#{config["value"]}", config)
36
- puts "Sending metric #{metric}"
37
- c.metrics(metric)
36
+ if(metric) then
37
+ puts "Sending metric #{metric}"
38
+ c.metrics(metric)
39
+ else
40
+ puts "Empty metric for '#{config["name"]}', not sending."
41
+ end
38
42
  end
39
43
  end
40
44
 
@@ -2,61 +2,67 @@ require 'net/http'
2
2
  require 'jsonpath'
3
3
 
4
4
  module Handler
5
- def self.http_state config
6
- key = config["key"]
7
- value = begin
8
- res = Net::HTTP.get_response(URI(config["check"]))
9
- res.code == '200' ? 1 : 0
10
- rescue
11
- 0
5
+ class << self
6
+ def http_state config
7
+ key = config["key"]
8
+ value = begin
9
+ res = Net::HTTP.get_response(URI(config["check"]))
10
+ res.code == '200' ? 1 : 0
11
+ rescue
12
+ 0
13
+ end
14
+ return key => value
12
15
  end
13
- return key => value
14
- end
15
16
 
16
- def self.http_metric config
17
- key = config["key"]
18
- value = begin
19
- res = Net::HTTP.get_response(URI(config["check"]))
20
- parse(res.body, config)
21
- rescue
22
- nil
17
+ def http_metric config
18
+ begin
19
+ res = Net::HTTP.get_response(URI(config["check"]))
20
+ parse(res.body, config)
21
+ rescue Exception => e
22
+ puts e
23
+ nil
24
+ end
23
25
  end
24
- return key => value
25
- end
26
26
 
27
- def self.shell_state config
28
- key = config["key"]
29
- command = config["check"]
30
- value = system(command) ? 1 : 0
31
- return key => value
32
- end
27
+ def shell_state config
28
+ key = config["key"]
29
+ command = config["check"]
30
+ value = system(command) ? 1 : 0
31
+ return key => value
32
+ end
33
+
34
+ def shell_metric config
35
+ key = config["key"]
36
+ command = config["check"]
33
37
 
34
- def self.shell_metric config
35
- key = config["key"]
36
- command = config["check"]
38
+ value = begin
39
+ parse(`#{command}`, config)
37
40
 
38
- value = begin
39
- parse(`#{command}`, config)
41
+ rescue
42
+ nil
43
+ end
40
44
 
41
- rescue
42
- nil
45
+ return key => value
43
46
  end
44
47
 
45
- return key => value
46
- end
48
+ private
49
+ def parse(data, config)
50
+ parser = config["parser"] || "text"
51
+ self.send("parse_#{parser}", data, config)
52
+ end
47
53
 
48
- private
49
- def self.parse(data, config)
50
- parser = config["parser"] || "text"
51
- self.send("parse_#{parser}", data, config)
52
- end
54
+ def parse_text(data, config)
55
+ key = config["key"]
56
+ return key => data
57
+ end
53
58
 
54
- def self.parse_text(data, config)
55
- return data
56
- end
59
+ def parse_json(data, config)
60
+ raise "json parser: Invalid json recieved from target service" if (!valid_json?(data))
61
+ key = resolve_json_path(data, config["key"])
62
+ value = resolve_json_path(data, config["jsonvalue"])
63
+ raise "json parser: key count should equal value count" if (key.length != value.length)
64
+ key.zip(value).to_h
65
+ end
57
66
 
58
- def self.parse_json(data, config)
59
- raise "jsonpath needs to be specified if using json parser" if(!config["jsonpath"])
60
- return JsonPath.on(data, config["jsonpath"])[0]
61
67
  end
62
68
  end
@@ -0,0 +1,31 @@
1
+ module JsonHelper
2
+ def resolve_json_path(json, template)
3
+ if template.start_with?("$") then
4
+ JsonPath.on(json, template)
5
+ else
6
+ paths = template.scan(/(\{(.*?)\})/).uniq
7
+ return template if paths.empty?
8
+ combinations = paths.map { |path| {path[0] => JsonPath.on(json, path[1])} }.reduce(&:merge)
9
+
10
+ combinations = combinations.values[0].product(*combinations.values[1..-1]).map{ |x| combinations.keys.zip(x).to_h }
11
+
12
+ combinations.map do |c|
13
+ t = template+''
14
+ c.keys.each do |key|
15
+ t.gsub!(key, c[key])
16
+ end
17
+ t
18
+ end
19
+ end
20
+ end
21
+
22
+ def valid_json?(json)
23
+ begin
24
+ JSON.parse(json)
25
+ return true
26
+ rescue Exception => e
27
+ return false
28
+ end
29
+ end
30
+
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Chaoite
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chaoite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aswin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2015-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.5'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - config.json.example
123
137
  - lib/chaoite.rb
124
138
  - lib/chaoite/handler.rb
139
+ - lib/chaoite/json_helper.rb
125
140
  - lib/chaoite/version.rb
126
141
  homepage: https://github.com/aswinkarthik93/chaoite
127
142
  licenses: