Nagios

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
m
 
Linia 2: Linia 2:
 
== Nagios ==
 
== Nagios ==
 
W tym howto opiszę w jaki sposób można monitorować zdalne maszyny za pomocą oprogramowania '''Nagios'''.
 
W tym howto opiszę w jaki sposób można monitorować zdalne maszyny za pomocą oprogramowania '''Nagios'''.
 +
'''Nagios''' jest oprogramowaniem, które umożliwia monitorowanie zdalnych maszyn oraz ich usług. Więcej na temat co to jest nagios można poczytać [http://www.nagios.org/about/overview/ tutaj].<br />
 +
Opisane poniżej kroki wykonywałem na:
 +
* serwer monitorujący nagios Centos 6.2 i386
 +
* hosty monitorowane Fedora 16, Centos 5.5, WindowsXP
 +
monitorowane usługi to między innymi:
 +
* ping
 +
* http
 +
* ilość wolnego miejsca na dysku
 +
* zalogowani użytkownicy w systemie
  
 +
=== Przygotowanie środowiska ===
 +
Do poprawnego działania oprogramowania '''Nagios''' potrzebujemy jedynie serwera stron ''www'' w celu wyświetlenia web-gui. Jak zainstalować serwer np Apach pokazane jest [[Apache|tutaj]].
 +
Potrzebujemy również jakieś repo w celu zainstalowania środowiska Nagios, ja użyłem repozytorium rpmforge.
 +
Ściągamy paczkę rpmforge (ja pobieram dla maszyny 32 bitowej)
 +
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
 +
Instalujemy klucze GPG
 +
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
 +
Jeśli dostaniesz taki błąd jak poniżej
 +
error: http://apt.sw.be/RPM-GPG-KEY.dag.txt: key 1 import failed.
 +
to zweryfikuj paczkę poleceniem
 +
rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
 +
a następnie zainstaluj repozytorium rpmforge poleceniem
 +
rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
 +
to powinno dodać repozytorium rpmforge do Twojej listy repo.
 +
W instalacji przewidziałem również że nie będę używał żadnego firewalla czy selinuxa chociaż jest to '''bardzo ryzykowne'''.
 +
 +
=== Instalacja nagiosa (serwer monitorujący) ===
 +
Aby zainstalować oprogramowanie '''Nagios''' wydajemy polecenie
 +
yum install *nagios*
 +
najważniejsze paczki, które powinny się zainstalować to
 +
nagios                             
 +
* nagios-devel                     
 +
* nagios-nrpe                       
 +
* nagios-nsca                                       
 +
* nagios-plugins                     
 +
* nagios-plugins-nrpe                 
 +
* nagios-plugins-setuid             
 +
w moim przypadku Nagios jest w wersji '''3.2.3-3.el6'''.
 +
Jeżeli wszystko poszło bez żadnych błędów to powinniśmy mieć już zainstalowanego nagiosa. Usługę można włączać/wyłączać/restartować za pomocą polecenia
 +
service nagios restart
 +
lub
 +
service nagios start
 +
lub
 +
service nagios stop
 +
warto również dodać nagiosa do listy uruchamianych usług podczas uruchamiania systemu
 +
chkconfig nagios on
 +
warto również to samo zrobić z serwerem apach
 +
chkconfig httpd on
 +
Mamy również bardzo przydatną komendę nagiosa do sprawdzania stanu plików konfiguracyjnych, szczególnie przydatna jeśli nie chce wstać nam usługa nagiosa
 +
nagios -v /etc/nagios/nagios.cfg
 +
 +
=== Konfiguracja serwera Nagios ===
 +
W tym momencie mamy zainstalowane oraz uruchomione oprogramowanie Nagios oraz [[apache]]
 +
service nagios start
 +
oraz
 +
service httpd start
 +
Kolejnym krokiem jest nadanie użytkownika i hasła do przeglądania web-gui nagiosa wydając polecenie
 +
htpasswd -c /etc/nagios/htpasswd.users nagios
 +
i możemy zalogować się do web-gui nagiosa za pomocą przeglądarki internetowej na adres<br />
 +
http://adres-ip-serwera-nagios/nagios<br />
 +
podając wcześniej skonfigurowane dane użytkownika i jego hasło.
 +
 +
==== Pliki konfiguracyjne serwera nagios ====
 +
Głównym plikiem konfiguracyjnym nagiosa jest plik /etc/nagios/nagios.cfg, natomiast logi domyślnie znajdują się w katalogu ''/var/log/nagios''.
 +
===== /etc/nagios/nagios.cfg =====
 +
w tym pliku znajduje się wiele ciekawych opcji a jedną z najważniejszych dla nas jest
 +
cfg_file=/etc/nagios/objects/localhost.cfg
 +
cfg_file=/etc/nagios/objects/serwer-www.cfg
 +
która umożliwia pokazanie nagiosowi pliku konfiguracyjnego z nowo dodanym monitoringiem dla zdalnego hosta tzw objekt.
 +
Kolejnym albo kolejnymi ważnymi plikami są tzw pliki obiektów znajdujące się w ścieżce ''/etc/nagios/objects''.
 +
===== /etc/nagios/objects/serwer-www.cfg =====
 +
Powyższy przykładowy wpis zawiera dane odnośnie monitorowanego systemu tzn adres
 +
* adres serwera
 +
* nazwa wyświetlana
 +
* określenie grupy
 +
* definicja monitorowanych usług
 +
Do plików nowych maszyn możemy przekopiować zawartość pliku ''localhost.cfg'' i tak też zrobiłem tym razem jednak później należy go dostosować do własnych potrzeb, gdyż obiekt localhost.cfg jak sama nazwa wskazuje ustawiony jest do monitorowania maszyny lokalnej a nie zdalnej. <br />
 +
Do monitorowania mojego serwera www potrzebuję jedynie takich definicji jak
 +
* monitorowanie pinga
 +
* monitorowanie dysku całego lub partycji
 +
* monitorowanie zalogowanych obecnie użytkowników do serwera
 +
* monitorowanie usługi http
 +
poniżej wklejam dopasowany do moich potrzeb plik serwer-www.cfg
 +
define host{
 +
        use                    linux-server
 +
        host_name              serwer-www
 +
        alias                  serwer-www
 +
        address                192.168.0.12
 +
        }
 +
define hostgroup{
 +
        hostgroup_name  linux-servers
 +
        alias          Linux Servers ; Long name of the group
 +
        members        serwer-www
 +
        }
 +
define service{
 +
        use                            generic-service        ; Name of service template to use
 +
        host_name                      serwer-www
 +
        service_description            PING
 +
        check_command                  check_ping!100.0,20%!500.0,60%
 +
        }
 +
define service{
 +
        use                            generic-service        ; Name of service template to use
 +
        host_name                      serwer-www
 +
        service_description            Partycja home
 +
        check_command                  check_nrpe!check_disk!20%!10%!/dev/sda6
 +
        }
 +
define service{
 +
        use                            generic-service        ; Name of service template to use
 +
        host_name                      serwer-www
 +
        service_description            Current Users
 +
        check_command                  check_nrpe!check_users!20!50
 +
        }
 +
define service{
 +
        use                            generic-service        ; Name of service template to use
 +
        host_name                      check-www
 +
        service_description            HTTP
 +
        check_command                  check_nrpe!check_httpd
 +
        notifications_enabled          0
 +
        }
 +
 +
W tym momencie próba zrestartowania usługi nagiosa będzie nieudana gdyż w pliku konfiguracyjnym serwer-www.cfg mamy podane nie istniejące definicje komend  a dokładniej chodzi o trzy definicje czyli
 +
* check_disk
 +
* check_users
 +
* check_nrpe
 +
błąd można bardzo łatwo wykryć poleceniem
 +
# nagios -v /etc/nagios/nagios.cfg
 +
Nagios Core 3.2.3
 +
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
 +
Copyright (c) 1999-2009 Ethan Galstad
 +
Last Modified: 10-03-2010
 +
License: GPL
 +
Website: http://www.nagios.org
 +
Reading configuration data...
 +
  Read main config file okay...
 +
Processing object config file '/etc/nagios/objects/commands.cfg'...
 +
Processing object config file '/etc/nagios/objects/contacts.cfg'...
 +
Processing object config file '/etc/nagios/objects/timeperiods.cfg'...
 +
Processing object config file '/etc/nagios/objects/templates.cfg'...
 +
Processing object config file '/etc/nagios/objects/localhost.cfg'...
 +
Processing object config file '/etc/nagios/objects/serwer-www.cfg'...
 +
Warning: Duplicate definition found for service 'HTTP' on host 'localhost' (config file '/etc/nagios/objects/localhost.cfg',  starting on line 150)
 +
  Read object config files okay...
 +
Running pre-flight check on configuration data...
 +
Checking services...
 +
Error: Service check command 'check_nrpe' specified in service 'Current Users' for host 'serwer-www' not defined anywhere!
 +
Error: Service check command 'check_nrpe' specified in service 'Partycja home' for host 'serwer-www' not defined anywhere!
 +
....
 +
Total Warnings: 0
 +
Total Errors:  2
 +
***> One or more problems was encountered while running the pre-flight check...
 +
    Check your configuration file(s) to ensure that they contain valid
 +
    directives and data defintions.  If you are upgrading from a previous
 +
    version of Nagios, you should be aware that some variables/definitions
 +
    may have been removed or modified in this version.  Make sure to read
 +
    the HTML documentation regarding the config files, as well as the
 +
    'Whats New' section to find out what has changed.
 +
 +
 +
co dosyć dokładnie określa nam gdzie jest błąd. Aby usunąć powyższy błąd należy dodać do pliku ''/etc/nagios/objects/commands.cfg'' definicję nowych komend.
 +
 +
===== /etc/nagios/objects/commands.cfg =====
 +
Plik '''commands.cfg''' przechowuje komendy dla definicji usług, które mają być monitorowane. Dla przykładu dodam dwie definicje monitorowania dysku oraz użytkowników.
 +
<br />
 +
Deinicja monitorowania zdalnego dysku
 +
define command{
 +
        command_name    check_disk
 +
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
 +
        }
 +
zwróć uwagę na nazwę opcji ''command_name'' czyli  ''check_disk'' musi się zgadzać z nazwą użytą w pliku ''serwer-www.cfg''
 +
<br />
 +
Definicja monitorowania użytkowników
 +
define command{
 +
        command_name    check_users
 +
        command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$
 +
        }
 +
Definicja check_nrpe potrzebna do zdalnego monitorowania
 +
define command{
 +
        command_name    check_nrpe
 +
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
 +
        }
 +
 +
reguła działania jest bardzo podobna
 +
opcje
 +
*'''-w''' określa kiedy występuje warning
 +
*'''-c''' określa kiedy występuje critical
 +
zakres tych opcji zostanie ustalony na klientach (stacjach monitorowanych).
 +
<br />
 +
Po wprowadzeniu tych zmian restartujemy nagiosa
 +
service nagios restart
 +
tym razem powinien uruchomić się bez problemu, a po chwili powinniśmy zobaczyć nową maszyne w panelu web-gui nagiosa.<br /><br />
 +
[[Plik:nagios1.png|800px]]
 +
<br />
 +
Jak można zauważyć mam dwa błędy krytyczne z błedem ''Connection refused by host '', można się tylko domyślać, że nie mam poprawnie skonfigurowanego klienta (hosta monitorowanego).
 +
 +
=== Konfiguracja klienta Linux - stacja monitorowana ===
 +
Moim klientem czyli maszyna, którą chcę monitorować jest Fedora 16 z zainstalowanym oprogramowaniem apache, dlatego też nazwa w nagiosie ''serwer-www''. Aby zainstalować w systemie Linux klienta dla nagiosa wydajemy polecenie
 +
yum install nrpe nagios-plugins-nrpe
 +
program nrpe robi za klienta który nasłuchuje na porcie 5666 a pakiet nagios-plugins-nrpe dostarcza nam pluginy, które możemy wykorzystać do monitorowania swoich usług.<br />
 +
Po zainstalowaniu pakietu ''nagios-plugins-nrpe'' wszystkie pluginy powinny znajdować się w ścieżce ''/usr/lib/nagios/plugins'' lub w ''/usr/local/nagios/libexec/'' w zależności od używanego systemu.<br />
 +
Na maszynie monitorowanej najważniejszym plikiem jest ''/etc/nagios/nrpe.cfg'', który jest dostępny po zainstalowaniu paczki '''nrpe'''. W tym pliku konfigurujemy między innymi takie opcje jak
 +
* '''server_port''' port na którym ma działać usługa (domyślnie 5666)
 +
* '''server_address''' adres serwera nrpe (czyli lokalny)
 +
* '''nrpe_user''', ''' nrpe_group''' użytkownika i grupę nrpe (zostawiamy domyślnie)
 +
* '''allowed_hosts''' hosty, które mają możliwość odebrania informacji od nrpe (ważna opcja musimy w tym miejscu podać IP lub nazwę DNS serwera monitorującego)
 +
* '''dont_blame_nrpe=1''' opcja domyślnie ustawiona na '''0''', musimy ją przestawić na '''1''' jeśli chcemy mieć możliwość dopuszczania argumentów w komendach z definicji
 +
* '''command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20''' właściwa komenda dla serwera odpytującego
 +
do mojego konfiga '''nrpe.cfg''' muszę dodać dwie dodatkowe reguły takie same jak podałem w plikach '''commands.cfg''' i '''serwer-www.cfg''' na serwerze nagiosa (zauważ, że nazwy '''check_disk''' oraz '''check_users''' w poszczególnych plikach muszą być takie same) czyli
 +
* check_users
 +
* check_disk
 +
===== komenda dla sprawdzenia partycji =====
 +
komenda dla sprawdzenia mojej np partycji /dev/sda6 będzie wyglądała następująco
 +
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda5
 +
gdzie
 +
* '''-w''' określa poziom dla zdarzenia ''warning'' ustawiłem na 20% wolnej przestrzeni na partycji
 +
* '''-c''' to samo co wyżej tylko dla zdarzenia ''critical'' ustawione na 10% wolnej przestrzeni
 +
* '''-p''' określa jakie urządzenie ma być monitorowane
 +
* '''/usr/local/nagios/libexec/check_disk''' ścieżka do pluginów zainstalowanych z pakietu ''nagios-plugins-nrpe''
 +
===== komenda dla sprawdzenia użytkowników =====
 +
aby sprawdzić ile osób jest zalogowanych na danej maszynie musisz dopisać następującą linijkę
 +
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
 +
gdzie
 +
* '''-w''' warning
 +
* '''-c''' critical
 +
* '''/usr/local/nagios/libexec/check_users''' ścieżka do pluginu
 +
 +
===== komenda dla sprawdzenia stanu http =====
 +
aby sprawdzić stan serwera http możesz dopisać taką regułe
 +
command[check_httpd]=/usr/local/nagios/libexec/check_http -I 192.168.0.12 -w 20 -c 60
 +
 +
Opis poszczególnych pluginów i ich możliwych opcji możecie wyszukać na stronie [http://nagiosplugins.org/ nagiosplugins.org]
 +
Po wyżej wymienionych zmianach uruchamiamy lub restartujemy program '''nrpe'''
 +
service nrpe restart
 +
i po chwili powinny być widoczne zmiany w web-gui serwera nagios<br /><br />
 +
[[Plik:nagios2.png|800px]]
 +
<br />
 +
Jak widać mam jednego ''warninga'' przy opcji ''Current Users'', ponieważ ustawiłem opcję '''-w''' na '''2''' a w danej chwili jest zalogowanych 3 userów.
 +
<br />
 +
=== Konfiguracja klienta Windows - stacja monitorowana ===
 +
Konfiguracja klienta winsows na serwerze monitorującym nie różni się niczym od konfiguracji monitorowanej stacji z systemem Linux. Dlatego tutaj opisze co należy wykonać na systemie Windows XP aby zadziałał monitoring.<br />
 +
Zaczynamy od ściągnięcia ze strony [http://www.nagios.org/download/addons www.nagios.org/download/addons] paczki z klientem dla systemu Windows. Następnie należy rozpakować ściągniętą paczkę i przejść do katalogu odpowiedniego dla swojego systemu w moim przypadku będzie to '''Win_2k_XP_Bin'''.<br />
 +
Następnie kopiujemy pliki ''pNSClient.exe'', ''pdh.dll'', ''psapi.dll'', ''counters.defs'' do katalogu np ''C://nsclient''.<br />
 +
Otwieramy wiersz poleceń systemu Windows i przechodzimy do katalogu gdzie zostały przekopiowane wyżej wymienione pliki i wpisujemy polecenie
 +
pNSClient.exe /install
 +
a następnie żeby uruchomić usługę
 +
net start client
 +
więcej szczegółów znajdziesz w pliku README ściągniętej paczki.
 +
 +
== Nagios web-gui ==
 +
W samym web-gui nagiosa aby przyśpieszyć albo wysłać z ręki zapytanie o status usługi do danego klienta klikamy na usługa (np ''HTTP'') -> następnie po lewej stronie w tabelce na opcję ''Re-schedule the next check of this service'' -> klikamy na przycisk ''Commit'' -> klikamy na ''Done''.
  
 
<br /><google1 style="4"></google1>
 
<br /><google1 style="4"></google1>

Aktualna wersja na dzień 11:39, 19 lis 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych