kennel 1.140.0 → 1.141.0
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/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
|