Nagios halado tervezes

Legalabbis szerintem halado :)
Mukodik szepen a Nagios, monitoroz kb. 20 szervert. Gond eseten jon a level.
Namost, en azt szeretnem megoldani, hogy _bizonyos_ esemenyekrol SMS jojjon,
tehat a normal mellett masik emilcimre is menjen level. A kovetkezo lenne:
PAR szervernel HA nem megy az apache es/vagy all a szerver (pingre nem valaszol),
akkor kuldjon SMS-t. Tehat ha xy szerveren ott all 500 level, az is kritikus, de
nem kell rola SMS, mig ha a test szerver hajnali kettokor leall (vagy az irodai gep),
arrol sem kellene SMS.

Hogyan tudnal ezt minel egyszerubben megoldani? (Nem teljes leirast varok, csak otleteket :)

Hozzászólások

Én régen úgy oldottam meg, hogy felvettem egy olyan groupot, amiben benne volt az emailes és az sms-es user is. Az 'sms' user is emailben kapta a riasztást, de az ő email címére érkező leveleket megkaptam sms-ben. Erre az olcsosms.hu-t használtam, ott be lehetett állítani, hogyha jön egy mail az ottani fiókodra, akkor azonnal kapd meg sms-ben (asszem tán 9huf/sms). Azóta már nem használom, de szerintem nem változott a felállás.

Elöljáróban:
A nagiost én Nconffal piszkálgatom, ez generálja a konfigot.

- lérteholo egy contact group-ot, felveszel bele egy felhasználót egy email címmel
- Azt email cím mailboxában valami kis script figyeli, hogy milyen levél jött és ha megfelel a feltételeknek, akkor elküldi smsben - ez részlet kérdés
- a nagiosban szolgáltatásonként tudsz megadni akár több contact groupot, így tudod szabályozni, hogy melyik szolgáltatásokról küldjön levelet, majd smst

Masodik pont: na ez a hackolas, amit nagyon szeretnek elkerulni. Ez itt es most mukodik, de 1-2 ev mulva rohadtul nem fogok emlekezni, micsinal az a script, ami a levelekt figyeli, masodsorban mashova attelepiteni se egyszeru.
Szoval alapbol a nagios configjaval szeretnem megoldani.

De koszi az otletet!

--
http://www.micros~1

A dolog nagyon 1xű, minden mobil szolgáltatónál van lehetőség SMS-ben kiküldeni az emaileket.
Pl. Pannon-nál 4-5 Ft-ért ki küldik, és még szűrőket is használhatsz.

Amit meg akarsz kapni SMS-ben azt mobil email címedre is elküldöd, külön eszközt, scriptet nem igényel, megbízható.

Szia.

A menetét már leírták előttem, amit még érdemes megemlíteni, hogy az alábbi paraméterekkel szépen szabályozhatóak contact-onként az értesítések:


host_notifications_enabled [0/1]
service_notifications_enabled [0/1]
host_notification_period timeperiod_name
service_notification_period timeperiod_name
host_notification_options [d,u,r,f,s,n]
service_notification_options [w,u,c,r,f,s,n]
host_notification_commands command_name
service_notification_commands command_name

Üdv: Zoli

Koszi, ezt megnezem. Nem tudtam, hoyg a contact-hoz is be lehet allitani. Mindjart nezem tovabb a doksit.
(mondjuk, itt fentebb nem latom, hoyg ez melyik hostra es service-re vonatkozzon, pedig ugy lenne szep, ha megcsinalhatnam hostokra vagy meginkabb hostgroupokra a fentit). De innen mar el tudok indulni, koszi.

--
http://www.micros~1

Ize...Hozzatennem (mert lathatoan felreertheto a kerdesem), nem az a gondom, hogyan kuldjek SMS-t ha level erkezik :)
(pannonmail.hu -> sms)
Az a gondom, hogyan kellene "szepen" megcsinalni azt, hogy csak az altalam kivalasztott hostok/servicek allapotarol jojjon kulon ertesites. Tehat
ket gep: a es b
ket service: x es y

