Strona 1 z 1

Nagios 3.06 i pnp4nagios - jak to zrobić?

: 19 marca 2009, 13:39
autor: mkiler
Witam.
Musiałem zrobić jakieś monitorowanie - wybrałem nagiosa + wykres za pomocą pnp4nagios.
Spędziłem nad tym trochę czasu, dlatego to spisałem wszystko żeby nie zapomnieć.
Sprawdzone na Debianie 4.0, raz sprawdziłem też na Debianie 5.0, z sukcesem odpalone tez na RHEL4. W chwili obecnej monitoruje serwery na Linuksie, Windowsie i urządzenia sieciowe.
W tej chwili opisałem poniżej tylko jak uruchomić nagiosa + wykresy.
Mam nadzieję, że ktoś z tego skorzysta, ewentualnie wyłapie błędy i braki.
Jak ktoś napisze, że mu się przydało, to w przyszłości opiszę jak monitorować Cisco, postgresql, Windows i jak robić wykresy z rzeczy, które standardowo się nie robią (np. ilość procesów).

Do uruchomienia potrzebny apache + php.

Kod: Zaznacz cały

apt-get install apache2 php5 libapache2-mod-php5
apt-get install libgd2-xpm libpng12-dev libjpeg62-dev libgd-tools libpng3-dev
apt-get install make gcc g++
apt-get install rrdtool rrdcollect libssl-dev
Dodajemy użytkownika.

Kod: Zaznacz cały

groupadd nagios
usermod -G nagios nagios
usermod -G www-data,nagios www-data
Tworzymy katalogi dla programu i nadajemy odpowiednie prawa.

Kod: Zaznacz cały

mkdir /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios
¦ciągamy plik, następnie kompilujemy.

Kod: Zaznacz cały

wget [url]http://www.boutell.com/gd/http/gd-2.0.33.tar.gz[/url]
tar -zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure
make && make install
Wchodzimy na stronę http://www.nagios.org/download/ i pobieramy aktualną wersję stabilną.

Kod: Zaznacz cały

wget [url]http://garr.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz[/url]
Następnie musimy rozpakować pobrany zestaw:

Kod: Zaznacz cały

tar xzf nagios-3.0.6.tar.gz
cd nagios-3.0.6
./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagios
make all
REALIZUJEMY KROKI KTÓRE SUGERUJE NAGIOS
make install
- This installs the main program, CGIs, and HTML files

make install-init
- This installs the init script in /etc/init.d

make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file

make install-config
- This installs *SAMPLE* config files in /usr/local/nagios/etc
You'll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!

make install-webconf
- This installs the Apache config file for the Nagios
web interface

Kod: Zaznacz cały

make install
make install-init
make install-commandmode
make install-config
make install-webconf
INSTALACJA NAGIOS ZAKOÑCZONA

Wchodzimy na stronę: http://sourceforge.net/projects/nagiosplug/ i pobieramy aktualna wersję:

Kod: Zaznacz cały

wget [url]http://dfn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz[/url]
Następnie musimy rozpakować pobrany zestaw:

Kod: Zaznacz cały

tar -zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure
make && make install
Teraz czas na skonfigurowanie dostępu przez www:

Kod: Zaznacz cały

cp /etc/apache2/conf.d/nagios.conf /etc/apache2/sites-available/nagios.conf
rm /etc/apache2/conf.d/nagios.conf
a2ensite nagios.conf
Następnie edytujemy /etc/apache2/sites-available/nagios.conf i zmieniamy:

Kod: Zaznacz cały

Alias /nagios/ "/usr/local/nagios/share"
na:

Kod: Zaznacz cały

Alias /nagios "/usr/local/nagios/share"
(nie wiem dlaczego ale w pierwszej wersji nie działa)

Teraz robimy:

Kod: Zaznacz cały

/etc/init.d/apache2 restart
Dodajemy jeszcze żeby nagios startował wraz z systemem:

