sensu-plugins-rancher-service 0.0.15 → 0.0.16
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/bin/check-rancher-service.rb +10 -43
- data/lib/sensu-plugins-rancher-service/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71c8cb06af349269d6e9fe1718c5e9546e39ba52
|
4
|
+
data.tar.gz: 3a1652de0d542be637cb307cf7aa6c42b66f5ce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08c53b953ec690c86b3a01150f65b703062c03aaaccb36615f1562a72f7c93d6b02f798e60d8e9d794b97255a23ca28904ff5861cfbdfdb6a0335be071f9d6c1
|
7
|
+
data.tar.gz: 827d3d2609ce4803ada2f6a41aac4812c4e7314c56d98b98c1db547ff26fc9147fe8016ec0412d4007281c6a641a2cfc0f3f2b8bcab628afae37a2ed3b8a6106
|
@@ -9,6 +9,7 @@ require 'sensu-plugin/check/cli'
|
|
9
9
|
require 'net/http'
|
10
10
|
require 'json'
|
11
11
|
require 'fileutils'
|
12
|
+
require 'rancher-metadata/api'
|
12
13
|
|
13
14
|
class CheckRancherService < Sensu::Plugin::Check::CLI
|
14
15
|
option :api_url,
|
@@ -40,6 +41,7 @@ class CheckRancherService < Sensu::Plugin::Check::CLI
|
|
40
41
|
# prepare state directory
|
41
42
|
FileUtils.mkdir_p(config[:state_dir]) unless File.directory?(config[:state_dir])
|
42
43
|
|
44
|
+
@metadata_api = RancherMetadata::API.new({:api_url => "http://rancher-metadata/2015-12-19"})
|
43
45
|
@state_file = config[:state_dir] + "/containers.json"
|
44
46
|
end
|
45
47
|
|
@@ -84,39 +86,6 @@ class CheckRancherService < Sensu::Plugin::Check::CLI
|
|
84
86
|
send_client_socket(event.to_json)
|
85
87
|
end
|
86
88
|
|
87
|
-
def is_error?(data)
|
88
|
-
if data.is_a?(Hash) and data.has_key?('code') and data['code'] == 404
|
89
|
-
return true
|
90
|
-
else
|
91
|
-
return false
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def api_get(query)
|
96
|
-
begin
|
97
|
-
uri = URI.parse("#{config[:api_url]}#{query}")
|
98
|
-
req = Net::HTTP::Get.new(uri.path, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
|
99
|
-
resp = Net::HTTP.new(uri.host, uri.port).request(req)
|
100
|
-
data = JSON.parse(resp.body)
|
101
|
-
|
102
|
-
if is_error?(data)
|
103
|
-
return nil
|
104
|
-
else
|
105
|
-
return data
|
106
|
-
end
|
107
|
-
rescue
|
108
|
-
raise "Failed to query Rancher Metadata API - Caught exception (#{$!})"
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def get_services()
|
113
|
-
api_get("/services")
|
114
|
-
end
|
115
|
-
|
116
|
-
def get_container(name)
|
117
|
-
api_get("/containers/#{name}")
|
118
|
-
end
|
119
|
-
|
120
89
|
def run
|
121
90
|
unmonitored = 0
|
122
91
|
unhealthy = 0
|
@@ -124,7 +93,7 @@ class CheckRancherService < Sensu::Plugin::Check::CLI
|
|
124
93
|
# read current state
|
125
94
|
state = read_state()
|
126
95
|
|
127
|
-
get_services
|
96
|
+
self.metadata_api.get_services.each do |service|
|
128
97
|
source = "#{service['stack_name']}_#{service['name']}.rancher.internal"
|
129
98
|
|
130
99
|
if service['metadata'].has_key?('sensu') and service['metadata']['sensu'].has_key?('monitored')
|
@@ -134,30 +103,28 @@ class CheckRancherService < Sensu::Plugin::Check::CLI
|
|
134
103
|
end
|
135
104
|
|
136
105
|
# get containers
|
137
|
-
service['containers'].each do |
|
138
|
-
check_name = "rancher-container-#{
|
139
|
-
msg = "Instance #{
|
106
|
+
service['containers'].each do |container|
|
107
|
+
check_name = "rancher-container-#{container['name']}-state"
|
108
|
+
msg = "Instance #{container['name']}"
|
140
109
|
|
141
110
|
unless monitored
|
142
111
|
send_ok(check_name, source, "#{msg} not monitored (disabled)")
|
143
112
|
else
|
144
|
-
container = get_container(container_name)
|
145
|
-
|
146
113
|
if container['labels'].has_key?('io.rancher.container.start_once') and container['labels']['io.rancher.container.start_once']
|
147
114
|
send_ok(check_name, source, "#{msg} not monitored (start-once)")
|
148
115
|
else
|
149
116
|
skip = false
|
150
|
-
if state.has_key?(
|
151
|
-
if container['start_count'] > state[
|
117
|
+
if state.has_key?(container['name'])
|
118
|
+
if container['start_count'] > state[container['name']]['start_count']
|
152
119
|
send_warning(check_name, source, "#{msg} has restarted")
|
153
120
|
skip = true
|
154
121
|
end
|
155
122
|
else
|
156
|
-
state[
|
123
|
+
state[container['name']] = {}
|
157
124
|
end
|
158
125
|
|
159
126
|
# update state
|
160
|
-
state[
|
127
|
+
state[container['name']]['start_count'] = container['start_count']
|
161
128
|
|
162
129
|
next if skip
|
163
130
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-rancher-service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matteo Cerutti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rancher-metadata
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.17.14
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.17.14
|
27
41
|
description: This plugin provides facilities for monitoring services running in Rancher
|
28
42
|
email: "<matteo.cerutti@hotmail.co.uk>"
|
29
43
|
executables:
|