piątek, 7 grudnia 2012

Monitorowanie serwerów za pomocą Nagios'a

Nagios jest narzędziem przy pomocy którego możemy monitorować hosty we własnej sieci. Plusem jest udostępnianie go na mocy licencji GPL. Ewentualne problemy występujące na monitorowanych hostach mogą zostać wysłane na e-maila lub poprzez SMS. Za jego pomocą mamy możliwość kontroli nad podstawowymi usługami każdej sieci jak min.: SMTP, HTTP, FTP czy SSH. Pozwala również uzyskać podstawowe informacje o sprzęcie: Proces, zajętość miejsca na dysku(choć te rzeczy można wyciągnąc prostym skryptem bash'owym, ale jeżeli w jednym miejscu mamy dostęp do praktycznie każdej ważnej informacji tym lepiej). Jego możliwości można rozszerzyć za pomocą plugin'ów napisanych w Bash'u, C++,Perlu czy PHP. Poniżej dokładny sprawdzony opis na Debianie Squeeze (ver.6).

Na początku oczywiście musimy zainstalować czystego Debiana, jak napisałem wykorzystuje wersję nr.6. Potrzebny będzie do tego obraz systemu(można użyć pełnej wersji lub netinstall), ja użyłem netinstall, waży jedynie 185MB, cała reszta jest ściągana w najnowszych wersjach prosto z sieci w trakcie instalacji. Do pobrania na stronie Debian.org. Musimy mieć oczywiście dostęp do sieci, więc w ustawieniach naszych maszyn zaznaczamy Sieć i wybieramy NAT. Po zakończonej instalacji będziemy musieli ustawić nasze karty sieciowe tak, aby wskazywały obszar tej samej sieci (o tym dalej). W trakcie instalacji jedną maszynę                        nazwijmy Server1, drugą Monitor. Instalacja jest prosta wystarczy czytać informacje, w dziale rozłożenia partycji dysku wybrałem "Guided-use entrie disk " i "all in one partition". Na koniec wybrać należy do instalacji jedynie SSH i  Standard system utilities. Dokładny opis instalacji znajdziemy tutaj. Można wybrać język polski w trakcie instalacji co ułatwi czytanie komunikatów.

Mając zainstalowaną sieć testową, czyli  dwa nasze serwery możemy przystąpić do do działania:
1)Wydajemy dwa polecenia(za każdym razem na końcu polecenie wciskamy enter, w trakcie wciskamy Y(koniecznie duże)):

Monitor:~# apt-get install nagios3 nagios-plugins nagios-nrpe-plugin
Server1:~# apt-get install nagios-nrpe-server nagios-plugins

W trakcie instalacji pojawi się okienko w wyborem nazwy grupy roboczej samby oraz serwera Wins,
pozostawiamy nazwę domyślną i naciskamy Enter. Na stacji Server pojawi się okienko w którym trzeba
wybrać hasło dla usera(nagiosadmin), który będzie mógł się logować do Nagios'a poprzez www, po wpisaniu hasła klikamy OK, następnie potwierdzamy je ponownie.

Mamy gotową instalacje Nagios'a na dysku.




2)Następnie na Server1 instalujemy apache2:

 Server1:~# apt-get install apache2

Mamy działającego apache2, dzięki któremu będziemy mogli oglądać działanie Nagios'a przez przeglądarkę.Niestety domyślnie apache2 działa na localhost, musimy to zmienić




3)Za pomocą nano(lub vi) będziey edytować plik konfiguracyjny Nagios'a:

define host{
use generic-host
host_name server1
alias server1
address 192.168.1.100
}
define service{
use generic-service
host_name server1
service_description HTTP-Server
check_command check_http
}



W configu pojawia się adres IP 192.168.1.100, taki adres nadamy teraz maszynie Server1 i 192.168.1.105 dla Monitor. Dlatego też wykonujemy:

Monitor:~# nano /etc/networking/interface
Server1:~# nano /etc/networking/interface


W obydwu plikach kasujemy wpis poniżej # The primary network interface, następnie wpisujemy konfiguracje IP:

auto eth0
iface eth0 inet static
address 192.168.1.105 #IP dla Monitor
address 192.168.1.100 #IP dla Server1
gateway 192.168.1.1
netmask 255.255.255.0



Następnie wykonujemy restart interfejsów dla obydwu maszyn poleceniem: 

/etc/init.d/networking restart

Po tych ustawieniach po wydaniu ping 192.168.1.100 powinniśmy otrzymać potwierdzenie nawiązania połączenia między hostami.

