Üdv Mindenkinek!
Az elképzelés egyszerű(-nek tűnik): Most ismerkedem a Nagios-szal, és ehhez szeretnék plug-int írni.
A szükséges könyvek megvannak, példakódokért széttúrtam a netet, tehát a téma inkább azokhoz szólna, akik már készítettek, vagy készítenek ilyesmit (a személyes tapasztalat miatt).
1, Mivel érdemes kezdeni? (valamilyen egyszerű feladat, amit egy "LVL 0" is meg tud csinálni)
2, Milyen nyelven érdemes megvalósítani? (C/C++, perl, python, vagy valami egyéb?)
3, Mik lehetnek a buktatók? Mire érdemes figyelni?
Segítségeteket előre is köszönve,
ptoth
- 8318 megtekintés
Hozzászólások
1. talalj ki magadnak valami egyszeru feladatot, de olyat ami megvalositasban is egyszeru. pl ha van muninod akkor ott egyik grafikonra csinalsz hatarerteket pl eth0 forgalom X fole megy
2. nagyonegyszeru dolgokhoz lehet bash. perlhoz van utils.pm (visszateresi ertekek constansai, par hasznos fuggveny), de van nagios-plugin-perl modul is, azzal mar bonyolultabb dolgokat lehet csinalni. C-set meg nem irtam.
3. ne a sajat fejed utan menj, nezz kodmintakat meglevo check-ekbol
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
1) mi a feladat? ha gondolkozz célirányosan.
Gyakorolni jó lehet,ha webservert akarsz ellenőrizni:
a) először sima tcp connect
b) le is töltöd a html oldalt
c) esetleg ezt ellenőrzöd is checksummal
2) megint attól függ:
-milyen szolgáltatást ellenőrzöl?
-azt mennyi időnként, hány hostra
-melyik az olcsóbb: kódot optimalizálni, vagy vasat bővíteni? :-)
pl: a fenti http ellenőrzés perl-ben kb 10x akkora erőforrást képes fogyasztani, mint C-ben megírva.
ha 5percenként futtatod 3 hostra, akkor semmi gond. ha 3percenkent 100 hostra, már ugye más a helyzet.
3) először kézzel futtasd, ellenőrizd a visszatérési és határértékeket. utána pedig figyeld a logot.
és a load-ot.
- A hozzászóláshoz be kell jelentkezni
_ismerkedesre_ teljesen jo lehet a shell script is. Eles mukodesnel mar lehet erdemes elgondolkodni egy C programon, de hol van o meg ettol?
Ja es aranyszabaly: altalaban az szokott lenni a dontes, hogy vasat alatolni mindig olcsobb. :-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Nalunk pl. egy tobbsoros MySQL select-et ellenoriz, bash-ban. Ha az ertek 70 folott van, warningot ad, ha 100 folott, Critical-t.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a hasznos tanácsokat, feladat-tippeket, szerintem először a tcp-s feladatnak fogok nekilátni, aztán evezek a nehezebb vizekre.
Üdv,
ptoth
Nem buktam meg. Csak az ötöshöz hiányzott még négy jegy...
- A hozzászóláshoz be kell jelentkezni
Jaigen, kb igy nez ki (teljes mysql-t kihagytam, 4-5 sor lenne)
root@NagiosMGMT commands]# cat check_10_perc.sh
#!/bin/sh
ERTEK=$(/usr/bin/mysql -uuser -ppass -hhost -e "SELECT ROUND(......" )
if test $ERTEK -ge $2 # CRITICAL
then
echo $ERTEK
exit 2
elif test $ERTEK -ge $1 # WARNING
then echo $ERTEK
exit 1
else
echo $ERTEK
exit 0 # OK
fi
exit
Meghivasa:
define service{
use generic-service
host_name GW
service_description Offline-Peers
check_command check_10perc!7!15
}
--
http://www.micros~1
- A hozzászóláshoz be kell jelentkezni
A mysql parancsbol lemaradt az -NB kapcsolo, meg a vegerol, hogy adatbazisnev.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Igen, mondtam, hogy nem az egeszet idezem be.
- A hozzászóláshoz be kell jelentkezni
En ugy ertettem, hogy az SQL-bol.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Ertem en. Magat a mysql parancsot nem ideztem be. De lehetne az is,
ERTEK=$(ls | wc -l)
aztan ha a konyvtarban bizonyos ertek folott van a fileok szama, dob egy W/C-t.
- A hozzászóláshoz be kell jelentkezni
Én ezt nem így csinálnám... A Mysql adatokat cron-ból töltögetném egy átmeneti fájlba, figyelve arra, hogy a scriptek ne futhassanak egymásra, és ezt az eredményfájlt olvasnám fel egy faék egyszerű másik scripttel - ami nézi a fájl létrehozásának az időpontját is, hogy "régi" adatoknál (valami nem kerek a lekérdezéssel) tudjon riasztani.
- A hozzászóláshoz be kell jelentkezni
Hat, a megrendelonek jo igy is :) Szepen jelez, ha gond van. Atmeneti filenak nem tudom, mi ertelme lenne....Ha meg a mysql aszongya, hogy nem tud kapcsolodni, a Nagios azt irja ki.
- A hozzászóláshoz be kell jelentkezni
Annyi az értelme, hogy ha beragad a query valami miatt, akkor azt is látod abból, hogy régi a fájl.
- A hozzászóláshoz be kell jelentkezni
Írj egy check_load plug-in-t shell script-ben! :)
Nekem muszáj volt, mert a gyári C-ben írt konstans 0-s load-ot ad Itaniumon futó HP-UX-okon. Meg amúgy is, minek erre C program, ha szinte minden UNIX(like) rendszeren van uptime/top parancs?! :)
Ami buktató és már több plug-in-emnél előjött, hogy ha performancia adatokat is ad vissza a plug-in-em, akkor az icinga inGraph modulja nem minden esetben tudja értelmezni az adatokat, így nem lesznek historikus mért értékeim. :(
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
+1, érdemes egyszerű dolgokkal kezdeni.
A kérdező gondolom a linuxot ismeri már annyira, hogy egy "cat /proc/loadavg" nem ismeretlen számára.
Bash-ben nem olyan nehéz a kimenetet felparse-olni, kb. awk {'print $1'}, s már meg is van az aktuális load.
Ezt már csak megfeleltetni kell a határértékeknek, s visszaadni a 0,1,2,3 értékek valamelyikét.
Jó gyakorlat arra, hogy megértse a nagios pluginek és maga a nagios működését.
- A hozzászóláshoz be kell jelentkezni
Erre minek is awk-ot indítani?
limit="1.00"
set $( cat /proc/loadavg )
test ${1/./} -gt ${limit/./} && echo "az elso nagyobb, mint ${limit}"
- A hozzászóláshoz be kell jelentkezni
Szebb megoldás, ez tény. Viszont egy kezdőnek az awk ezen megoldása olvashatóbb és könnyebben emészthetőbb (szerintem).
szerk.: bár a fene sem tudja, a végeredmény ott sem lesz sokkal rövidebb.
- A hozzászóláshoz be kell jelentkezni
Az awk lehet, hogy könnyebben emészthető, én is szeretem - azonban pont kezdőknek jó, ha látnak awk mentes megoldást, pláne, ha az tud máshol is használható dolgokat mutatni (set használata, bash változó értékének manipulálása). (A K&P Unix könyvben (2. kiadás, 151. oldal) a set `date` példa szerepel)
- A hozzászóláshoz be kell jelentkezni
Szebb, de nem jobb...
\o\ |o| /o/
- A hozzászóláshoz be kell jelentkezni
Bővebben? Ekkora "feladat"-ra awk-t indítani minimum luxus.
- A hozzászóláshoz be kell jelentkezni