**Zadání:** Konfigurace dohledového systému Nagios pro bezdrátovou síť Praha 8. Jedná se o rozrůstající síť, ve které je v současné době 14 přípojných bodů+hlavní router. Přípojné body jsou realizovány jako routery Microtik se třemi sektorovými anténami po 120 stupních. Hlavní router je Debian Etch. Topologie sítě: Po pronajatých okruzích a naší stávající struktuře. Kvůli jednodušší správě je jsou tam nahozené VPNky ke každému tomu přípojnému bodu. Cílem semestrální práce je nakonfigurování dohledového systému na bázi ICMP (pingání) pro všechny routery, VPN a UPSky, SSH pro routery, UPSek plus vytvoření mapy topologie. Schváleno 16.4.2009: Michal Medvecký ===== Obecně ===== Hlavní router celé sítě je Debian Etch. Běží na něm dohled- Nagios a MRTG, vpnky, autorizace uživatelů, mailserver. Pro zjednodušení práce administrátorů mají jednotlivé koncové routery svůj jmenný ekvivalent. Ten je zaznamenán na firemních DNS. Systém Nagios jsem využil jako jeden z nejlepších a nejpoužívanějších dohledových systémů. Navíc je to firemní standard, že se k monitoringu používá právě on. ===== Instalace Nagiosu ===== Osobně nemám přílič v lásce vim, navíc pro mě bylo rychlejší pracovat v nanu, instalace přes: aptitude install nano Získání potřebných balíčků k funkci a instalaci Nagiosu: aptitude install nagios3 apache2 build-essential libgd2-xpm-dev Ono si to najde a nainstaluje samo potřebné závislosti. Nyní už si můžeme zkusit dát do prohlížeče: http://vase_domena(ip)/nagios3/ Zobrazí se úvodní stránka Nagiosu, ale nejdou zobrazit statistiky služeb ani hostů. Je to proto, že nemám přístup. Pro usera admin ho vytvořím takto: htpasswd -n admin Zeptá se to na heslo, které když se zadá, tak vygeneruje hash v nějaké takové podobě: admin:6WusQf7QgCtw6 Tento řádek je potřeba dodat do souboru /etc/nagios3/htpasswd.users, který si ale nejdřív musím vytvořit. touch /etc/nagios3/htpasswd.users nano /etc/nagios3/htpasswd.users Případně htpasswd si umí ten soubor vytvořit sám: htpasswd -c /etc/nagios3/htpasswd admin Navíc se musí přidat, že tento uživatel má oprávnění ke službám. To se dělá v souboru /etc/nagios3/cgi.cfg. Na sedmi místech jsou tam už defaultně předepsána práva pro nagiosadmin. Admin bude mít také plná práva, takže tam stačí doplnit i admina. Nagios má pro kontrolu konfigurace vlastní skript, takže po konfiguraci je dobré ho spustit před tím, než se restartuje služba. Využije se příkazu: nagios3 -v /etc/nagios3/nagios.cfg Pokud Nagios nevypsal žádné errory, případně warningy, restartuje se služba, aby se projevily změny: /etc/init.d/nagios3 restart Nyní se už v prohlížeči zobrazí předkonfigurovaní hosti- localhost a gateway. Tím je instalace a zprovoznění Nagiosu kompletní. Můžu se vrhnout na konfiguraci hostů. ===== Konfigurace dohledu sítě ===== Konfigurační soubory budou uložené v adresáři /etc/nagios3/conf.d/, což je už defaultní nastavení dané v souboru /etc/nagios3/nagios.cfg. Po instalaci je v něm několik konfiguračních souborů se všeobecným nastavením. Podle zadání je vidět, že dohledový systém má hlídat několik skupin zařízení. Kdyby byly všechny konfigurační soubory v jednom adresáři, tak by to bylo nepřehledné. Ve složce /etc/nagios3/conf.d/ se vytvoří dva nové adresáře preconfigured a hosts. mkdir /etc/nagios3/conf.d/hosts mkdir /etc/nagios3/conf.d/preconfigured Soubory s obecnými nastaveními se přesunou do adresáře preconfigured. cd /etc/nagios3/conf.d/ mv ./contacts_nagios2.cfg ./extinfo_nagios2.cfg ./generic-host_nagios2.cfg ./generic-service_nagios2.cfg ./host-gateway_nagios3.cfg ./hostgroups_nagios2.cfg ./localhost_nagios2.cfg ./services_nagios2.cfg ./timeperiods_nagios2.cfg ./preconfigured Přesunu se do adresáře hosts a připravím si tam konfigurační soubory pro jednotlivé hosty. touch hsr.cfg local.cfg ups.cfg vpn.cfg wl.cfg Začnu s konfigurací hsr.cfg, ve kterém budu konfigurovat dohled routerů na přípojných bodech. Všechny budou vypadat v tomto tvaru: define host { host_name hsrX ;jméno hosta (volit nějaké kratší, protože se pak dále používá) alias HSRX - adresa ;alias (zde už si můžu psát, co chci) address hsrX.p8 ;adresa (buď IP nebo jmenná) use generic-host ;pro hodnoty, které nejsou specifikovány tady se má využít nastavení z konfiguračního souboru generic-host parents parent ;rodič, hlavně pro status mapu, definuje to nadřazený prvek } Abych měl všechny konfigurační soubory hezky u sebe, tak do local.cfg nakopíruji informace obsažené v /etc/nagios3/conf.d/preconfigured/localhost_nagios2.cfg a /etc/nagios3/conf.d/preconfigured/host-gateway_nagios3.cfg, čímž sloučím konfigurační soubory pro gateway a localhost. Původní soubory můžu smazat. rm /etc/nagios3/conf.d/preconfigured/localhost_nagios2.cfg rm /etc/nagios3/conf.d/preconfigured/host-gateway_nagios3.cfg Jak názvy napovídají, v ups.cfg budu mít uloženou konfiguraci dohledu UPSek a ve vpn.cfg VPNek. Op2t se budou definovat podle podobného vzoru: define host { host_name hsrX-ups alias HSRX - UPS address XXX.XXX.XXX.XXX use generic-host parents hsrX-vpn } define host { host_name hsrX-vpn alias HSRX - VPN address 10.1.0.2 use generic-host parents hsrX } Protože přibyly nové přípojné body a status mapa začala být nepřehledná, doplnil se Nagios i o nějaké body po trase- mastery a slavy. Konfigurace jejich nastaveni je podobna jako hsr. define host { host_name name alias alias address XXX.XXX.XXX.XXX use generic-host parents parent } Nyní potřebuji dát hosty do skupin, nastavit mapu a kontakty. Vytvořím pro ně konfigurační soubory. Chci je mít vytvořeny v conf.d, protože obsahují globální nastavení a tak je nechci mít někde hluboko zanořené. touch /etc/nagios3/conf.d/contacts.cfg /etc/nagios3/conf.d/extinfo.cfg /etc/nagios3/conf.d/groups.cfg Ale tyto konfigurační soubory obsahuje už defaultní nastavení, které teď mám přesunuté do složky preconfigured (./contacts_nagios2.cfg ./extinfo_nagios2.cfg ./hostgroups_nagios2.cfg). Jejich obsah zkopíruji do nově vytvořených souborů a ty původní smažu. V contact.cfg stačí změnit emailovou adresu: email you@yourdomain.com V extinfo.cfg nastavuji obrázky, které se budou zobrazovat u hostů ve status map. U localhostu chci, aby se mi zobrazoval tux. define hostextinfo{ host_name localhost icon_image base/linux40.gif icon_image_alt base/linux40 vrml_image base/linux40.gif statusmap_image base/linux40.gd2 } U routerů se mi bude ukazovat obrázek nějakého zařízení: define hostextinfo{ host_name hsrX,hsrY,hsrZ ;můžu specifikovat více hostů icon_image base/ng-switch40.gif icon_image_alt base/ng-switch40 vrml_image base/ng-switch40.gif statusmap_image base/ng-switch40.gd2 } V group.cfg sdružuji hosty do skupin. Vytvořím 5 skupin podle služeb, které na nich chci kontrolovat- all, ssh, ping, vpn, ups. define hostgroup { hostgroup_name all alias All Servers members * } define hostgroup { hostgroup_name ssh ;ssh budu kontrolovat na všech routerech alias SSH machines members localhost,hsrX,hsrY,hsrZ,name } define hostgroup { hostgroup_name ping ;pingáním budu kontrolovat všechny zařízení alias Pingable machines members localhost,gw,hsrX,hsrX-vpn,hsrX-ups } define hostgroup { hostgroup_name vpn ;vpnky si sdružím do zvláštní skupiny alias OpenVPN tunnels members hsrX-vpn } define hostgroup { hostgroup_name ups ;upsky si sdružím do zvláštní skupiny alias APC UPS members hsrX-ups } Zbývá doplnit, jaké služby chci monitorovat. Jdu do adresáře ./etc/nagios3/conf.d/preconfigured, kde mi už zbyly jen 4 soubory, ty si přejmenuji, aby se jmenovaly pěkněji. mv ./generic-host_nagios2.cfg ./generic-host.cfg mv ./generic-service_nagios2.cfg ./generic-service.cfg mv ./services_nagios2.cfg ./services.cfg mv ./timeperiods_nagios2.cfg ./timeperiods.cfg Kontrolu služeb pro jednotlivé skupiny nastavím v ./services.cfg Změním hostgroup_name podle toho, jak jsem to nakonfiguroval group.cfg. Http, kterou tam mít nepotřebuji, smažu to tedy, ping a ssh chci. Ještě mi tam chybí dohled UPSek. Doplním tedy: define service { hostgroup_name ups service_description APC UPS check_command ups-check use generic-service notification_interval 0 } Pro kontrolu pingu a ssh existuje defaultní konfigurační nastavení, ale pro ups-check musím ještě doplnit příkaz, který se má spustit. Můžu použít nějakého pluginu, nebo zkusit napsat vlastní skript. UPS APC mají vlastní webové konfigurační rozhraní se statusem o stavu apod. To můžu načíst a pak regulárními výrazy vybrat, co z toho chci. #!/bin/bash ip="$1" x=`wget -q -t 1 -T 5 http://$ip/status.cgi -O -` if [ $? -eq 0 ]; then bat=`echo $x | sed "s/.*Battery\ status:\(.*\)/\1/" | head -c 120 | sed "s/.*Serif.*>\(.*\)<.font.*/\1/"` power=`echo $x | sed "s/\(.*\)Watts.*/\1/" | sed "s/.*providing:\(.*\)/\1/" | sed "s/.*>\(.*\)\ .*/\1/"` status=`echo $x | sed "s/.*Runtime\(.*\)/\1/" | sed "s/\(.*\)led..gif.*/\1/" | sed "s/.*Serif\(.*\)Serif.*/\1/" | sed "s/.*middle>\(.*\)..font.*font.*/\1/" | sed "s/\ \;/\ /"` time=`echo $x | sed "s/\(.*\)minutes.*/\1/" | sed "s/.*>\(.*\)\ \;.*/\1/"` capa=`echo $x | sed "s/.*Runtime\(.*\)minutes.*/\1/" | sed "s/.*led..gif\(.*\)Serif.*/\1/" | sed "s/.*>\ \;\(.*\)\ \;\(.\)<\/font.*/\1\ \2/"` echo -ne "Battery status: $bat ($capa, $time min)\n" echo -ne "Overall status: $status\n" echo -ne "Providing: $power Watts\n" if [ "$status" == "On Line" ]; then exit 0; else exit 1; fi exit 0 else echo "UPS communication lost" exit 2 fi Tento skript si uložím jako ups.sh do nově vytvořeného adresáře /etc/nagios3/plugins. Teď už staří se na tento skript odkázat v definici příkazu. To udělám editací souboru /etc/nagios3/commands.cfg. Kam doplním: define command { command_name ups-check command_line /etc/nagios3/plugins/ups.sh $HOSTADDRESS$ ;je cesta ke mnou vytvořenému skriptu a předávám mu adresu hosta } Pro to, abych mohl používat příkazy z webového rozhraní Nagiosu je potřeba v souboru /etc/nagios3/nagios.cfg změnit check_external_commands na: check_external_commands=1 Aby se mi status mapa zobrazovala jako stromová struktura, tak edituji /etc/nagios3/cgi.cfg: default_statusmap_layout=3 To bude asi vše. Zkontroluji nastavení a restartuji Nagios: nagios3 -v /etc/nagios3/nagios.cfg /etc/init.d/nagios3 restart ===== Závěr ===== Dohledový systém (zkušební) je možné vidět zde: http://77.78.101.12/nagios3/ Během této semestrální práce jsem si vyzkoušel práci s dohledovým systémem Nagios, což mi pomohlo při laboratorních cvičeních a při mé práci. Zkoušel jsem také konfiguraci Nagiosu pomocí nástroje Centreon, ale ten bohužel při exportu nastavení pro Nagios vyhazoval chyby v objektech php, které jsem já nemohl ovlivnit, takže jsem se touto utilitou dále nezabýval. {{:vyuka:cviceni:y36sps:semestralky:plchm1.pdf|Prezentace}} ~~DISCUSSION~~