Skip to content

Eventuality

Ke kontrole služby je možné také navázat eventualitu, která se má provést pokud dojde ke zmeně stavu. Eventualita je v tomto případě příkaz který se za určitých podmínek spustí a vykoná nějakou činnost.

Nejčastější využtí tato funkce najde v restartování spadnutých služeb, může ale provádět i jiné činnosti. Aktuálně je nadefinováno a podporováno spouštění příkazů přes NRPE. Je ale možne funkci rozšířit dle potřeb, třeba na Icinga agenta, WMI nebo cokoliv jiného.

Pro úplný výpis toho co EventCommand zvládne doporučuji shlédnout dokumentaci

Příklad NRPE události

K atributům služby přidáme další atribut s názvem event_command specifikující kterou eventualitu chceme provést. Zatím je podporováno pouze NRPE. event_comand je podobně jako check_command dále kontrolován přes vlastní proměnné.

Příklad zahlídání procesu radiator a spuštění eventuality restart_radiator. Jakmile Icinga zjistí že proces není přítomen nebo je zombifikován (došlo ke změně stavu) vykoná svoji nadefinovanou činnost, v tomto příkladě restart procesu. Oba příkazy musí být nadefinovány na straně klienta:

NRPE.CFG:

command[check_radiator]=unset LANG && /usr/lib/nagios/plugins/check_procs -C perl -a "radiusd -foreground -no_pid_file -config_file /etc/radiator/radius.cfg" -c 1:1 -s RsIDSs
command[restart_radiator]=sudo /usr/sbin/service radiator restart || echo "Radiator not reset. Something went wrong."

Definice na straně Icingy bude vypadat:

URI:

https://monitor.ics.muni.cz:5665/v1/objects/services/krakonos.ics.muni.cz\!check_radiator

DATA:

{   "attrs": {
    "groups": [ 'skup1', 'skup2' ]
    "check_command": "nrpe",
    "event_command": "nrpe",
    "max_check_attempts": "3",
    "vars": {
      "nrpe_command": "check_radiator",
      "nrpe_event_command": "restart_radiator"
    }
  }
}

Definice příkazů eventualit

NRPE

Proměnná: Vlastnost:
nrpe_event_address Adresa NRPE klienta. Pokud není uvedeno, použije se adresa služby
nrpe_event_port Port NRPE klienta. Default je 5666
nrpe_event_command Příkaz který má klient provést
nrpe_event_no_ssl Bez TLS. Výchozí hodnota je false
nrpe_event_timeout_unknown Vypršení časového limitu vrátí UNKNOWN
nrpe_event_timeout interval:stav = Čas vypršení spojení:Stav ukončení (exit code) v případě že dojde k vypršení časového limitu
nrpe_event_arguments Argumenty které budou předány příkazu separované mezerou
nrpe_event_ipv4 Použij IPv4
nrpe_event_ipv6 Použij IPv6
nrpe_event_version_2 Požij packety pro NRPEv2