nagios

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
nagios [2013/07/25 13:30] 94.113.12.172nagios [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Nagios ======
  
 +Nagios je de facto linuxový standard pro hromadné monitorování síťových prvků jako jsou servery, switche, ale i např. síťové tiskárny, speciální zařízení apod. Díky desítkám pluginů jím lze monitorovat téměř všechno.
 +
 +Pokud nainstalujete speciálního agenta je možné sledovat i "nesíťové" údaje jako volné místo na disku, vytížení CPU apod. Agenti existují nejen pro Linux, ale i pro Windows a Solaris. Nagios také dokáže zasílat administrátorům upozornění mailem či SMS. V základu má sice ne příliš pěkné, ale dostačující webové rozhraní.
 +
 +V tomto stručném návodu popíšu základní instalaci a základní nastavení edice Core, což je základní open-source varianta produktu.
 +
 +{{.:warning.png}} Článek popisuje Nagios 3 na Ubuntu 10.04 LTS. Důvodem vzniku článku byla jednak absence českého návodu, ale především zastaralost jiných wiki a nesoulad mezi dokumentací Nagiosu a tím co obsahují Ubuntu nagios balíčky.
 +
 +
 +====== Terminologie ======
 +Na úplný začítek projdu názvosloví užívané v Nagiosu.
 +
 +  * **host** - zařízení, které chceme monitorovat. Obvykle počítač, switch nebo tiskárna.
 +  * **host group** - skupina hostů stejného typu. Např. servers pro servery, printers pro tiskárny. Používají se protože tak lze snadno všem hostům ve skupině nastavit nějaké chování. Též v reportech Nagiosu jsou hosti ve skupině seskupeni.
 +  * **service** - služba, kterou na zařízení (hostu) chceme monitorovat. Buď jsou to služby veřejně dostupné (ping, HTTP, FTP, ...) nebo prostřednictvím agentů také údaje o volném místě na discích apod.
 +  * **service group** - skupina služeb. Stejně jako pro skupinu hostů i skupina služeb zjednodušuje konfiguraci a zpřehledňuje reporting.
 +  * **contact** a **contact group** - kontakt a skupina kontaktů, kteří mají být informováni pokud dojde k nějaké kritické události
 +  * **timeperiod** - časový rámec, kdy může být kontakt nebo skupina kontaktů informována
 +
 +====== Instalace serveru ======
 +
 +Detailně viz [[https://help.ubuntu.com/10.04/serverguide/C/nagios.html|Ubuntu Server Guide]]. Já jen opravdu stručně, abych neduploval oficiální help. Příkazy provádějte na serveru, kde má běžet Nagios.
 +
 +  - ''sudo apt-get install nagios3 nagios-nrpe-plugin''
 +  - Budete vyzváni k nastavení hesla uživatele "nagiosadmin", což je správce Nagiosu. Jeho heslo bylo uloženo do ''/etc/nagios3/htpasswd.users''
 +
 +
 +Pokud chcete později změnit toto heslo, musíte ještě doinstalovat ''sudo apt-get install apache2-utils'' a pak použít příkaz ''sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin''.
 +
 +
 +
 +====== Instalace agenta ======
 +
 +Pokud nevystačíte se sledováním síťových veřejných služeb jako ping, HTTP, FTP apod., ale chcete i "nesíťové" informace o hostu jako např. volné místo na disku a vytížení CPU, pak musíte na daný operační systém doinstalovat agenta.
 +
 +//TODO//
 +
 +====== Konfigurační soubory ======
 +Toto byl pro mě největší kámen úrazu a zdržování, protože oficiální manuál a Ubuntu (resp. Debian na kterém je Ubuntu založeno) balíčky ukládají konfigurační soubory do jiných adresářů.
 +
 +//Hlavní konf. soubor://
 +''/etc/nagios3/nagios.cfg''
 +
 +//Konf. hostů a služeb://
 +''/etc/nagios3/conf.d/''
 +
 +//Binárky pluginů://
 +''/usr/lib/nagios/plugins/''
 +
 +//Konf. pluginů://
 +''/etc/nagios-plugins/config/''
 +
 +//Uživatelé webové administrace:// (viz [[#htpasswd]])
 +''/etc/nagios3/htpasswd.users''
 +
 +Při restartu a spuštění Nagios též kontroluje své konfigurační soubory. Jestli je chcete nechat ověřit dříve, než to zjistíte při restartu a Nagios tím pádem přestane běžet, použijte:
 +
 +''$ nagios3 -v /etc/nagios3/nagios.cfg''
 +
 +====== Spuštění, vypnutí, restart ======
 +Opět jinak, než říká manuál Nagiosu.
 +
 +<code>
 +/etc/init.d/nagios3 start
 +/etc/init.d/nagios3 stop
 +/etc/init.d/nagios3 restart
 +</code>
 +
 +
 +====== Notifikace ======
 +Nagios nás dokáže informovat, pokud dojde k poruše nebo prostě k určené události. Sám o sobě vlastně ne, protože jen vyvolá v daný okamžik externí aplikaci, která nám pošle třeba email nebo SMS. Já ukážu jak nastavit poslání emailu.
 +
 +===== Nastavení =====
 +
 +V ''/etc/nagios3/conf.d/contacts_nagios2.cfg' je z výchozí instalace jedna kontaktní osoba ''root'' a jedna skupina ''admins` a upozornění budou generovány 24x7 (tj. vždy). To mi vyhovovalo, jen jsem změnil, že chci být upozorňován na úplně všechny typy událostí hostů i služeb.
 +
 +Položka ''host_notification_options'' nastavená na ''d,u,r,f,s'' zajistí upozornění na všechny událostí hosta:
 +
 +        * down – vypnutý
 +        * unreachable - nedostupný
 +        * recovery – návrat do normálu
 +        * flapping – přeskakuje-li zařízení z jednoho stavu do druhého
 +        * sheduled downtime – počátek a konec plánované údržby
 +        * none – žádné zprávy
 +
 +Položka ''service_notification_options'' nastavená na ''w,u,c,r,f'' zajistí upozornění na všechny události služeb:
 +
 +        * warning – varování
 +        * unknown – neznámý stav
 +        * critical – kritický stav
 +        * recovery – návrat do normálu (OK)
 +        * flapping – přeskakuje-li služba z jednoho stavu do druhého
 +        * none – žádné zprávy
 +
 +Celý soubor může tedy vypadat takto:
 +
 +<code>
 +define contact {
 +   contact_name                    helpdesk
 +   alias                           Company Helpdesk
 +   host_notification_period        24x7
 +   service_notification_period     24x7
 +   host_notification_options       d,u,r
 +   service_notification_options    u,w,c,r
 +   service_notification_commands    notify-service-by-email
 +   host_notification_commands       notify-host-by-email
 +   email                           helpdesk@company.com
 +   }
 +define contact {
 +   contact_name                    technician1_mail
 +   alias                           John Doe
 +   host_notification_period        10x5
 +   service_notification_period     10x5
 +   host_notification_options       n
 +   service_notification_options    w,c,r
 +   service_notification_commands    notify-service-by-email
 +   host_notification_commands       notify-host-by-email
 +   email                           john.doe@company.com
 +   }
 +define contactgroup {
 +   contactgroup_name       support
 +   alias                   Company Support
 +   members                 helpdesk, technician1_mail
 +   }
 +</code>
 +===== Odesílání přes SMTP =====
 +"Oficiální" postup je sice nainstalování Postfixu a posílání přes něj, avšak mě se zdá Postfix jako kanón na komára, pokud jen použít SMTP server poskytovale internetu k odeslání jednoduché emailové zprávy.
 +
 +Nejlepší řešení mi proto přijde použít skript v Perlu od Brandona Zehma nazvaný jednoduše [[http://caspian.dotconf.net/menu/Software/SendEmail/|sendEmail]]. Protože je to Perl, nepotřebuje být kompilován (juchů).
 +
 +{{.:note.png}} Aktualizace: tento skript je dokonce i repozitářích jak jsem zjistil. Jestli ho chcete instalovat z něj (a to byste měli chtít), pak přeskočte následující kroky a jen proveďte ''sudo apt-get install sendemail''.
 +
 +  - Stáhněte aktuální verzi v .tar.gz např. přes wget: ''wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz''
 +
 +  - Rozbalte do aktuální adresáře: ''tar xvfz sendEmail-v1.56.tar.gz''
 +
 +  - Soubory sendEmail a sendEmail.pl zkopírujte do /usr/bin (jako root): ''sudo cp sendMail* /usr/bin''.
 +
 +Příklad odeslání zprávy ze sendEmailu:
 +<code>
 +sendEmail -f odkoho@domena -t komu@domena -u 'Predmet zpravy' -m 'Telo zpravy' -s IPNeboHostnameSMTP
 +</code>
 +Všimněte si použití jednoduchých uvozovek, pokud parametr má obsahovat i mezeru nebo jiné znaky. Pokud chcete odesílat právy s češtinou, přijde ještě ''-o message-charset=utf-8'' pro UTF-8 kódování.
 +
 +Teď honem k vlastní konfiguraci Nagiosu. Nejprve přidáme proměnné (makra) určující náš SMTP server (může to být IPv4 nebo hostname) a adresu odesílatele do souboru ''/etc/nagios3/resource.cfg'':
 +
 +<code>
 +# Nastaveni sendEmail pro odesilani emailu pres SMTP
 +# IP nebo hostname SMTP serveru
 +$USER5$=10.0.0.49
 +# Odesílací adresa
 +$USER6$=nagios@domena
 +</code>
 +V souboru ''/etc/nagios3/commands.cfg'' nahradíme stávající příkaz (command) pro zaslání oznámení hosta a služby. Změny je jen v (pěkně dlouhém) řádku ''command_line'' pro oba příkazy. Pro úplnost uvedenu oba a celé.
 +
 +<code>
 +# 'notify-host-by-email' command definition
 +define command{
 +        command_name    notify-host-by-email
 +        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | sendEmail -s $USER5$ -t $CONTACTEMAIL$ -f $USER6$ -v -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: LONGDATETIME$\n"
 +}
 +
 +# 'notify-service-by-email' command definition
 +define command{
 +        command_name    notify-service-by-email
 +        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | sendEmail -s $USER5$ -t $CONTACTEMAIL$ -f $USER6$ -v -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -m "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"
 +}
 +</code>
 +Teď restart a vesele emailujeme. Adresáta je možné nahradit na SMS přeposílací adresu (můj Vodafone to má jako nekdo@vodafonemail.cz) - email pak přijde jako SMS na mobil.
 +
 +====== Pluginy ======
 +Nagios sám je docela "hloupý". Neumí nic, než jsem rozpoznat změnu stavu //nečeho//. Vlastní způsob zjištění stavu //nečeho// zajišťuje plugin, který Nagiosu vrátí stav. Nagios, odpovědi shromažďuje a vyhodnocuje.
 +
 +''/usr/lib/nagios/plugins'' je místo, kde jsou pluginy uloženy.
 +
 +Pluigin sám je v podstatě buď spustitelný program nebo skrip, který Nagios vyvolá. Tedy pokud potřebujete nápovědu ohledně parametrů pluginu, obvykle ji zjistíme spuštěním pluginu s parametrem -h. Např. plugin ''check_disk'' zjištující velikost volného místa disku:
 +
 +<code>
 +$ /usr/lib/nagios/plugins/check_disk -h
 +</code>
 +====== Odkazy ======
 +  * [[http://nagios.sourceforge.net/docs/3_0/toc.html|Oficiální manuál]]
 +  * [[http://hw.cz/novinky/art3737-nagios-dohled-hwg-zarizeni-uvod-pro-zacatecniky.html]]
 +  * [[http://www.hwg.cz/software/Nagios/Nagios_plugins_cz.html]] - jak sledovat např. teplotu v serverovně