A chroot-olt környezet egy nem szokványos megoldás, legalábbis hálózat monitorozás szempontjából nem. Én azért döntöttem ez mellet, mert így ezt a szolgáltatást szükség esetén egyszerűen át lehet helyezni másik gépre. Esetemben egy régi szerverre telepítem, de már tervben van egy új szerver telepítése és oda a szolgáltatások költöztetése.
A chroot-olt (chrooted) környezet egy alaprendszerből indul ki, ami egy alap rendszerből áll, mindenféle szolgáltatás nélkül. Erre fogom felépíteni a rendszert. A chrooted környezetben lesz webszerver, de nem ez lesz az elsődleges, így ezt más porton kell használni. Kelleni fog MySQL is, de ebből is elég egy...
Az alap rendszert a /var/chroot/monitoring alá építem fel, a debootstrap segítségével. Ezzel a megoldással elrérő rendszereket is össze lehet állítani, például esetemben Debin Lenny „hostra” Squeeze-t fogok telepíteni:
/etc/fstab aljába az alábbi sorokat felvesszük:
proc /var/chrooted/monitoring/proc proc defaults 0 0
sysfs /var/chrooted/monitoring/sys sysfs defaults 0 0
majd mount -a -val csatoljuk fel.
A chroot paranccsak lehet „átlépni” a chrooted környezetbe:
Az Icinga a népszerű Nagios szupportőrjeinek egy, a Nagios-ra épülő és vele teljesen kompatibilis folk-ja. A fejlesztése folyamatban van ,így várhatók benne újítások. Felmerül a kérdés, hogy miért van rá szükség, hiszen a Nagios már bizonyított.
Itt található egy részletes táblázat ami a fontosabb funkciók szerint összehasonlítja az Icinga Classic ,Icinga New Web és a Nagios Core-t:
https://www.icinga.org/nagios/feature-comparison/
A Nagios XI nincs itt felsorozva, mert az fizetős változat
Állítsunk be erős jelszót a felhasználónak:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
A lefordítani kívánt csomagokat a /usr/src/-be töltjük le.
A /usr/local/icinga/etc/icinga.cfg fájl végéhez hozzáadjuk az idoutils moduljának támogatását:
A „Host” gépen van a MySQL szolgáltatás, így itt kell létrehozni az adatbázist, felhasználókat...
mysql> CREATE DATABASE icinga;
mysql> GRANT USAGE ON . TO 'icinga'@'localhost' IDENTIFIED BY 'icinga' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO 'icinga'@'localhost';
mysql> FLUSH PRIVILEGES ;
mysql> exit
A /usr/local/icinga/etc/ido2db.cfg fájl következő sorait szerkeszteni kell (ugye erős jelszót állítottunk a felhasználónak?):
db_host=127.0.0.1
db_name=icinga
db_user=icinga
db_pass=icinga
térjünk vissza a /usr/src/icinga-1.5.1/ könyvtárba
New password:
Re-type new password:
Adding password for user icingaadmin
A későbbi egyszerűbb üzemeltetés miatt a /etc -ben is jelenítsük meg az icinga konfigját:
A hivatalos telepítő leírás az alábbi módon javasolja a Nagios plugin-ok előkészítését, de ezt a csomagtelepítővel és némi drótozással is meg lehet oldani
Az NConf eredetileg a Nagios-hoz készült webes konfiguráció szerkesztő alkalmazás. Segítségével egyszerűen és gyorsan konfigurálhatjuk a monitorozó rendszerünket. Mivel a Nagios és az Icinga konfigurációja megegyezik, így használható a folkhoz is. Az Nconf MySQL-ben tárolja a konfigurációt
Az Icingahoz használható további konfiguráció szerkesztő / generáló alkalmazásokról itt lehet többet olvasni:
https://www.icinga.org/2011/11/17/addons-for-icinga-configuration-interfaces-tools/
mysql szerveren:
mysql> CREATE DATABASE nconf;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON nconf
.* TO 'nconf'@'localhost' IDENTIFIED BY 'nconf';
Query OK, 0 rows affected (0.03 sec)
mysql> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.06 sec
chrooted környezetben néhány fájl szerkesztésre szorul:
A /usr/local/nconf/config/mysql.php következő sorait írjuk át:
define('DBHOST', "127.0.0.1");
define('DBNAME', "nconf");
define('DBUSER', "nconf");
define('DBPASS', "nconf");
Ha chroot-olt környezetben dolgozunk, a MySQL kapcsolódás nem fog menni, ha localhost-ot használunk, át kell írni 127.0.0.1-re. (Nem vagyok benne biztos, talán azért, mert localhost esetén socke-en kommunikál?)
/usr/local/nconf/config/nconf.php
define('NCONFDIR', "/usr/local/nconf");
define('NAGIOS_BIN', "/usr/local/icinga/bin/icinga");
Majd:
Így mindenki futtathatja a fájlt.
Érdemes az NConf-hoz is autentikációt állítani, ez a legegyszerűbb:
/usr/local/nconf/config/authentication.php
define('AUTH_ENABLED', "1");
define('AUTH_TYPE', "file");
/usr/local/nconf/config/.file_accounts.php
admin::valami::admin::Administrator::
Nincs szükségünk a telepítő fájlokra:
Nem túl magyaros szakaszcím. Az a lényege, hogy amikor az NConf-ban a Generate Nagios config parancsra kattintunk, automatikusan létrejön egy tömörített fájl, benne az Icinga (Nagios) konfigurációval. Az NConf-fal kapunk egy egyszerű szkriptet, ami ezt elvégzi automatikusan.
A /usr/local/nconf/ADD-ONS/deploy_local.sh fájlt kell szerkeszteni az alábbiak szerint:
OUTPUT_DIR="/var/chrooted/monitoring/usr/local/nconf/output/"
NAGIOS_DIR="/var/chrooted/monitoring/usr/local/icinga/etc/"
Az utolsó előtti sort pedig át kell írni erre:
/etc/init.d/chroot_icinga reload
A host gép /etc/crontab fájljába a következő képen ütemezve minden 5. percben ellenőrizzük, hogy történt-e konfiguráció generálás:
/5 * root /var/chrooted/monitoring//usr/local/nconf/ADD-ONS/deploy_local.sh
Az első futtatást érdemes kézzel csinálni. Ekkor létrejön az Icinga (/etc/icinga, /usr/local/icinga/etc)alatt két fontos könyvtár:
/usr/local/icinga/etc/Default_collector/
/usr/local/icinga/etc/global/
Ezeket kell az Icinga-nak megadni a /usr/local/icinga/etc/icinga.cfg fájl szerkesztésével.
Az összes cgf_file kezdetű sort ki kell kommentelni és az alábbi sorokat felvenni:
cfg_dir=/usr/local/icinga/etc/Default_collector/
cfg_dir=/usr/local/icinga/etc/global/
Nem árt egy kicsit csinosítani az Icingát, a képeket csomagban kapjuk. A következő parancsokkal telepíthetők:
Az Nconf misccommand menüpontja alatt a notify-host-by-email parancssorát az alábbira módosítottam:
/usr/bin/printf "%b" " Icinga \n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -f "MONITORING
monitoring@domain.hu" -t $CONTACTEMAIL$ -s 127.0.0.1 -u " $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ "
A notify-service-by-email parancssorát pedig az alábbira:
/usr/bin/printf "%b" " Icinga \n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/sendemail -f "MONITORING monitoring@domain.hu" -t $CONTACTEMAIL$ -s 127.0.0.1 -u " $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$ is $HOSTSTATE$ "br/><br/></monitoring@domain.hu/monitoring@domain.hu