WAŻNE
W miejscach gdzie wydawane są polecenia apt-get install taka konfiguracja nie pozwoli nam na ściągnięcie paczek z danymi. Dlatego też należy za komentować wszystkie linijki i napisać w plikach obu maszyn:

auto eth0
iface eth0 inet dhcp


zmieniając oczywiście ustawienia na maszynie z karty izolowanej na NAT. 

Następnie musimy zrestartować usługę Nagios3 na maszynie Monitor:

Monitor:~#/etc/init.d/nagios3 restart
Nagios powinien się zrestartować.








4)Nasłuchiwanie na 192.168.1.105


Server1:~# nano /etc/nagios/nrpe.cfg
Odnajdujemy allowed_hosts=127.0.0.1 IP zmieniamy na 192.168.1.105.

Następnie robimy restart Nagios'a:

Server1:~#/etc/init.d/nagios-nrpe-server restart
Sprawdzimy jeszcze liczbę user'ów:

Monitor:~# cd /usr/lib/nagios/plugins
Monitor:~# ./check_nrpe -H 192.168.1.100 -c check_users


Otrzymamy mniej więcej coś takiego:

USERS OK - 1 users currently logged in |users=1;5;10;0


5)Rekonfigurujemy plik z pkt. 2:



Monitor:~# nano /etc/nagios3/conf.d/server1_nagios2.cfg

Po już dodanych wpisach dodajemy jeszcze poniższe:



define service{
use generic-service
host_name server1
service_description Current Load
check_command check_nrpe_1arg!check_load
}
define service{
use generic-service
host_name server1
service_description Current Users
check_command check_nrpe_1arg!check_users
}
define service{
use generic-service
host_name server1
service_description Disk Space
check_command check_nrpe_1arg!check_hda1
}
define service{
use generic-service
host_name server1
service_description Total Processes
check_command check_nrpe_1arg!check_total_procs
}

Następnie robimy restart usługi:

Monitor:~# /etc/init.d/nagios3 restart

Następnie edytujemy:

Server1:~# nano /etc/nagios/nrpe.cfg



w linii 201 zmienimy:

command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1

na:

command[check_iscsi1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/iscsi1-root

dodatkowo w:

Monitor:~# nano /etc/nagios3/conf.d/server1_nagios2.cfg

Zmieniamy:



define service{
use generic-service
host_name server1
service_description Disk Space
check_command check_nrpe_1arg!check_hda1
}

Na:

define service{
use generic-service
host_name server1
service_description Disk Space
check_command check_nrpe_1arg!check_iscsi1
}

Na koniec restartujemy na obu maszynach Nagios'a:

Monitor:~# /etc/init.d/nagios3 restart

Server1:~# /etc/init.d/nagios-nrpe-server restart



6) Konfiguracje powiadomień o incydentach poprzez mail:


Monitor:~# /etc/nagios3/conf.d/contacts_nagios2.cfg

Usuwamy zawartość pliku i wklejamy/przepisujemy poniższy config:


define contact{
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email admin@domain.com
}

define contact{
contact_name example
alias example
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email anotheradmin@domain.com
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members root,example
}

Config już jest, oczywiście w miejscu gdzie jest wpisany e-mail zmieniamy go na nasz:)

Teraz zainstalujemy Postfix'a(serwer pocztowy pod GNU/Linux):

Monitor:~# apt-get install postfix mailx


Pojawi się okienko z typem/rodzajem konfiguracji wybieramy:"Internet Site" później jeszcze podajemy informacje na temat domeny na której stoi Nagios i z której mail będzie wysłany. W naszej testowej sieci nie ma domeny na razie, dlatego nie sprawdzimy działania tej funkcji, postaram się pokazać konfigurację  domeny w Debianie.

Monitor:~# /etc/init.d/nagios3 restart

Server1:~# /etc/init.d/apache2 stop

Spowoduje to pojawienie się błędu i wysłanie w środowisku produkcyjnym maila z informacją o problemie. Po tym błędzie wydajemy to samo polecenie na Server'ze z opcją start.

Dla leniwych od Kolegi Arka  Nagios - fast install  :)





1 komentarz:

  1. Witam,

    Sam trochę grzebałem przymierzając się do Nagiosa i znalazłem coś takiego http://www.fullyautomatednagios.org/ czyli Nagios dla leniwych

    Pozdrawiam,
    Arek

    OdpowiedzUsuń