chaoite 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 +4 -4
- data/chaoite.gemspec +1 -0
- data/lib/chaoite.rb +6 -2
- data/lib/chaoite/handler.rb +50 -44
- data/lib/chaoite/json_helper.rb +31 -0
- data/lib/chaoite/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a15e8ef705f847eafbb8235563d300ac1aa30ed6
|
4
|
+
data.tar.gz: 132be2ef8d17512a3906292128c7bf624b250d55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
37
|
-
|
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
|
|
data/lib/chaoite/handler.rb
CHANGED
@@ -2,61 +2,67 @@ require 'net/http'
|
|
2
2
|
require 'jsonpath'
|
3
3
|
|
4
4
|
module Handler
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
35
|
-
|
36
|
-
command = config["check"]
|
38
|
+
value = begin
|
39
|
+
parse(`#{command}`, config)
|
37
40
|
|
38
|
-
|
39
|
-
|
41
|
+
rescue
|
42
|
+
nil
|
43
|
+
end
|
40
44
|
|
41
|
-
|
42
|
-
nil
|
45
|
+
return key => value
|
43
46
|
end
|
44
47
|
|
45
|
-
|
46
|
-
|
48
|
+
private
|
49
|
+
def parse(data, config)
|
50
|
+
parser = config["parser"] || "text"
|
51
|
+
self.send("parse_#{parser}", data, config)
|
52
|
+
end
|
47
53
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
54
|
+
def parse_text(data, config)
|
55
|
+
key = config["key"]
|
56
|
+
return key => data
|
57
|
+
end
|
53
58
|
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
data/lib/chaoite/version.rb
CHANGED
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.
|
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-
|
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:
|