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ó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/

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 " -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 " -t $CONTACTEMAIL$ -s 127.0.0.1 -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$ is $HOSTSTATE$ **"

Apache beállítás

Apache beállítása a chroot-olt környezetben

Rá kell bírni, hogy a 81-es porton működjön. Ehhez a következőket futtassuk:

# 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

Az átirányításokhoz létrehozuk a /etc/apache2/conf.d/monitoring fájlt:

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

A „host” gépen célszerű létrehozni három fájlt, amelyek a chroot-olt icinga, idoutils és apache 2 szolgáltatásokatindítják.
# /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.


Kulcsszavak: Nagios, Linux, check_host, service, szolgáltatás, MySQL, Debian, Icinga, Nconf, chroot

Új hozzászólás: