vyuka:cviceni:y36sps:semestralky:plchm1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vyuka:cviceni:y36sps:semestralky:plchm1 [2009/05/21 18:10] plchm1vyuka:cviceni:y36sps:semestralky:plchm1 [2009/05/27 15:20] (current) plchm1
Line 8: Line 8:
 Schváleno 16.4.2009: Michal Medvecký Schváleno 16.4.2009: Michal Medvecký
  
-===== Zadání =====+ 
 + 
 +===== 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 ===== ===== Instalace Nagiosu =====
Line 21: Line 28:
 Ono si to najde a nainstaluje samo potřebné závislosti. Ono si to najde a nainstaluje samo potřebné závislosti.
 Nyní už si můžeme zkusit dát do prohlížeče: Nyní už si můžeme zkusit dát do prohlížeče:
-http://77.78.101.12/nagios3/ +http://vase_domena(ip)/nagios3/ 
-Zobrazí se nám úvodní stránka Nagiosu, ale když se chceme podívat na služby, nebo hosty, tak to nejde+Zobrazí se úvodní stránka Nagiosu, ale nejdou zobrazit statistiky služeb ani hostů
-Je to proto, že nemáme přístup. Pro usera admin ho vytvořím takto:+Je to proto, že nemám přístup. Pro usera admin ho vytvořím takto:
 <code> <code>
 htpasswd -n admin htpasswd -n admin
Line 31: Line 38:
 admin:6WusQf7QgCtw6 admin:6WusQf7QgCtw6
 </code> </code>
-Tento řádek je potřeba dodat do souboru +Tento řádek je potřeba dodat do souboru /etc/nagios3/htpasswd.users, který si ale nejdřív musím vytvořit.
 <code> <code>
 touch /etc/nagios3/htpasswd.users touch /etc/nagios3/htpasswd.users
 nano /etc/nagios3/htpasswd.users nano /etc/nagios3/htpasswd.users
 </code> </code>
-Navíc musíme 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 je tam už defaultně předepsáno nagiosadmin. Doplňte tam i admina. +Případně htpasswd si umí ten soubor vytvořit sám: 
-Zkontrolujte konfiguraci a restartujte Nagios:+<code> 
 +htpasswd -c /etc/nagios3/htpasswd admin 
 +</code> 
 +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:
 <code> <code>
 nagios3 -v /etc/nagios3/nagios.cfg nagios3 -v /etc/nagios3/nagios.cfg
 +</code>
 +Pokud Nagios nevypsal žádné errory, případně warningy, restartuje se služba, aby se projevily změny:
 +<code>
 /etc/init.d/nagios3 restart /etc/init.d/nagios3 restart
 </code> </code>
 Nyní se už v prohlížeči zobrazí předkonfigurovaní hosti- localhost a gateway. 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ů. Můžu se vrhnout na konfiguraci hostů.
-Jdu do složky s konfiguracemi, stávající konfigurace přesunu do nové složky preconfiguredna nové hosty si vytvořím složku hosts:+ 
 +===== 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
 +<code> 
 +mkdir /etc/nagios3/conf.d/hosts 
 +mkdir /etc/nagios3/conf.d/preconfigured 
 +</code> 
 +Soubory s obecnými nastaveními se přesunou do adresáře preconfigured.
 <code> <code>
 cd /etc/nagios3/conf.d/ cd /etc/nagios3/conf.d/
-mkdir hosts 
-mkdir preconfigured 
 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 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
 </code> </code>
-Vytvořím si konfigurační soubory pro jednotlivé skupiny hostů +Přesunu se do adresáře hosts a připravím si tam konfigurační soubory pro jednotlivé hosty. 
-touch hsr.cfg ups.cfg vpn.cfg wl.cfg +<code> 
-Přes nano doplním konfiguráky+touch hsr.cfg local.cfg ups.cfg vpn.cfg wl.cfg 
-Pak dodělám konfiguráky pro nastavení mapykontaktů a skupin. +</code> 
-touch contacts.cfg extinfo.cfg groups.cfg +Začnu s konfigurací hsr.cfg, ve kterém budu konfigurovat dohled routerů na přípojných bodechVšechny budou vypadat v tomto tvaru: 
-vymazu z /preconfigured contacts a groups (jejich obsah zkopiruju do prislusnych adresaru) +<code> 
-do /hosts/local.cfg zkopiruju obsah host-gateway... ./localhost... ty pak smazurm localhost_nagios2.cfg  rm host-gateway_nagios3.cfg muzu smazat jeste smazat +define host { 
-extinfo z hostgroups prekopiruju a zmenim a zmenim generic-service -http nepotrebuju, ping a ssh jo, jeste doplnim upsky + host_name hsrX           ;jméno hosta (volit nějaké kratší, protože se pak dále používá) 
-Přes nano doplním. + alias HSRX - adresa  ;alias (zde už si můžu psát, co chci) 
-Změny konfiguračních souborů a jejich umístění musím zadat nagios.cfg.+ 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 
 +
 +</code> 
 +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. 
 +<code> 
 +rm /etc/nagios3/conf.d/preconfigured/localhost_nagios2.cfg 
 +rm /etc/nagios3/conf.d/preconfigured/host-gateway_nagios3.cfg 
 +</code> 
 +Jak názvy napovídají, v ups.cfg budu mít uloženou konfiguraci dohledu UPSek ve vpn.cfg VPNek. Op2t se budou definovat podle podobného vzoru: 
 +<code> 
 +define host { 
 + host_name hsrX-ups 
 + alias HSRX - UPS 
 + address XXX.XXX.XXX.XXX 
 + use generic-host 
 + parents hsrX-vpn 
 +
 +</code> 
 + 
 +<code> 
 +define host { 
 + host_name hsrX-vpn 
 + alias HSRX - VPN 
 + address 10.1.0.2 
 + use generic-host 
 + parents hsrX 
 +
 +</code> 
 +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. 
 +<code> 
 +define host { 
 + host_name name 
 + alias alias 
 + address XXX.XXX.XXX.XXX 
 + use generic-host 
 + parents parent 
 +
 +</code> 
 +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é. 
 +<code> 
 +touch /etc/nagios3/conf.d/contacts.cfg /etc/nagios3/conf.d/extinfo.cfg /etc/nagios3/conf.d/groups.cfg 
 +</code> 
 +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: 
 +<code> 
 +email you@yourdomain.com 
 +</code> 
 +V extinfo.cfg nastavuji obrázky, které se budou zobrazovat u hostů ve status map. 
 +U localhostu chci, aby se mi zobrazoval tux. 
 +<code> 
 +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 
 +
 +</code> 
 +U routerů se mi bude ukazovat obrázek nějakého zařízení: 
 +<code> 
 +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 
 +
 +</code> 
 +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. 
 +<code> 
 +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 
 +
 +</code> 
 +Zbývá doplnit, jaké služby chci monitorovatJdu do adresáře ./etc/nagios3/conf.d/preconfigured, kde mi už zbyly jen 4 soubory, ty si přejmenujiaby se jmenovaly pěkněji. 
 +<code> 
 +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 
 +</code> 
 +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: 
 +<code> 
 +define service { 
 + hostgroup_name ups 
 + service_description APC UPS 
 + check_command ups-check 
 + use generic-service 
 + notification_interval 0 
 +
 +</code> 
 +Pro kontrolu pingu a ssh existuje defaultní konfigurační nastavení, ale pro ups-check musím ještě doplnit příkaz, který se má spustitMůž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 pak regulárními výrazy vybrat, co z toho chci. 
 +<code bash> 
 +#!/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/.*>\(.*\)\&nbsp.*/\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/\&nbsp\;/\ /"` 
 +        time=`echo $x | sed "s/\(.*\)minutes.*/\1/" | sed "s/.*>\(.*\)\&nbsp\;.*/\1/"
 +        capa=`echo $x | sed "s/.*Runtime\(.*\)minutes.*/\1/" | sed "s/.*led..gif\(.*\)Serif.*/\1/" | sed "s/.*>\&nbsp\;\(.*\)\&nbsp\;\(.\)<\/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 
 +</code> 
 +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 definici příkazu. To udělám editací souboru /etc/nagios3/commands.cfg. Kam doplním: 
 +<code> 
 +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 
 +
 +</code> 
 +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: 
 +<code>
 check_external_commands=1 check_external_commands=1
 +</code>
 +Aby se mi status mapa zobrazovala jako stromová struktura, tak edituji /etc/nagios3/cgi.cfg:
 +<code>
 +default_statusmap_layout=3
 +</code>
 +To bude asi vše. Zkontroluji nastavení a restartuji Nagios:
 +<code>
 +nagios3 -v /etc/nagios3/nagios.cfg
 +/etc/init.d/nagios3 restart
 +</code>
 +
 +===== 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~~ ~~DISCUSSION~~
  
  • vyuka/cviceni/y36sps/semestralky/plchm1.1242929448.txt.gz
  • Last modified: 2009/05/21 18:10
  • by plchm1