I. a. gepen fut y service, crit, sms megy, x service nem megy, ugyan krit, megse megy sms
II. b gepen meg mondjuk forditva, ha y service krit, nem megy sms, ha x service krit. akkor pedig megy.

Lathatoan az a gondom, hogyha
a) minden gepen gond lenne bizonyos service kritikussa valasa
b) egy gepen minden service kritikussa valasa
eseten konnyen meg lehetne irni.

--
http://www.micros~1

Nem, az jo, amit irtal feljebb, csak nem akarok hozza kulon scriptet irni. Amugy amr korvonalazodik a megoldas,
szerintem az lesz, hoyg kulon service template-t csinalok arra a service/host-ra, amelyiket mashoyg szeretnek kezelni mint a tobbit. Csak szokas szerint a sok user hulye kerdesekkel nyaggat, ezzel meg nem haladok :(

Ha megvan, megirom.
--
http://www.micros~1

Nálunk ez úgy működik - igaz, nem szelektíven -, hogy egy egyszerű shell script hívogat egy URL-t (PHP-kód van mögötte), ha valami esemény van. Az URL egy PHP-kódra mutat, ami átveszi az értesítés paramétereit (típus,hosztnév,állapot,mobilszámok), majd egy COM-portra kötött GSM-adapteren (modem) keresztül kiküldi az SMS-t a megadott számokra (a kiküldést egy C-ben megírt démon kezeli, DB-be bejönnek az SMS-ek, ezeket fix időközönként lehúzza, és szépen sorban kiküldi az üzeneteket).

Nem állítom, hogy ez egy egyszerű/könnyen kivitelezhető megoldás, de nálunk abszolút bevált, már kb. fél éve monitorozzuk így a szervereinket. Ezzel a módszerrel bármely service vagy host leállása esetén 5 percen belül értesülünk a problémáról.

Persze lehet egyszerűsíteni a dolgon, ha a GSM-adaptert a nagiost futtató gépre kötöd, így közvetlenül tudod vezérelni, de nálunk ezt nehéz lett volna megoldani.

Külső szkriptet meghívni így lehet a nagiosból:


# notify-host-by-sms
define command{
command_name notify-host-by-sms
command_line /usr/local/sbin/nagios-host-by-sms.sh "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$HOSTSTATE$" "$CONTACTPAGER$"
}

# notify-service-by-sms
define command{
command_name notify-service-by-sms
command_line /usr/local/sbin/nagios-service-by-sms.sh "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$SERVICEDESC$" "$SERVICESTATE$" "$SERVICEOUTPUT$" "$CONTACTPAGER$"
}

Ezt a commands.cfg-ben kell deklarálni.

A szelektív küldést is meg lehet oldani, ha felveszel egy új contact group-ot, és ezt hozzárendeled azokhoz a hostokhoz vagy service-ekhez, amiket sms-értesítéssel szeretnél monitorozni.

Üdv:
Gergő

A teszt szervereket minek figyelteted ejjel nappal?

Azokat nem elég csak munkaidőbe? Ha iccaka ledoglik, hát IJ, ezért riasszon...

Dehogynem. Csak jelenleg mindegyik szerver ugyanugy figyelve van, legfeljebb a
service-ekben van kulonbseg. Ha nem irtam volna, a rendszer erosen finomhangolasra szorul, jelenleg azon orulok, hogy sikerult beuzemelnem es poccre tudok hozzaadni debiant es centost, VPS gepet es fizikait. Ezutan kell megoldanom a Windows serverek figyeleset es az egeszet finomhangolni, de legeloszor a fentivel akartam kezdeni.

Csak az a baj, hogy ez csak egy a sok munkam kozul, viszont nem egyszeru mondjuk egy "nem tudok tavolrol csatlakozni a MySQL szerverhez" es egy " nem mennek el a leveleim az Outlookbol" problema kozott erre is szakitani idot. Valahoyg nehezen all at az agyam arrol, hogy egyik pillanatban a suket usernek magyarazzam, mit baszott el, ket perc mulva meg probaljam a rendszer strukturajat megtervezni, aztan ket perc mulva a masik szerencsetlennel foglalkozzak. Igy csak akkor allok neki, ha varhatoan legalabb feloram van ra.

--
http://www.micros~1

Nos, erdekes dologra lettem figyelmes: ugy tunik, a template-ben beallitott dolgokat nem lehet felulbiralni...


# Generic host definition template - This is NOT a real host, just a template!

define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1       ; Host notifications are enabled
        event_handler_enabled           1       ; Host event handler is enabled
        flap_detection_enabled          0       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
		check_command                   check-host-alive
		max_check_attempts              10
		notification_interval           0
		notification_period             24x7
		notification_options            d,u,r
		contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }

Ha most a host beallitasnal ez van:


define host{
	use                     generic-host            ; Name of host template to use
	host_name               sajathost
	alias                   Sajat
	address                 192.168.1.1
#	contacts 		
	contact_groups          sajatadmins
        }

Term.a contacts-ban kesz van az uj group, harom userrel, "sajatadmins" nev alatt.

Nos, a template generic-hostban levo "admins" kapja az uzeneteket, veletlenul sem a "sajatadmins". Hogyha a sajatadmins csoport tagjait itt fentebb beirom a "contacts" mezobe, az viszont mukodik.

Pedig elvileg mukodne az override a template-n:
http://nagios.sourceforge.net/docs/3_0/objectinheritance.html

UPDATE: nemcsak az override, de az appaned se mukodik...Szoval ez se jatszik:

contact_groups +sajatadmins

Fel se veszi. Csak akkor mukodik, ha a template-bol torlom. De ezt jo tudni, mert igy gyartok sajat template-t a fenti dolgokra....es abban lesznek a contact-ok, akiket critical eseten ertesiteni kell.
--
http://www.micros~1

Nálam is ugyanígy van beállítva és probléma nélkül működik. Milyen verziójú a Nagios? A contact group, a contact és a timeperiod bejegyzéseket be tudod másolni, vagy felrakni pastebin-re?

A sajathost hostnál a lezárás után az már a fájl vége? Futottam már bele olyanba, hogy nem volt a konfig fájl végén sortörés és ezért nem működött rendesen az adott szoftver. Azt nem tudom már, hogy épp a Nagios esetében volt-e ilyen.

Üdv: Zoli

Most ket kulon szerveren is kiprobaltam (tobb nincs, ami nagiost futtatna, mindenhova csak nrpe ment). Mindketto Debian testing. Mindketto ugyanezt csinalja. Most probaltam bugreportot kuldeni, de vmiert az az erzsem, tokures level ment :(

Debianbol: 3.2.1-2 . Sortores rendben, megneztem. Masolom a kert cuccokat:


define contact{
        contact_name                    celtic
        alias                           Celtic
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           celtic@xx.yy
        }

define contact{
        contact_name                    masikadmin
        alias                           Masik Admin
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           masikadmin@yy.xx
        }


define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 celtic
        }
define contactgroup{
        contactgroup_name       sajatadmins
        alias                   Sajat adminok
        members                 celtic,masikadmin
        }

A host, mint feljebb is:


define host{
	use                     generic-host    
	host_name               sajathost
	alias                   Sajat
	address                 192.168.1.1
	contact_groups          sajatadmins
        }

Roppantul nem erdekli, hogy felulirtam. Az alabbiakkal probalkoztam:
I. contact_groups +sajatadmins

II. contact_groups null
contact_groups sajatadmins

Hiaba minden...Masik gepen tokugyanigy, mondjuk azonos a Nagios verzioja.

