Nagios
Z wiki linux-user
(Utworzył nową stronę „Category:Serwery”) |
m |
||
Linia 1: | Linia 1: | ||
− | [[Category: | + | [[Category:Serwer]] |
+ | == 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> |