sensu-plugins-influxdb-metrics-checker 0.5.0 → 0.6.0

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: 59b2a0ef87bf23bb182781dcd48a5d578783e326
4
- data.tar.gz: 915f1f28d7d280773e4fc5e925cdca9c7e0e5dcb
3
+ metadata.gz: f2faf768f52259477f77f590df56d99c8e99a9c4
4
+ data.tar.gz: 33c7bb5da5466dce940086afc2944242ff6b9815
5
5
  SHA512:
6
- metadata.gz: 6a27e57baeb6db9e730aa62a9ce42d5ddc1e0eb76372ee1b1bf1de6e7ad17a2eaf86339288e4359f74eac8596a1191ca83f74250f41973455835ffea9a7acaac
7
- data.tar.gz: e5f351a2bcae1822e41d928da7e3d1870dd8874ad59ebbbd052ea0884b44c11629d6cf0e4512e676a3f3d3380221397095dfa0ed187b3436b2688c383c16d8dc
6
+ metadata.gz: 535f53f71f815f6cfd18e413070b735fd0e80284f0228b0d8d659844f0fa3560a7d740011664b64d285b53c9117644ad6922abba7d8ac35870c6cce032a05d30
7
+ data.tar.gz: e0d5ef15e1f95cb094d2137a0b3da60cb888afa7722f84cdc358d78b4e2d525dbfb219c2695022d1c2c7c3d4ab280105406eca9e7a7adfcaced845810e7aa3b5
data/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
+ # [0.6.0] - 2017-02-01
7
+ - eleventh release
8
+ Using absolute time in `epoch seconds` instead of relative time `now`
9
+
6
10
  # [0.5.0] - 2017-01-24
7
11
  - tenth release
8
12
  Changing from Percentage of Difference to Percentage of Change.
@@ -61,4 +65,6 @@ Leaving 5 minutes to the data to consolidate.
61
65
  [0.3.4]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.3.4...0.4.0
62
66
  [0.4.0]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.4.0...0.4.4
63
67
  [0.4.4]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.4.4...0.4.8
64
- [0.4.8]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.4.8...HEAD
68
+ [0.4.8]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.4.8...0.5.0
69
+ [0.5.0]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.5.0...0.6.0
70
+ [0.6.0]: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker/0.6.0...HEAD
data/README.md CHANGED
@@ -11,10 +11,11 @@ We chose to do it as a Sensu plugin because it comes with Handlers that will all
11
11
  The result is that now we are able to experiment with our metrics and alerts, giving us a better understanding of whats going on in our systems.
12
12
 
13
13
  ## What it does
14
- The script will compare the values of yesterday at this time minus 25 minutes, with the values of today at this time minus 25 minus.
14
+ The script will compare the values of yesterday at this time minus period, with the values of today at this time minus period.
15
+ Being period a default value of 20 minutes.
15
16
  It will calculate the percentage of difference and will act on that.
16
17
  You will be able to set a threshold of warning and critical values where your program will act.
17
- It will also leave it 10 minutes to aggregate the data in influxdb, so we are more precise.
18
+ It will also leave it 5 minutes to aggregate the data in influxdb, so we are more precise.
18
19
 
19
20
  ## Components
20
21
  There is just one script that you can find at
@@ -9,6 +9,7 @@ require 'uri'
9
9
  require 'json'
10
10
  require 'base64'
11
11
  require 'addressable/uri'
12
+ require './time-management'
12
13
 
13
14
  class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
14
15
  option :host,
@@ -83,7 +84,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
83
84
  long: '--period=VALUE',
84
85
  description: 'Filter by a given day period in minutes',
85
86
  proc: proc { |l| l.to_i },
86
- default: 30
87
+ default: 20
87
88
 
88
89
  option :triangulate,
89
90
  long: '--triangulate=VALUE',
@@ -99,15 +100,28 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
99
100
  default: 2
100
101
 
101
102
  BASE_QUERY = 'SELECT sum("value") from '.freeze
102
- TODAY_START_PERIOD = 20
103
- YESTERDAY_START_PERIOD = 1465 # starts counting 1455 minutes before now() [ yesetrday - 20 minutes] to match with today_query_for_a_period start_period
103
+ TIME_MANAGER = TimeManagement.new
104
+
105
+ def today_start_period
106
+ TIME_MANAGER.period_epoch(Time.now, TIME_MANAGER.today_start_period)
107
+ end
108
+
109
+ def yesterday_start_period
110
+ TIME_MANAGER.period_epoch(Time.now, TIME_MANAGER.yesterday_start_period)
111
+ end
104
112
 
105
113
  def yesterday_end_period
106
- config[:period] + YESTERDAY_START_PERIOD
114
+ decrease = config[:period] + TIME_MANAGER.yesterday_start_period
115
+ TIME_MANAGER.period_epoch(Time.now, decrease)
107
116
  end
108
117
 
109
118
  def today_end_period
110
- config[:period] + TODAY_START_PERIOD
119
+ decrease = config[:period] + TIME_MANAGER.today_start_period
120
+ TIME_MANAGER.period_epoch(Time.now, decrease)
121
+ end
122
+
123
+ def epoch_time(time)
124
+ time.to_i.to_s
111
125
  end
112
126
 
113
127
  def base_query_with_metricname(metric)