--
http://www.micros~1

Itt Debian Lenny, Nagios: 3.0.6.

Még ezekkel próbáld meg kiegészíteni a megfelelő contact bejegyzéseket:


define contact{
name celtic
contactgroups admins,sajatadmins

host_notifications_enabled 1
service_notifications_enabled 1
}

define contact{
name masikadmin
contactgroups sajatadmins

host_notifications_enabled 1
service_notifications_enabled 1
}

Ha így sem megy, akkor sajnos nincs több ötletem egyelőre.

Üdv: Zoli

Es basszus, rajottem! Felreertettem a Nagios felepiteset. Igy hittem:
1. host
- service
- service
2. host
- service
- service
stb

Es ez alapjan, amit a hostra beallitok, az ervenyes lesz az osszes ott mukodo szervizre. Hat nem :)
/var/cache/nagios3/objects.cache mutatja az effektiv ertekeket. Akkor jottem ra, hogy inkabb matrixos felepitese van, vagyis

service1 service2 service3
host1
host2
host3

alakban. Vagyis, nem eleg a hosthoz megadni a contactot, a service-hez is meg kell.
Viszont igy egesz egyszeru lesz az eredeti problemam is. Felteve, ha egy hosthoz/service-hez hozza tudok rendelni ket erteket is, valahoyg igy:

define service {
use generic_service
host_name xygep
check_command xy_gep_warn
contact_groups emil_groups
}

define service {
use generic_service
host_name xygep
check_command xy_gep_crit
contact_groups sms_groups
}

Hat itt volt nekem a nagy problemam, felreertettem a mukodeset.

--
http://www.micros~1

Lehet, hogy félreértem amit szeretnél, de ehhez nem szükséges két értéket hozzárendelni.

Például, ha megvan a szükséges service bejegyzésed, már csak a contact_groups értékével kell variálni. Azon service esetén, ahol kell sms-t küldeni: contact_groups emil_groups,sms_groups, ahol nem, csak sima e-mail: contact_groups emil_groups.

Ezt követően a megfelelő csoportba tartozó contact bejegyzésekben meghatározod, hogy milyen host és service üzeneteket küldjön az adott címre. Pl. az e-mail címre mehet minden:

define contact{
[...]
service_notification_options w,u,c,f,r,s
host_notification_options d,u,f,r,s
email celtic@xx.yy
}

Az sms értesítés csak a critical, down vagy ismeretlen állapot esetén:

define contact{
[...]
service_notification_options u,c
host_notification_options d,u
email celtic-sms@xx.yy
}

Ha jól értettem ezt szeretnéd elérni.

Üdv: Zoli

Szia!
Eppen mondani akartam, hogy ugyanezt irtak feljebb is es hogy vegulis ezt tervezem, amikor meglattam, hoyg eredetileg is Te irtad :)

Most, hogy mar (remelhetoleg) rajottem, a host es service kozti kulonbsegre, ez nagyon is megfelelo lesz, koszi! Holnap (vagy hetvegen) nekiallok. Csak ne kellene Java zh-ra keszulnom, az osszes eddigi ket ora utan :( (vagy 2*2*0,75 ora, haromnegyed oras egy tanora, egy alkalommal ketto van es eddig ketto volt, de az elson nem volt vmware, mert a rendszergazdaknak az egesz nyaruk nem volt eleg, hoyg tartomanyba rakott gepekre felhuzzanak egy image-t...)

--
http://www.micros~1

nem értem a problémát. van host és service nofitication.
ha a host down, akkor kapsz SMS-t, ha nem down, "csak" apache állt le akkor nem kapsz.
(cserébe nem a PING service fog riasztani SMS-ben, azaz packetloss-ról nem kapsz értesítést)

ezt lehet kombinálni időfeltétellel is (azaz vannak bizonyos események, amik csak munkaidőben riasztanak)