sensu-plugins-rancher-service 0.0.15 → 0.0.16

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: 733f6b091e0c340300b859ab196ed30958b11488
4
- data.tar.gz: 1d6c3a6cff8c5c122ac7f9148729ff84a584830d
3
+ metadata.gz: 71c8cb06af349269d6e9fe1718c5e9546e39ba52
4
+ data.tar.gz: 3a1652de0d542be637cb307cf7aa6c42b66f5ce3
5
5
  SHA512:
6
- metadata.gz: 03b1f30bff046ea286d5a5cf308df602a606fe462119939c809b466eedfd319f571796d9ea83531974eb57c8ca06e246278ebe42ee4c2239bb8e205cf507a53f
7
- data.tar.gz: ea216460b180bd73af863f3bc82551328d77d3292696d25e06838684b5df4aee533ef7f84991c438d1c0cd784f85b898beeed50109b6abf800f7ffefb03df0aa
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().each do |service|
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 |container_name|
138
- check_name = "rancher-container-#{container_name}-state"
139
- msg = "Instance #{container_name}"
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?(container_name)
151
- if container['start_count'] > state[container_name]['start_count']
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[container_name] = {}
123
+ state[container['name']] = {}
157
124
  end
158
125
 
159
126
  # update state
160
- state[container_name]['start_count'] = container['start_count']
127
+ state[container['name']]['start_count'] = container['start_count']
161
128
 
162
129
  next if skip
163
130
 
@@ -2,7 +2,7 @@ module SensuPluginsRancherService
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 15
5
+ PATCH = 16
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
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.15
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-01-19 00:00:00.000000000 Z
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: