Portál AbcLinuxu, 13. května 2025 20:46

Dotaz: Nagios - notifikace podle skupin

17.3.2016 12:57 fish | skóre: 22
Nagios - notifikace podle skupin
Přečteno: 459×
Odpovědět | Admin
Zdravím,

mám nastavený monitoring v Nagiosu 3.4.1 na Debianu. Sledují se řádově desítky strojů, u kterých se ve většině případů opakují monitorované služby.

Tudíž konfigurace Hostů neobsahuje až na vyjímky žadné definice Service. Každý Host patří do jedné nebo více Hostgroup. Service v sobě nemají uvedené kontakty pro notifikace, aby nebylo nutné v případě změn kontaktovaných osob přepisovat konfiguraci na více místech. Všchno se tak zužuje na vazbu Host -> Hostgroup, Hostgroup -> Service a Hostgroup -> Contactgroup. Bohužel jsem poměrně záhy zjistil, že Nagios bůhví proč umožňuje provázat Hostgroup a Contactgroup, ale už tu Contactgroup neaplikuje na Service na Hostech v dané Hostgroup.

Dohledal jsem si, že taková funkcionalita se dá suplovat použitím Hostescalation a Serviceescalation. V takovém nastavení už notifikace odchazejí tak jak mají, ale narazil jsem na jiný problém, který nevím jak vyřešit. Na jednom ze strojů je služba, kterou chci notifikovat na úplně jiné kontakty než zbytek jeho služeb. Bohužel není způsob, jak z eskalace vyjmout nějakou službu, takže jediné co můžu udělat, je přidat eskalaci na tu konkrétní službu a v ní uvést jinou skupinu kontaktů. Nagios pak sloučí kontakty z obou definic. Sice docílím odeslání na ty speciální kontakty, ale zbytečně notifikuji i ty, které služba nezajímá.

Má někdo zkušenost s podobným nastavením? Případně nápad, jak docílit požadovaného chování? Napadá mě několik různých řešení, ale žádné mi nepřijde optimální. V nejhorším případě by se dal ten stroj vyjmout z Hostgroup a monitorované služby u něj vyjmenovat jednotlivě s konkrétními kontakty, ale tomu bych se chtěl s ohledem na snížení přehlednosti konfigurace vyhnout.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.3.2016 16:49 NN
Rozbalit Rozbalit vše Re: Nagios - notifikace podle skupin
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vytvor si specialni sluzbu s kontaktem, kterou namapujes primo na konkretniho hosta. Tim obejdes cele to schema.
17.3.2016 17:33 fish | skóre: 22
Rozbalit Rozbalit vše Re: Nagios - notifikace podle skupin
To bohužel nefunguje. Ta služba už tam definovaná je, včetně zamýšlených kontaktů, protože se nikde jinde nevyskytuje, takže nebyl důvod ji definovat globálně. Jenže tím, že existuje globální eskalace pro všechny služby v dané skupině, tak se přebije nastavení notifikací u té služby.

Vyjímka ze služeb v eskalacích nastavit nejde a můžu udělat vyjímku jen pro ten stroj (do serviceescalation jde napsat host_name !jmeno_serveru, ale ne service_description !nazev_sluzby). Tím se ale dostanu do obdobného stavu, který jsem psal jako příklad na konci dotazu. Budu muset pro ten stroj vyjmenovat všechny služby a u nich uvést kontakty. Když se pak v budoucnu rozhodnu změnit parametry sledování a notifikací pro nějakou službu, budu to muset udělat v globální definici a znovu pro ten konkrétní stroj a tomu bych se rád vyhnul.
17.3.2016 20:08 NN
Rozbalit Rozbalit vše Re: Nagios - notifikace podle skupin
Jenže tím, že existuje globální eskalace pro všechny služby v dané skupině, tak se přebije nastavení notifikací u té služby.
Tato sluzba, ale v zadne skupine neni. Vypadala by takto:
define service{
        service_description     extra_sluzba
	host_name		extra_host
	contacts		extra_kontakt
        max_check_attempts	5
	check_interval	5
	retry_interval	3
	check_period		24x7
	notification_interval	30
	notification_period	24x7
	notification_options	w,c,r
	}
18.3.2016 00:22 fish | skóre: 22
Rozbalit Rozbalit vše Re: Nagios - notifikace podle skupin
Přidám konkrétní konfiguraci, aby bylo vidět, že je v serviceescalation. Konfigurace stroje obsahuje pouze tohle (a dvě další extra služby, o které ale v tomhle případě nejde - mají se notifikovat stejně jako globální služby):
define host{
        use                     generic-host
        hostgroups              all, hosting
        host_name               aa.bb.cc
        }

define service{
        use                             generic-service
        host_name                       aa.bb.cc
        service_description             bflmpsvz
        check_command                   check_bflmpsvz
        contact_groups                  extra_kontakty
        }
Globální definice služeb vypadá třeba takto:
define service{
        hostgroup_name                  hosting
        use                             generic-service
        service_description             SSHD
        check_command                   check_ssh
        }
Hostgroup je definovaná pouze jako:
define hostgroup{
        hostgroup_name  hosting
        alias           Webhosting
        }
A eskalace jsou následující:
define hostescalation{
       hostgroup_name          hosting
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          hosting_notify
       }

define serviceescalation{
       service_description     *
       hostgroup_name          hosting
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          hosting_notify
       }
Pokud konfiguraci zapíšu takhle, odešle se notifikace pouze na hosting_notify. Skupina konktatů extra_kontakty se ignoruje. Pokud přidám
define serviceescalation{
       host_name                       aa.bb.cc
       service_description             bflmpsvz
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          extra_kontakty
       }
tak se notifikace služby bflmpsvz odešle na hosting_notify a extra_kontakty.
Řešení 1× (fish (tazatel))
6.4.2016 17:07 fish | skóre: 22
Rozbalit Rozbalit vše Re: Nagios - notifikace podle skupin
Po dalším testování a hledaní jsem našel blog, kde je popsaná nedokumentovaná syntaxe, jak vyjímku nakonfigurovat.

Když použiju svůj předchozí přiklad, tak pro vyjmutí eskalace pro konkrétní službu z
define serviceescalation{
       service_description     *
       hostgroup_name          hosting
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          hosting_notify
       }
je potřeba rozepsat definici následovně:
define serviceescalation{
       service_description     *
       hostgroup_name          hosting
       host_name               !extra_host
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          hosting_notify
       }

define serviceescalation{
       host_name               extra_host
       service_description     extra_sluzba
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          extra_kontakty
       }

define serviceescalation{
       host_name               extra_host
       service_description     *,!extra_sluzba
       first_notification      1
       last_notification       0
       notification_interval   60
       contact_groups          hosting_notify
       }
Zkoušel jsem touhle cestou jít už dřív, ale přestože u host_name jde napsat !extra_host, u service_description se musí uvést i *: *,!extra_sluzba.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.