Kod: Zaznacz cały

update-rc.d nagios defaults
Teraz jeszcze tworzymy plik z hasłem do www:

Kod: Zaznacz cały

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
W tym momencie pod adresem http://<IPADDRESS_OR_HOSTNAME>/nagios jest dostęna aplikacja, wymaga podania loginu nagiosadmin i hasła jakie utworzone zostało przy dodawaniu użytkownika.

Edytujemy /usr/local/nagios/etc/objects/contacts.cfg i wstawiamy tam swój adres email:

Kod: Zaznacz cały

define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user

        email                           [email][email protected][/email]s    ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
W tym momencie wszystko działa - monitoruje host lokalny. Ustawione jest na powiadamianie w godzinach pracy.
Wszystkie pliki konfiguracyjne zawarte są w /usr/local/nagios/etc/objects/
Pliki te maja dużo opisów w środku, łatwo można dowiedzieć się o co chodzi. Więcej informacji dostarczy Google.

Integracja z PNP4NAGIOS - wykresy

Cala wiedza wykorzystana tu zawarta jest na tej stronie http://www.pnp4nagios.org/pnp/start - opisy z tego miejsca dotyczą konkretnego podejścia do sprawy oraz spreparowania wszystkiego pod Debiana (nie sprawdzałem na innych dystrybucjach).

Pobieranie:

Kod: Zaznacz cały

wget [url]http://heanet.dl.sourceforge.net/sourceforge/pnp4nagios/pnp-0.4.13.tar.gz[/url]
Rozpakowanie:

Kod: Zaznacz cały

tar -xvzf pnp-0.4.13.tar.gz
cd pnp-0.4.13
./configure
make all
make install
make install-config
make install-init
cp /usr/local/nagios/etc/pnp/process_perfdata.cfg-sample /usr/local/nagios/etc/pnp/process_perfdata.cfg
cp /usr/local/nagios/etc/pnp/rra.cfg-sample /usr/local/nagios/etc/pnp/rra.cfg
Edytujemy /usr/local/nagios/etc/nagios.cfg i ustawiamy:

Kod: Zaznacz cały

process_performance_data=1
oraz ustawiamy ,,enable'' (kasujemy #)

Kod: Zaznacz cały

host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
Teraz możemy sprawdzić czy działa PNP pod adresem

Kod: Zaznacz cały

*http://<IPADDRESS_OR_HOSTNAME>/nagios/pnp/index.php**
Mnie znalazło pewne braki więc instaluję:

Kod: Zaznacz cały

apt-get install php5-gd
Teoretycznie powinno się coś wyświetlić ale u mnie kończy na błędzie że:
hostname is not set
nie należy martwić się tym.

Teraz czas na weryfikacje instalacji:

Kod: Zaznacz cały

cd #
cd pnp-0.4.13/contrib/
chmod 755 verify_pnp_config
./verify_pnp_config -m default
U mnie jest tak:

Kod: Zaznacz cały

[A] using Nagios basedir "/usr/local/nagios"
[A] using Nagios config "/usr/local/nagios/etc/nagios.cfg"
[I] PNP mode: "default"
[I] Nagios info: Nagios 3.0.6
[A] verifying Nagios config
[A] checking RRDtool
[I] RRDtool: RRDtool 1.2.15
[A] processing "/usr/local/nagios/etc/nagios.cfg"
[I] nagios_user=nagios
[I] nagios_group=nagios
[A] using "/usr/local/nagios/var/objects.cache" entries
[A] processing "/usr/local/nagios/etc/pnp/process_perfdata.cfg"

No (obvious) errors found. Happy graphing with PNP
Jeśli gdzieś jest E to oznacza błąd - musimy sprawdzić o co chodzi - w linii z E będą opisane oczekiwania programu co pozwoli dość szybko stwierdzić o co chodzi.

Teraz czas na podłączenie tego do nagiosa.

Edytujemy /usr/local/nagios/etc/objects/templates.cfg i wklejamy tam gdzie definicje hostów:

Kod: Zaznacz cały

define host {
  name       host-pnp
  register   0
  action_url /nagios/pnp/index.php?host=$HOSTNAME$
}
tam gdzie definicje service:

Kod: Zaznacz cały

define service {
  name       srv-pnp
  register   0
  action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}
Na tej podstawie możemy teraz budować sobie schematy do nowych hostów, ale tak naprawdę teraz do potrzeb jednego hosta wystarczy, że w pliku /usr/local/nagios/etc/objects/templates.cfg odnajdziemy:

Kod: Zaznacz cały

define host{
        name                            linux-server    ; The name of this host template
        use                             generic-host    ; This template inherits other values from the generic-host template
        check_period                    24x7            ; By default, Linux hosts are checked round the clock
        check_interval                  5               ; Actively check the host every 5 minutes
        retry_interval                  1               ; Schedule host check retries at 1 minute intervals
        max_check_attempts              10              ; Check each Linux host 10 times (max)
        check_command                   check-host-alive ; Default command to check Linux hosts
        notification_period             workhours       ; Linux admins hate to be woken up, so we only notify during the day
                                                        ; Note that the notification_period variable is being overridden from
                                                        ; the value that is inherited from the generic-host template!
        notification_interval           120             ; Resend notifications every 2 hours
        notification_options            d,u,r           ; Only send notifications for specific host states
        contact_groups                  admins          ; Notifications get sent to the admins by default
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }
i wpiszemy na dole przed } to:

