sensu-plugins-elasticsearch 0.3.0 → 0.3.1

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: df9596b9f751d85dd0f774ad4d356b41dfa3cb16
4
- data.tar.gz: 80c0c997e2b2cf195e3062794e5c19c1d8175c4b
3
+ metadata.gz: 7274d48632cbac489016fcc28073665e0221bd81
4
+ data.tar.gz: 3786345e742f828052e54fe80c1d2eb81c9b0cbe
5
5
  SHA512:
6
- metadata.gz: 042ccabd49cc993b4d114bd8e287b3a534f493c83067fe7f6274517a42f867ae248fb82480741c5455388e6ace45f626c0726b5a7e89e3148935ecf69a773f4f
7
- data.tar.gz: db0f1701b0f3a1008b5a9d1cc319967351c5e86906d6683a8a7a964d9fef8362e8e36a3dfb81054c6895532ec6944e7550823953269b7a53a9a791de6e8931cf
6
+ metadata.gz: 660cbc6632fdc418a7dbc48525cd0b517ad7d7556ea5e8f4c87dc490993944c126ba1b74d82a99264eed7516b868726b56cf22b578be917b7e367806928a58eb
7
+ data.tar.gz: 5995bf40185ee2bb37007f918c88dd8d8cbdef86062bbf38f4d7f53ee018f20a1b026a9d6ee62d9388264251753c260139fddc1def8c6bf3c50e6cd84d5d70e5
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,6 +5,11 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## [0.3.1] - 2015-12-29
9
+ ### Changed
10
+ - Update metrics-es-node.rb to use version checks consistent with other metrics
11
+ - Update metrics-es-cluster.rb to use `_stats` api instead of `/_count?q=*:*` see [Unbound wildcard range query cripples es on larger installs #20](https://github.com/sensu-plugins/sensu-plugins-elasticsearch/issues/20)
12
+
8
13
  ## [0.3.0] - 2015-11-18
9
14
  ### Changed
10
15
  - Update metrics-es-node-graphite.rb, check-es-node-status.rb, and check-es-file-descriptors.rb for Elasticsearch 2.0
@@ -34,8 +34,7 @@
34
34
  require 'sensu-plugin/check/cli'
35
35
  require 'elasticsearch'
36
36
  require 'time'
37
-
38
- require_relative 'sensu-plugins-elasticsearch'
37
+ require 'sensu-plugins-elasticsearch'
39
38
 
40
39
  #
41
40
  # ES Heap
@@ -103,6 +102,13 @@ class ESQueryCount < Sensu::Plugin::Check::CLI
103
102
  boolean: true,
104
103
  default: false
105
104
 
105
+ option :search_field,
106
+ description: 'The Elasticsearch document field to search for your query string.',
107
+ short: '-f FIELD',
108
+ long: '--field FIELD',
109
+ required: false,
110
+ default: 'message'
111
+
106
112
  option :query,
107
113
  description: 'Elasticsearch query',
108
114
  short: '-q QUERY',
@@ -168,29 +174,29 @@ class ESQueryCount < Sensu::Plugin::Check::CLI
168
174
  response = client.count(build_request_options)
169
175
  if config[:invert]
170
176
  if response['count'] < config[:crit]
171
- critical 'Query count was below critical threshold'
177
+ critical "Query count (#{response['count']}) was below critical threshold"
172
178
  elsif response['count'] < config[:warn]
173
- warning 'Query count was below warning threshold'
179
+ warning "Query count (#{response['count']}) was below warning threshold"
174
180
  else
175
- ok
181
+ ok "Query count (#{response['count']}) was ok"
176
182
  end
177
183
  else
178
184
  if response['count'] > config[:crit]
179
- critical 'Query count was above critical threshold'
185
+ critical "Query count (#{response['count']}) was above critical threshold"
180
186
  elsif response['count'] > config[:warn]
181
- warning 'Query count was above warning threshold'
187
+ warning "Query count (#{response['count']}) was above warning threshold"
182
188
  else
183
- ok
189
+ ok "Query count (#{response['count']}) was ok"
184
190
  end
185
191
  end
186
192
  rescue Elasticsearch::Transport::Transport::Errors::NotFound
187
193
  if config[:invert]
188
194
  if response['count'] < config[:crit]
189
- critical 'Query count was below critical threshold'
195
+ critical "Query count (#{response['count']}) was below critical threshold"
190
196
  elsif response['count'] < config[:warn]
191
- warning 'Query count was below warning threshold'
197
+ warning "Query count (#{response['count']}) was below warning threshold"
192
198
  else
193
- ok
199
+ ok "Query count (#{response['count']}) was ok"
194
200
  end
195
201
  else
196
202
  ok 'No results found, count was below thresholds'
@@ -109,8 +109,8 @@ class ESClusterMetrics < Sensu::Plugin::Metric::CLI::Graphite
109
109
  end
110
110
 
111
111
  def acquire_document_count
112
- document_count = get_es_resource('/_count?q=*:*')
113
- document_count['count']
112
+ document_count = get_es_resource('/_stats/docs')
113
+ document_count['_all']['total']['docs']['count']
114
114
  end
115
115
 
116
116
  def run
@@ -66,16 +66,34 @@ class ESMetrics < Sensu::Plugin::Metric::CLI::Graphite
66
66
  short: '-P PASS',
67
67
  long: '--password PASS'
68
68
 
69
- def run
69
+ def acquire_es_version
70
+ info = get_es_resource('/')
71
+ info['version']['number']
72
+ end
73
+
74
+ def get_es_resource(resource)
70
75
  headers = {}
71
76
  if config[:user] && config[:password]
72
77
  auth = 'Basic ' + Base64.encode64("#{config[:user]}:#{config[:password]}").chomp
73
78
  headers = { 'Authorization' => auth }
74
79
  end
75
- ln = RestClient::Resource.new "http://#{config[:host]}:#{config[:port]}/_cluster/nodes/_local", timeout: 30, headers: headers
76
- stats = RestClient::Resource.new "http://#{config[:host]}:#{config[:port]}/_cluster/nodes/_local/stats", timeout: 30, headers: headers
77
- ln = JSON.parse(ln.get)
78
- stats = JSON.parse(stats.get)
80
+ r = RestClient::Resource.new("http://#{config[:host]}:#{config[:port]}#{resource}", timeout: config[:timeout], headers: headers)
81
+ JSON.parse(r.get)
82
+ rescue Errno::ECONNREFUSED
83
+ warning 'Connection refused'
84
+ rescue RestClient::RequestTimeout
85
+ warning 'Connection timed out'
86
+ end
87
+
88
+ def run
89
+ if Gem::Version.new(acquire_es_version) >= Gem::Version.new('1.0.0')
90
+ ln = get_es_resource('/_nodes/_local')
91
+ stats = get_es_resource('/_nodes/_local/stats')
92
+ else
93
+ ln = get_es_resource('/_cluster/nodes/_local')
94
+ stats = get_es_resource('/_cluster/nodes/_local/stats')
95
+ end
96
+
79
97
  timestamp = Time.now.to_i
80
98
  node = stats['nodes'].values.first
81
99
  node['jvm']['mem']['heap_max_in_bytes'] = ln['nodes'].values.first['jvm']['mem']['heap_max_in_bytes']
@@ -74,7 +74,7 @@ module ElasticsearchQuery
74
74
  'filtered' => {
75
75
  'query' => {
76
76
  'query_string' => {
77
- 'default_field' => 'message',
77
+ 'default_field' => config[:search_field],
78
78
  'query' => config[:query]
79
79
  }
80
80
  },
@@ -97,6 +97,7 @@ module ElasticsearchQuery
97
97
  def es_date_math_string
98
98
  if config[:minutes_previous] == 0 && \
99
99
  config[:hours_previous] == 0 && \
100
+ config[:days_previous] == 0 && \
100
101
  config[:weeks_previous] == 0 && \
101
102
  config[:months_previous] == 0
102
103
  return nil
@@ -2,7 +2,7 @@ module SensuPluginsElasticsearch
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
- PATCH = 0
5
+ PATCH = 1
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu Plugins and contributors
@@ -30,7 +30,7 @@ cert_chain:
30
30
  8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
31
  HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
32
  -----END CERTIFICATE-----
33
- date: 2015-11-19 00:00:00.000000000 Z
33
+ date: 2015-12-29 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rest-client
@@ -203,7 +203,7 @@ dependencies:
203
203
  description: |-
204
204
  This plugin provides native ElasticSearch instrumentation
205
205
  for monitoring and metrics collection, including:
206
- service health and metrics for cluster, node, and more
206
+ service health and metrics for cluster, node, and more.
207
207
  email: "<sensu-users@googlegroups.com>"
208
208
  executables:
209
209
  - metrics-es-node.rb
metadata.gz.sig CHANGED
Binary file