Notifikation host down

Folgende Ausgangslage

Host hat ein Label Host:label
Services (nur welche wir alarmieren wollen) das Label service:label

In der Notifikation habe wir

Match host labels: Host:label
Match service labels: service:label

Match host event type

any > UP
any > DOWN
any > UNREACHABLE

und
Match service event type

any > OK
any > WARN
any > CRIT

Nun wen nein Host auf down geht wird eine Notifikation ausgelöst aber wir haben folgende Meldung im log:

2024-05-21 13:37:39,067 [15] [cmk.base.notify] Global rule ‘UnsereNotifikation’…
2024-05-21 13:37:39,067 [15] [cmk.base.notify] → does not match: The service labels {’ service ': ’ label '} did not match {}

Nun, woher hat der Host wenn er down ist ein Servcie label? Und wo könnte ich das setzen?

Das ist eine UND-Verknüpfung, anders als dann weiter unten bei den Zustandsübergängen.

Verstehe dann aber nicht ganz weshalb auf dem Host welcher down ist der Service geprüft wird respektive das Label, wenn es ein solches ja gar nicht gibt.

Der Service geht dann in “Stale” - da Checkmk keine Möglichkeit hat den korrekten Service State zu ermitteln. Aber der Service ist ja noch da. Oder habe ich die Frage falsch verstanden?

1 Like

Alle conditions werden mit einem “und” verknüpft. Außer “Match host event type” und “Service event type”. Das ist ein “oder”.

Abschnitt " The exception to the AND operation":

Hier kommt jetzt eine Host notification rein, die keine service label haben kann. Daher kriegst Du den log Eintrag (" did not match {}").

Ich habe das gleiche Problem.

Die Anforderung ist eigentlich super simpel und logisch:

  1. wenn ein Host ein host label businiess-critical:true hat schick eine SMS wenn der Host DOWN ist

  2. wenn ein Service ein service label businiess-critical:true hat schicke eine SMS wenn der Service CRIT ist.

Aber das mit Checkmk umzusetzen ist mir gerade nicht möglich und ich finde es verwirrend.

Versuche

1. eine notification rule für host & service

Wenn man eine Notification Regel hat, die als Condition:

Match host labels: businiess-critical:true
Match service labels :business-critical:true

hat, dann stellt sich die Frage, ob die Regel matched wen ein Host DOWN ist?

Denn ein Host wird ja duch den Host check command als DOWN gemessen
und das kann ja kein service labels business-critical:true haben, oder?

Wenn man also mit einer Regel für beides: Host und Service Notifications
arbeiten will, dann wird ein Host DOWN nicht notifiziert vermutlich, weil die
Condidtion Match service labels :business-critical:true auf einen Host nie zutreffen wird.

2. zwei notification rules

Daher habe ich als Workaround versucht mit zwei Regen zu arbeiten,

  • eine für Hosts und
  • eine für Services

Hier mal gekürzt aus der etc/check_mk/conf.d/wato/notifications.mk

 notification_rules += [
    {
        "description": "Regel 0: SMS Hosts",
        "match_host_event": ["?r", "?d", "?u"],
        "match_hostlabels": {"business-critical": "true"},
        ...
    },
    {
        "description": "Regel 1: SMS Services",
        "match_service_event": ["?c"],
        "match_servicelabels": {"business-critical": "true"},
        ...
    },
...

Regel 1 für Hosts notifiziert aber auch alle Services des Hosts, was nicht erwünscht ist.
Es scheiter daran, dass ich Regel 1 für die Hosts nicht auf nur Host Events einschränken kann.

Im Kontext eines Notifications Scripts gibt es ja die Umgebungsvariable
NOTIFY_WHAT=HOST und NOTIFY_WHAT=SERVICE aber diese Weiche kann ich in
Notifiation Rules nicht als Condition benutzen.

Also wie ich es auch mache mit 1. oder 2. , entweder bekomme ich Host DOWN nicht notifiziert, oder ich bekomme unerwünschte Service Notifications.

Was nun?

Moin Y0d0g,

das kann ich mir (ohne jetzt tiefer eingestiegen zu sein) ehrlich gesagt schwer vorstellen, dass das mit zwei Regeln nicht funktioniert:

Danke _rb für die prompte Antwort!

Meinst Du so:

oder so

Hallo zusammen,

es ist leider so, dass wenn man in der Notification Rule “positive Service Filter nutzt” wie beispielsweise:

  • Match Service
  • Match service groups
  • Match Service Labels

  • diese niemals für Host Probleme funktionieren wird. Dann braucht man 2 Regeln, eine für Host und eine Für Service Probleme.

Wenn in der Notification nur “negative Exlcude Filter” für Services nutzt, wie:

  • Exclude Services
  • Exclude Service Groups

  • dann kommt man mit einer Notification Regel für Host- und Service-Problem hin.

@hadu, danke dafür, dass Du das noch mal so klar formuliert hast.

@_rb , Du hast natürlich mal wieder recht, es funktioniert genau so wie Du es sagst und auch in der Inline-Help steht.

Ich hatte leider falsche Informationen, weil wir in diesem Fall ein Port 443/tcp check
als host check command definiert hatten (host is ein vhost) und daher sah der Hostalarm in seinen Details aus wie ein Service alarm. _rb hat recht, ich habe mich getäuscht, sorry.

1 Like