Icinga és NConf telepítése chroot-olt környezetbe
Icinga, NConf, chroot
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...
Alaprendszer telepítése
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:
# mkdir -p /var/chrooted/monitoring
# apt-get install debootstrap
# debootstrap squeeze /var/chrooted/monitoring/ http://ftp.hu.debian.org/debian
/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.
# cp /etc/hosts /var/chrooted/monitoring/etc/
# cp /etc/mtab /var/chrooted/monitoring/etc/mtab
# ln -s /dev/ /var/chrooted/monitoring/dev/
A chroot paranccsak lehet „átlépni” a chrooted környezetbe:
# chroot /var/chrooted/monitoring/
# apt-get update
# apt-get install apache2 build-essential libgd2-xpm-dev mysql-client-5.1 libdbi0 libdbi0-dev libdbd-mysql psmisc
# apt-get clean
Icinga telepítése
Néhány szót az Icinga-ról
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
A telepítés menete
# useradd -m icingaÁllítsunk be erős jelszót a felhasználónak:
# passwd icinga
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# groupadd icinga-cmd
# usermod -a -G icinga-cmd icinga
# usermod -a -G icinga-cmd www-data
A lefordítani kívánt csomagokat a /usr/src/-be töltjük le.
# cd /usr/src
# wget http://kent.dl.sourceforge.net/project/icinga/icinga/1.5.1/icinga-1.5.1.tar.gz
# tar xvzf icinga-1.5.1.tar.gz
# cd icinga-1.5.1
# ./configure --enable-idoutils –with-command-group=icinga-cmd
# make all
# make fullinstall
# make install-config
# cd /usr/local/icinga/etc
# cp idomod.cfg-sample idomod.cfg
# cp ido2db.cfg-sample ido2db.cfg
A /usr/local/icinga/etc/icinga.cfg fájl végéhez hozzáadjuk az idoutils moduljának támogatását:
# echo "broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg" >> /usr/local/icinga/etc/icinga.cfg
A „Host” gépen van a MySQL szolgáltatás, így itt kell létrehozni az adatbázist, felhasználókat...
# mysql -u root -p
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
#mysql --defaults-file=/etc/mysql/debian.cnf icinga < /var/chrooted/monitoring/usr/src/icinga-1.5.1/module/idoutils/db/mysql/mysql.sql
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
# cd /usr/src/icinga-1.5.1/
# make install-cgis
# make install-html
# make install-webconf
# htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin
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:
# ln -s /usr/local/icinga/etc/ /etc/icinga
Nagios pluginok telepítése
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# cd /usr/src
# wget http://ignum.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz
# tar xvzf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure --prefix=/usr/local/icinga --with-icinga-user=icinga --with-cgiurl=/icinga/cgi-bin --with-htmurl=/icinga --with-nagios-user=icinga --with-nagios-group=icinga
# make install
NConf telepítése
Az Nconf-ról néhány szót
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ótAz 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/
A telepítés menete
# apt-get install php5 php5-mysql# apt-get clean
# cd /usr/local/
# wget http://heanet.dl.sourceforge.net/project/nconf/nconf/1.2.6-0/nconf-1.2.6-0.tgz
# tar xvzf nconf-1.2.6-0.tgz
# cd nconf
# chown www-data -R config output static_cfg temp
# cp /usr/local/nconf/config.orig/* /usr/local/nconf/config/
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
# mysql -unconf -peephooK9 nconf < /var/chrooted/monitoring/usr/local/nconf/INSTALL/create_database.sql
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:
# chmod +x /usr/local/icinga/bin/icinga
Í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");
# cp /usr/local/nconf/config.orig/.file_accounts.php /usr/local/nconf/config/
/usr/local/nconf/config/.file_accounts.php
admin::valami::admin::Administrator::
Nincs szükségünk a telepítő fájlokra:
# rm -rf /usr/local/nconf/INSTALL/
# rm -rf /usr/local/nconf/UPDATE/
# rm /usr/local/nconf/UPDATE.php
# rm /usr/local/nconf/INSTALL.php
Automatikus konfiguráció beállítása
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
Icinga és Nconf
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:
# cd /tmp/
# wget https://www.monitoringexchange.org/attachment/download/Artwork/Image-Packs/Base-Images/imagepak-base.tar.tar –no-check-certificate
# tar fxv imagepak-base.tar.tar
# cp -rv base/ /usr/local/icinga/share/images/logos/
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
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
Apache beállítás
Apache beállítása a chroot-olt környezetben
# sed -i 's/80/81/' /etc/apache2/ports.conf
# sed -i 's/*:81/127.0.0.1:81/' /etc/apache2/ports.conf
# sed -i 's/443/10443/' /etc/apache2/ports.conf
# sed -i 's/*:80/127.0.0.1:81/' /etc/apache2/sites-enabled/000-default
Létre kell hozni a /etc/apache2/conf.d/nconf fájlt az alábbi tartalommal:
Alias /nconf "/usr/local/nconf/"
Az apache2 újraindítását követően a host gépen tudjuk ellenőrizni így:
# telnet localhost 81
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
exit
Connection closed by foreign host.
Host webszerverének beállítása
ProxyRequests Off
SetEnv proxy-nokeepalive 1
ProxyPreserveHost On
ProxyPassInterpolateEnv On
ProxyPass /icinga http://127.0.0.1:81/icinga
ProxyPass /nconf http://127.0.0.1:81/nconf
Szükség van néhány apache modulra:
# a2enmod proxy
# a2enmod proxy_connect
# a2enmod proxy_http
Eztkövetően a /etc/apache2/mods-available/proxy.conf fájlban
deny from all sort kicseréljük allow from all-ra
Szolgáltatás indítás és leállítás beállítása
# /etc/init.d/chroot_apache2
#!/bin/sh -e
case $1 in
start)
chroot /var/chrooted/monitoring/ /etc/init.d/apache2 start
;;
stop)
chroot /var/chrooted/monitoring/ /etc/init.d/apache2 stop
;;
reload)
chroot /var/chrooted/monitoring/ /etc/init.d/apache2 reload
;;
restart | force-reload)
chroot /var/chrooted/monitoring/ /etc/init.d/apache2 restart
;;
*)
echo "Usage: /etc/init.d/apache2
start|stop|restart|reload|force-reload"
;;
esac
# /etc/init.d/chroot_ido2db
#!/bin/sh -e
case $1 in
start)
chroot /var/chrooted/monitoring/ /etc/init.d/ido2db start
;;
stop)
chroot /var/chrooted/monitoring/ /etc/init.d/ido2db stop
;;
reload)
chroot /var/chrooted/monitoring/ /etc/init.d/ido2db reload
;;
restart | force-reload)
chroot /var/chrooted/monitoring/ /etc/init.d/ido2db restart
;;
*)
echo "Usage: /etc/init.d/ido2db
start|stop|restart|reload|force-reload"
;;
esac
# /etc/init.d/chroot_icinga
#!/bin/sh -e
case $1 in
start)
chroot /var/chrooted/monitoring/ /etc/init.d/icinga start
;;
stop)
chroot /var/chrooted/monitoring/ /etc/init.d/icinga stop
;;
reload)
chroot /var/chrooted/monitoring/ /etc/init.d/icinga reload
;;
restart | force-reload)
chroot /var/chrooted/monitoring/ /etc/init.d/icinga restart
;;
*)
echo "Usage: /etc/init.d/icinga
start|stop|restart|reload|force-reload"
;;
esac
Futtathatóvá kell tenni és gondoskodni az alapértelmezett indításról és leállításáról:
# chmod +x /etc/init.d/chroot_ido2db
# chmod +x /etc/init.d/chroot_apache2
# chmod +x /etc/init.d/chroot_icinga
# update-rc.d chroot_ido2db defaults 98
# update-rc.d chroot_apache2 defaults 99
# update-rc.d chroot_icinga defaults 99
Végül újraindítjuk az összes szükséges szolgáltatást:
# /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .
# /etc/init.d/chroot_ido2db restart
Stopping ido2db: done.
Starting ido2db: done.
# /etc/init.d/chroot_icinga restart
Running configuration check...OK
Stopping icinga: Stopping icinga done.
Starting icinga: Starting icinga done.
# /etc/init.d/chroot_apache2 restart
Restarting web server: apache2 ... waiting .
A http://domain/icinga/ alatt elérjük a monitorozó alkalmazást
A http://domain/nconf/ alatt pedig a konfiguráció kezelőt
Elkészültünk.