Po minulo týždňovom úvode prišiel na rad Nagios. Dnes sa dostaneme k jeho spusteniu v úplne základnej konfigurácii.
V rámci malej rekapitulácie zopakujem, že ide o systém na monitorovanie siete, systémov a služieb. Je vydávaný pod licenciou GNU GPL 2 [1].
Tiež som spomenul, že v oficiálnych balíkoch pre CentOS 5.2 sa nenachádza a sľúbil som popísať ako ho získať. V podstate sú na výber 2 repozitáre tretej strany alebo možnosť použiť nagios.spec, ktorý sa nachádza v zdrojovom balíku Nagiosu. Určite tých repozitárov existuje viac ako 2, ale práve tieto dva pokladám ja a veľká časť sveta za dôveryhodné. Známejším a veľa utrápených duší zachraňujúcim je repozitár od človeka, ktorý sa volá Dag Wieers. V jeho repozitári je množstvo balíkov pre RHEL ako aj Fedoru, preto je to jedna z dobrých volieb, keď je treba niečo nájsť. Žiaľ, v jeho repozitári je iba Nagios 2.12.
Druhý repozitár sa volá EPEL (spomenutý aj v diskusii pod predošlou časťou seriálu) a spravuje ho Fedora project. Jeho úlohou je poskytovať pre RHEL (a tým aj pre klony ako CentOS a iné) balíky pôvodne vydávané pre Fedoru. Po jeho nainštalovaní ale zistíme to isté, čo v prípade Dagovho repozitára. Preto sa vrátime k tretej spomenutej možnosti – vytvorenie balíka z nagios.spec.
Na uvarenie polievky potrebujeme rpm-build a kompilátor, preto:
[root@virtuator src]# yum install rpm-build gcc
yum install gd-devel zlib-devel libpng-devel libjpeg-devel
Stiahneme balík nagiosu:
wget http://switch.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.3.tar.gz
tar zxf nagios-3.0.3.tar.gz
cp nagios-3.0.3/nagios.spec ./
mv nagios-3.0.3.tar.gz ./redhat/SOURCES/
rpmbuild -ba nagios.spec
~@
~@
Wrote: /usr/src/redhat/SRPMS/nagios-3.0.3-1.el5.src.rpm
Wrote: /usr/src/redhat/RPMS/i386/nagios-3.0.3-1.el5.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/nagios-www-3.0.3-1.el5.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/nagios-devel-3.0.3-1.el5.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.94855
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd nagios-3.0.3
+ rm -rf /var/tmp/nagios-buildroot
+ exit 0
Použil som -ba lebo aj .rpm aj .srpm prikladám k tomuto textu. Spec súbor je pripravený vytvoriť hlavný nagios balík, balík pre web a devel balík. Devel si všímať nebudeme.
rpm -i ./redhat/RPMS/i386/nagios-3.0.3-1.el5.i386.rpm
rpm -i ./redhat/RPMS/i386/nagios-www-3.0.3-1.el5.i386.rpm
Rovnako vyrobíme nagios-plugins, aktuálna je verzia 1.4.12 ale ak ste leniví, kľudne napr. z EPEL repozitára použite 1.4.11. Postup pre vytvorenie balíka nejdem duplikovať.
Nagios-plugins si vypýtajú Net::SNMP modul z Perlu, ktorý normálne CentOS opäť neobsahuje. Nainštalujem ho preto z EPEL repozitára (ak chcete, tak si nainštalujte aj cez perl cpan):
yum install perl-Net-SNMP
rpm -i /usr/src/redhat/RPMS/i386/nagios-plugins-1.4.12-1.i386.rpm
Tu sa viac-menej končí CentOS špecifický proces, prechádzame teda ku konfigurácii:
cd /etc/nagios&&ls
cgi.cfg commands.cfg contacts.cfg nagios.cfg resource.cfg timeperiods.cfg
Vytvorím nový contacts.cfg obsahujúci nasledovné údaje:
define contact {
contact_name jankohrasko
alias Janko Hrasko
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f
host_notification_options d,u,r,s
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email janko@hrasko
}
define contact {
contact_name panvesmiru
alias Pan Vesmiru
service_notification_period workhours
host_notification_period workhours
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email pan@vesmiru
}
############################
define contactgroup {
contactgroup_name network-admins
alias Sietovi Adminkovia
members panvesmiru
}
define contactgroup {
contactgroup_name operators
alias Operatori
members jankohrasko, panvesmiru
}
Potom ešte niekoľko options, ktoré si môžete nájsť v oficiálnej dokumentácii ale ja ich tu nepoužijem.
Ďalším súborom je už spomenutý timeperiods.cfg:
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 08:30-17:00
tuesday 08:30-17:00
wednesday 08:30-17:00
thursday 08:30-17:00
friday 08:30-17:00
}
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}
define timeperiod{
name us-holidays
timeperiod_name us-holidays
alias U.S. Holidays
january 1 00:00-00:00 ; New Years
monday -1 may 00:00-00:00 ; Memorial Day (last Monday in May)
july 4 00:00-00:00 ; Independence Day
monday 1 september 00:00-00:00 ; Labor Day (first Monday in September)
thursday -1 november 00:00-00:00 ; Thanksgiving (last Thursday in November)
december 25 00:00-00:00 ; Christmas
}
define timeperiod{
timeperiod_name 24x7_sans_holidays
alias 24x7 Sans Holidays
use us-holidays ; Get holiday exceptions from other timeperiod
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
Ďalej commands.cfg, ktorý sem nenakopírujem kvôli rozsahu celý ale uvediem iba niekoľko príkladov. Vytvorime ho z command.cfg nasledovne:
convertcfg command.cfg commands > commands.cfg
define command{
command_name notify-by-email
command_line /bin/printf "$OUTPUT$" | /bin/mail -s '$SERVICESTATE$ alert for $HOSTALIAS$/$SERVICEDESC$' $CONTACTEMAIL$
}
define command{
command_name check_tcp
command_line /usr/lib/nagios/plugins/check_tcp -H $HOSTADDRESS$ -p $ARG1$
}
Prvý command – notify-by-email už máme v contacts.cfg, zašle jednoduchý email o dostupnosti/nedostupnosti služby prípadne o inom stave (spomenuté pod súborom contacts.cfg). Podobnou analógiou môžeme vyrobiť aj command
define command {
command_name notify-by-sms
command_line /bin/printf "$OUTPUT$"|/usr/bin/gnokii ~@~Ssendsms $CONTACTADDRESS1$
}
V dokumentácii sa dočítame, že takto môžeme nadefinovať 6 kontaktov.
Vyšantiť sa môžeme k plnej spokojnosti a použiteľnosti (hlavne pri sms notifikáciách by som si dal pozor na závislosti hostov ale o tom až neskôr).
Druhý riadok už definuje príkaz používaný pri monitorovaní služieb, vidíme že používa plugin z nagiosu, premenné HOSTADDRESS a ARG1 dostáva od definície služby, ku ktorej sa dostaneme o niekoľko mihnutí očami.
Ďalej si vytvoríme súbor hostgroups.cfg, do neho natrepeme niečo takéto:
define hostgroup {
hostgroup_name routers
alias Routre
members router1
}
Teraz si vytvoríme adresár, do ktorého budeme dávať konfigurácie hostov a služieb. Nagiosu je jedno či je to natrepané v jednom súbore alebo v légii súborov. Kvôli prehľadnosti som si zvykol rozdeľovať konfigurácie podľa umiestnenia – serverovnaX.cfg, budovaX.cfg a podobne.
Súbor hosts/local.cfg obsahuje:
define host {
host_name router1
alias router cislo 1
address 10.0.10.1
# parents ffff
hostgroups routers
check_command check-host-alive
max_check_attempts 3
check_period 24x7
check_interval 5
retry_interval 1
# contacts jankohrasko
contact_groups operators,
notification_interval 20
notification_period 24x7
notification_options d,u,r
}
To je úplný základ. Na routri beží ssh na porte 22, preto nastavíme aj kontrolu služby na porte 22 (opäť súbor local.cfg):
define service {
host_name router1
service_description check-ssh
check_command check_tcp!22
max_check_attempts 3
check_interval 5
retry_interval 1
check_period 24x7
notification_interval 20
notification_period 24x7
contact_groups operators
notification_options w,c,r
}
A teraz najhlavnejší súbor nagios.cfg (popíšem len riadky, ktoré som proti default súboru editoval, detailnejšie si súbor nechám do budúceho pokračovania):
cfg_file=/etc/nagios/commands.cfg
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/timeperiods.cfg
#cfg_file=/etc/nagios/objects/templates.cfg
#cfg_file=/etc/nagios/objects/localhost.cfg
cfg_file=/etc/nagios/hostgroups.cfg
templates.cfg a localhost.cfg sú zatiaľ nanič, keďže sme ich nedefinovali. Editli sme akurát správne cesty ku zvyšku.
pridáme si ručne vytvorený adresár hosts:
cfg_dir=/etc/nagios/hosts
check_result_path=/var/log/nagios/spool/checkresults
otestujeme konfiguráciu:
nagios -v /etc/nagios/nagios.cfg
~@
~@
~@
~@
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
service nagios start
service nagios status
nagios (pid 24488) is running...
chkconfig --level 2345 nagios on
Webrozhranie nagiosu používa mod_htaccess, ktorý je štandardnou súčasťou Apache webservera. Konfigurácia v /etc/httpd/conf.d/nagios.conf odkazuje na password file /etc/nagios/htpasswd.users, preto si ten súbor vytvoríme. V cgi.cnf máme štandardného užívateľa nagiosadmin, vytvoríme teda jeho (dnes sa ešte cgi.cnf nebudeme venovať, chceme len vidieť, že inštalácia nám funguje) obsah:
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
service httpd start
V priloženom obrázku je default screen nagios web rozhrania:

A tu je detailné info prvého nakonfigurovaného zariadenia:

Neprišiel som na lepší spôsob ako rozpísať nagios tak, aby to nebolo povrchné a zmestilo sa do jedného článku. Preto som zvolil toto delenie na popis a rozbehnutie jednoduchej konfigurácie, v budúcnosti popíšem už konkrétnejšie príklady a vytvorím monitorovanú infraštruktúru, rôzne ďalšie možnosti ktoré Nagios dáva. Verím, že vás to neodradí. Ak sú v texte nejasnosti, napíšte mi ich prosím do diskusie, buď ich v nej doriešim alebo ak máte záujem o niečo konkrétne, môžem to zapracovať do pokračovania o Nagiose.
Sľúbené balíky pre CentOS:
nagios-3.0.3-1.el5.i386.rpm
nagios-3.0.3-1.el5.src.rpm
nagios-devel-3.0.3-1.el5.i386.rpm
nagios-plugins-1.4.12-1.i386.rpm
nagios-plugins-1.4.12-1.src.rpm
nagios-www-3.0.3-1.el5.i386.rpm
|
webhosting by: |
UnlimitedHosting | CustomHosting | FreeWeb.sk |
Comments
Re: Dohľadové systémy 2 - Nagios I
"Www balík si pridá nagios.conf do /etc/httpd/conf.d"
1) Da sa to niekde zmenit? Lebo na debiane ma apache2 config fajly v /etc/apache2/
2) A vlastne da sa pouzit aj iny web server ako apache? (asi som prehliadol)
3) Configuracia nagiosu sa da robit aj cez webove rozhranie ci nie?
inak idem ti robit analnu penetraciu: pekny clanok, len tak dalej :))
----------
tommyhot@hackingmachine:~$ microsoft &> /dev/null
Re: Dohľadové systémy 2 - Nagios I
1. jasne, v tomto pripade mi to urobi taku konfiguraciu lebo je to balik sity pre redhaty. stale mozes urobit aj rpm balicek, ktory to ma inak a v inej distribucii mozes pouzit ificialne distribuovany balicek, ktory to bude mat site zase na mieru pouzivanej distribucie.
2. neprehliadol, nespominal som inu moznost ale v dokumentacii nelimituju na pouzitie apache. mal by vsak mat podporu cgi a este by si sa musel vysporiadat s alternativou k htaccess
3. nie, neda. aspon v oficialnom cgi rozhrani nie. v buducnosti popisem aj php alternativy (spomenul som v uvodnej casti), ktore by mali zvladat konfiguracie aj cez web
dakujem.
______________
nález plný strát
Re: Dohľadové systémy 2 - Nagios I
Hmmmm vyzera to zaujimavo, nemas nahodou info, ci sa da nagios rozbehat vo vnutri vservera? (debian)
- prepac necital som clanok uplne pozorne, je moc vysoka hodina na mna. Daju sa naskriptit akcie, ktore vykona nagios v pripade vypadku? Nie len notifikacia adminovi, ale aj napr. skript pre restart sluzby a pod?
Re: Dohľadové systémy 2 - Nagios I
vo vserveri som ho neskusal ale podla mna by mal bezat bezstarostne.
samostatne sa rozhodovat a robit ine akcie nevie, vie si len vyziadat/pasivne prijimat vystupy pluginov. mozno by sa dal vyrobit plugin ktory by sa spustal kazdych X minut a keby nasiel v evente pruser, skusal by ho napravit ale neviem ci je to realne vykonatelne a ci by to malo vyznam.
______________
nález plný strát
Re: Dohľadové systémy 2 - Nagios I
Urcite se daji psat eventhandlers, kterymi jde reagovat na ruzne zmeny stavu monitorovanych sluzeb/stroju.
http://nagios.sourceforge.net/docs/2_0/eventhandlers.html
Re: Dohľadové systémy 2 - Nagios I
mas pravdu, moja chyba
______________
nález plný strát
Re: Dohľadové systémy 2 - Nagios I
zaujimave, budem rad ak sa v Nagiose bude pokracovat ... a prebere sa hlbsie