kennel 1.140.0 → 1.141.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kennel/models/monitor.rb +34 -5
- data/lib/kennel/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e82dacccbb0c14e8b8bedd9545b782b7405ca057a02724e89aa03f0a624fa3e4
|
4
|
+
data.tar.gz: f70302b436c823c6cbcb765edbd56da1103b83fadf398c2c904372a8f73b36a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c34733bc887129a6bda1ebc96898ca46cec0346bb008af8020d4159d23db515de54d8db8813749ba7883c0417b0cecb243a530789a4a99d6aa146679996007aa
|
7
|
+
data.tar.gz: a7821e5e67899aa71a068bfabbd895f7c69a369a187b7245510fc969a69d4354bad352cfb953f64293140c6282fa21d38f0e8695ab60d9186a19b30faeddd019
|
@@ -30,12 +30,11 @@ module Kennel
|
|
30
30
|
}.freeze
|
31
31
|
DEFAULT_ESCALATION_MESSAGE = ["", nil].freeze
|
32
32
|
ALLOWED_PRIORITY_CLASSES = [NilClass, Integer].freeze
|
33
|
-
ALLOWED_UNLINKED = [] # rubocop:disable Style/MutableConstant placeholder for custom overrides
|
34
33
|
|
35
34
|
settings(
|
36
35
|
:query, :name, :message, :escalation_message, :critical, :type, :renotify_interval, :warning, :timeout_h, :evaluation_delay,
|
37
36
|
:ok, :no_data_timeframe, :notify_no_data, :notify_audit, :tags, :critical_recovery, :warning_recovery, :require_full_window,
|
38
|
-
:threshold_windows, :scheduling_options, :new_host_delay, :new_group_delay, :priority, :
|
37
|
+
:threshold_windows, :scheduling_options, :new_host_delay, :new_group_delay, :priority, :variables, :on_missing_data,
|
39
38
|
:notification_preset_name
|
40
39
|
)
|
41
40
|
|
@@ -265,6 +264,7 @@ module Kennel
|
|
265
264
|
end
|
266
265
|
|
267
266
|
validate_using_links(data)
|
267
|
+
validate_thresholds(data)
|
268
268
|
|
269
269
|
if type == "service check" && !data[:query].to_s.include?(".by(")
|
270
270
|
invalid! :query_must_include_by, "query must include a .by() at least .by(\"*\")"
|
@@ -320,16 +320,45 @@ module Kennel
|
|
320
320
|
case data[:type]
|
321
321
|
when "composite" # TODO: add slo to mirror resolve_linked_tracking_ids! logic
|
322
322
|
ids = data[:query].tr("-", "_").scan(/\b\d+\b/)
|
323
|
-
ids.reject! { |id| ALLOWED_UNLINKED.include?([tracking_id, id]) }
|
324
323
|
if ids.any?
|
325
324
|
invalid! :links_must_be_via_tracking_id, <<~MSG.rstrip
|
326
|
-
|
327
|
-
If
|
325
|
+
Use kennel ids in the query for linking monitors instead of #{ids}, for example `%{#{project.kennel_id}:<monitor id>}`
|
326
|
+
If the target monitors are not managed via kennel, add `ignored_errors: [:links_must_be_via_tracking_id] # linked monitors are not in kennel`
|
327
|
+
MSG
|
328
|
+
end
|
329
|
+
when "slo alert"
|
330
|
+
if (id = data[:query][/error_budget\("([a-f\d]+)"\)/, 1])
|
331
|
+
invalid! :links_must_be_via_tracking_id, <<~MSG
|
332
|
+
Use kennel ids in the query for linking alerts to slos instead of "#{id}", for example `error_budget("%{#{project.kennel_id}:slo_id_goes_here}")
|
333
|
+
If the target slo is not managed by kennel, then add `ignored_errors: [:links_must_be_via_tracking_id] # linked slo is not in kennel`
|
328
334
|
MSG
|
329
335
|
end
|
330
336
|
else # do nothing
|
331
337
|
end
|
332
338
|
end
|
339
|
+
|
340
|
+
# Prevent "Warning threshold (50.0) must be less than the alert threshold (20.0) with > comparison."
|
341
|
+
def validate_thresholds(data)
|
342
|
+
return unless (warning = data.dig(:options, :thresholds, :warning))
|
343
|
+
critical = data.dig(:options, :thresholds, :critical)
|
344
|
+
|
345
|
+
case data[:query]
|
346
|
+
when /<=?\s*\S+\s*$/
|
347
|
+
if warning <= critical
|
348
|
+
invalid!(
|
349
|
+
:alert_less_than_warning,
|
350
|
+
"Warning threshold (#{warning}) must be greater than the alert threshold (#{critical}) with < comparison"
|
351
|
+
)
|
352
|
+
end
|
353
|
+
when />=?\s*\S+\s*$/
|
354
|
+
if warning >= critical
|
355
|
+
invalid!(
|
356
|
+
:alert_less_than_warning,
|
357
|
+
"Warning threshold (#{warning}) must be less than the alert threshold (#{critical}) with > comparison"
|
358
|
+
)
|
359
|
+
end
|
360
|
+
end
|
361
|
+
end
|
333
362
|
end
|
334
363
|
end
|
335
364
|
end
|
data/lib/kennel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.141.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diff-lcs
|