Kod: Zaznacz cały

action_url /nagios/pnp/index.php?host=$HOSTNAME$
oraz odnajdziemy:

Kod: Zaznacz cały

define service{
        name                            local-service           ; The name of this service template
        use                             generic-service         ; Inherit default values from the generic-service definition
        max_check_attempts              4                       ; Re-check the service up to 4 times in order to determine its final (hard) state
        normal_check_interval           5                       ; Check the service every 5 minutes under normal conditions
        retry_check_interval            1                       ; Re-check the service every minute until a hard state can be determined
        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }
i na samym dole przed } dodamy:

Kod: Zaznacz cały

action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
Tym sposobem mamy dodane linki dla naszego localhosta i do usług, które są tu monitorowane.

Trzeba jeszcze dodać na samym końcu /usr/local/nagios/etc/objects/commands.cfg:

Kod: Zaznacz cały

define command {
  command_name    process-service-perfdata
  command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
}

define command {
  command_name    process-host-perfdata
  command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

define command{
        command_name    process-service-perfdata-file
         command_line   /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/var/service-perfdata
 }

define command{
        command_name    process-host-perfdata-file
        command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/var/host-perfdata
 }
a stare wpisy:

Kod: Zaznacz cały

'process-host-perfdata' command definition
define command{
       command_name    process-host-perfdata
       command_line    /usr/bin/printf "%b" $LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$H$
       }

 'process-service-perfdata' command definition
define command{
       command_name    process-service-perfdata
       command_line    /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEX$
       }
zamienić na takie:

Kod: Zaznacz cały

# 'process-host-perfdata' command definition
#define command{
#       command_name    process-host-perfdata
#       command_line    /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$H$
#       }

# 'process-service-perfdata' command definition
#define command{
#       command_name    process-service-perfdata
#       command_line    /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEX$
#       }
Teraz:

Kod: Zaznacz cały

/etc/init.d/nagios restart
Po wejściu na stronę http://<IPADDRESS_OR_HOSTNAME>/nagios pojawią się takie czerwone kółeczka przy host i service, po kliknięciu powinna się otworzyć nowa strona i tam będą wykresy.

Wykonując kopiuj i wklej na 99% powinno działać na Debianie Etch ;-) - informacja dla leniwych.