@@ -135,8 +149,8 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
135
149
  config[:applyfilterbothqueries].nil? ? '' : " AND \"#{config[:tag]}\" =~ /#{config[:filter]}/"
136
150
  end
137
151
 
138
- def query_for_a_period(metric, start_period, end_period, istriangulated)
139
- query = base_query_with_metricname(metric) + ' WHERE time > now() - ' + end_period.to_s + 'm AND time < now() - ' + start_period.to_s + 'm'
152
+ def query_for_a_period_timespan(metric, start_period, end_period, istriangulated)
153
+ query = base_query_with_metricname(metric) + ' WHERE time > ' + end_period.to_s + 's AND time < ' + start_period.to_s + 's'
140
154
  query + add_filter_when_needed(istriangulated)
141
155
  end
142
156
 
@@ -149,7 +163,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
149
163
  end
150
164
 
151
165
  def query_encoded_for_a_period(metric, start_period, end_period, istriangulated)
152
- query = query_for_a_period(metric, start_period, end_period, istriangulated)
166
+ query = query_for_a_period_timespan(metric, start_period, end_period, istriangulated)
153
167
  encode_parameters(query)
154
168
  end
155
169
 
@@ -172,7 +186,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
172
186
  end
173
187
 
174
188
  def today_metrics
175
- today_info = metrics(config[:metric], TODAY_START_PERIOD, today_end_period, false)
189
+ today_info = metrics(config[:metric], today_start_period, today_end_period, false)
176
190
  @today_metric_count = validate_metrics_and_count(today_info)
177
191
  if @today_metric_count > 0
178
192
  series = read_series_from_metrics(today_info)
@@ -184,7 +198,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
184
198
  end
185
199
 
186
200
  def yesterday_metrics
187
- yesterday_info = metrics(config[:metric], YESTERDAY_START_PERIOD, yesterday_end_period, false)
201
+ yesterday_info = metrics(config[:metric], yesterday_start_period, yesterday_end_period, false)
188
202
  @yesterday_metric_count = validate_metrics_and_count(yesterday_info)
189
203
  if @yesterday_metric_count > 0
190
204
  series = read_series_from_metrics(yesterday_info)
@@ -196,7 +210,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
196
210
  end
197
211
 
198
212
  def today_triangulated_metrics
199
- today_triangulated_info = metrics(config[:triangulate], TODAY_START_PERIOD, today_end_period, true)
213
+ today_triangulated_info = metrics(config[:triangulate], today_start_period, today_end_period, true)
200
214
  @today_triangulated_metric_count = validate_metrics_and_count(today_triangulated_info)
201
215
  if @today_triangulated_metric_count > 0
202
216
  series = read_series_from_metrics(today_triangulated_info)
@@ -208,7 +222,7 @@ class CheckInfluxDbMetrics < Sensu::Plugin::Check::CLI
208
222
  end
209
223
 
210
224
  def yesterday_triangulated_metrics
211
- yesterday_triangulated_info = metrics(config[:triangulate], YESTERDAY_START_PERIOD, yesterday_end_period, true)
225
+ yesterday_triangulated_info = metrics(config[:triangulate], yesterday_start_period, yesterday_end_period, true)
212
226
  @yesterday_triangulated_metric_count = validate_metrics_and_count(yesterday_triangulated_info)
213
227
  if @yesterday_triangulated_metric_count > 0
214
228
  series = read_series_from_metrics(yesterday_triangulated_info)
@@ -0,0 +1,25 @@
1
+ class TimeManagement
2
+ TODAY_START_PERIOD = 5
3
+ YESTERDAY_START_PERIOD = 1445 # starts counting 1445 minutes before now() [ yesterday - 5 minutes] to match with today_query_for_a_period start_period
4
+
5
+ def today_start_period
6
+ TODAY_START_PERIOD
7
+ end
8
+
9
+ def yesterday_start_period
10
+ YESTERDAY_START_PERIOD
11
+ end
12
+
13
+ def period_seconds(a_given_day_period)
14
+ a_given_day_period * 60
15
+ end
16
+
17
+ def period_epoch(time, a_given_period)
18
+ period = time - period_seconds(a_given_period)
19
+ epoch_time(period)
20
+ end
21
+
22
+ def epoch_time(time)
23
+ time.to_i.to_s
24
+ end
25
+ end
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsInfluxDbMetricsChecker
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 5
4
+ MINOR = 6
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-influxdb-metrics-checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juanjo Guerrero Cerezuela
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-25 00:00:00.000000000 Z
11
+ date: 2017-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -202,6 +202,7 @@ description: This plugin retrieves metrics and evaluate them. Aiming to track ou
202
202
  email: "<pliyosan@gmail.com>"
203
203
  executables:
204
204
  - check-influxdb-metrics.rb
205
+ - time-management.rb
205
206
  extensions: []
206
207
  extra_rdoc_files: []
207
208
  files:
@@ -209,6 +210,7 @@ files:
209
210
  - LICENSE
210
211
  - README.md
211
212
  - bin/check-influxdb-metrics.rb
213
+ - bin/time-management.rb
212
214
  - lib/sensu-plugins-influxdb-metrics-checker.rb
213
215
  - lib/sensu-plugins-influxdb-metrics-checker/version.rb
214
216
  homepage: https://github.com/pliyosenpai/sensu-plugins-influxdb-metrics-checker