Konfiguracja Nagios

Konfiguracja Nagios
To właśnie w pliku nagios.cfg znajdują się wszystkie ważniejsze ścieżki do poszczególnych plików z konfiguracją hostów w sieci. Można powiedzieć, że jest to serce programu Nagios. W pliku nagios.cfg są ścieżki do plików konfiguracyjnych, wśród których wyróżniamy:
a) Katalog z plikami cfg, które reprezentują hosty w sieci. Przykład dla localhost.cfg o nazwie zie-srv-nagios znajduje się poniżej. Najpierw zdefiniowany jest host, który używa template o nazwie linux-server, a następnie zdefiniowane są określone usługi, które także mają swoje templete o nazwie generic-service oraz local-service.

define host{
use linux-server
host_name zie-srv-nagios
alias Nagios 3.0.6
address 127.0.0.1
}
define service {
use generic-service
service_description Memory
host_name zie-srv-nagios
check_command check_linux_free_memory.pl!20!10
}

define service{
use local-service
host_name zie-srv-nagios
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use generic-service
host_name zie-srv-nagios
service_description Total Processes
check_command check_procs!250!400
}


b) commands.cfg – do tego pliku odwołuje się każdy plik (w naszym przypadku localhost.cfg) w którym jest użyta komenda „check_command”. To właśnie tu następuje zdefiniowanie komendy. Oprócz podania nazwy komendy trzeba podać ścieżkę w której dany plugin się znajduje ($USER1$ jest częścią ścieżki, która jest zdefiniowana w pliku resource.cfg; przeważnie jest to /usr/local/nagios/libexec)

define command{
command_name check_linux_free_memory.pl
command_line /usr/bin/perl $USER1$/check_linux_free_memory.pl -w $ARG1$ c $ARG2$
}
define command{
command_name check_procs
command_line $USER1$/check_procs.sh -w $ARG1$ -c $ARG2$
}

define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}


c) templates.cfg – zdefiniowane templete dla hosta i usług (o nazwach generic-host, linux-server, generic-service i local-service)

define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_period 24×7
register 0
}
define host{
name linux-server
use generic-host
check_period 24×7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period workhours
notification_interval 120
notification_options d,u,r
contact_groups admins
register 0
}

define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 10
retry_check_interval 2
contact_groups admins
notification_options w,u,c,r
notification_interval 60
notification_period 24×7
register 0
}

define service{
name local-service
use generic-service
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
register 0
}

define contact{
name generic-contact
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
}

 

d) contacts.cfg – określenie kto ma być informowany o problemach

define contact{
contact_name AdminNagios
use generic-contact
alias Nagios Admin
email nagios@localhost ; email na który mają przychodzić powiadomienia
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members AdminNagios
}


e) timeperiod.cfg – określenie przedziałów czasowych dla których będzie działał Nagios; najlepiej jest użyć pliku przykładowego dostarczonego wraz z instalacją pakietu Nagios.
f) hostgroup.cfg – zdefiniowane grupy, które łatwo można później zlokalizować i przyporządkować w Nagios

define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
members zie-srv-nagios
}
define hostgroup {
hostgroup_name Wszystko
alias Wszystkie Serwery
members *
}

define hostgroup {
hostgroup_name Serwery_PING
alias Serwery pingowane
members zie-srv-nagios
}


Najlepiej po każdej ingerencji w pliki konfiguracyjne uruchomić polecenie:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


I zwracać uwagę na wszystkie errory oraz warning, które od razu pokazują plik w którym występuje niejasność lub brak zdefiniowania określonych parametrów do których jest odwołanie.

Konfiguracja pnp4nagios w systemie Debian

Konfiguracja pnp4nagios w systemie Debian

Index

Krok 1. Sprawdzenie czy pliki w folderach istnieją:
Na początek upewnić się czy plik process_perfdata.cfg oraz rra.cfg znajduje się w folderze /usr/local/pnp4nagios/etc/ . Jeżeli nie, najlepiej znaleźć pliki w katalogu pnp4nagios-0.6.2 (process_perfdata.cfg-sample oraz rra.cfg-sample), zmienić ich nazwy (bez ‘-sample’) i skopiować do powyższego folderu (/usr/local/pnp4nagios/etc/). Dodatkowo upewnić się przy process_perfdata.pl znajduje się w folderze, gdzie znajdują się wszystkie pluginy z Nagios (w moim przypadku /usr/local/nagios/libexec/), jeżeli nie znajdujemy plik process_perfdata.pl-sample, zmieniamy nazwę na process_perfdata.pl i umieszczamy go w folderze /libexec.

Krok 2. Kolejnym krokiem jest edycja pliku konfiguracyjnego nagios.cfg. Edycji i zmian należy dokonać według poniższych wartości:

process_performance_data=1
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\\tTIMET::$TIMET$\\tHOSTNAME::$HOSTNAME$\\tSERVICEDESC::$SERVICEDESC$\\tSERVICEPERFDATA::$SERVICEPERFDATA$\\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\\tHOSTSTATE::$HOSTSTATE$\\tHOSTSTATETYPE::$HOSTSTATETYPE$\\tSERVICESTATE::$SERVICESTATE$\\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\\tTIMET::$TIMET$\\tHOSTNAME::$HOSTNAME$\\tHOSTPERFDATA::$HOSTPERFDATA$\\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\\tHOSTSTATE::$HOSTSTATE$\\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

 

Krok 3. Edycja pliku konfiguracyjnego templates.cfg (w moim przypadku uzupełnienie o następujące wpisy):

define host {
name host-pnp
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_
}
define service {
name srv-pnp
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}


Szczególną uwagę przywiązujemy do ścieżki, która zaczyna się od /pnp4nagios/…. Należy pamiętać o tym, że ścieżka może być inna co zależy od ustawień instalacji.

Krok 4. Dodajemy w definicji hostów i usług następujące wiersze (należy zwrócić uwagę na ścieżki!):

Dla hosta:

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


Dla usługi:

action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$

 

W moim przypadku wpiszemy na dole przed } to:

define service{
name generic-service ; The \’name\’ of this service template
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_interval 0
is_volatile 0
check_period 24×7
normal_check_interval 5
retry_check_interval 1
max_check_attempts 4
notification_period 24×7
notification_options w,u,c,r
contact_groups admins
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}

 

define host{
name ogolnie-host ; The \’name\’ of this service template
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command check-host-alive
max_check_attempts 10
notification_interval 0
notification_period 24×7
notification_options d,u,r
contact_groups admins
register 0
action_url /pnp4nagios/graph?host=$HOSTNAME$
}

 

Na poniższym rysunku zaznaczyłem te dwa odnośniki:

[singlepic id=28 w=320 h=240 float=center]

Krok 5. Edytujemy plik konfiguracyjny command.cfg i uzupełniamy o następujące wiersze:

define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
command_line /usr/bin/printf \”%b\” \”$LASTSERVICECHECK$\\t$HOSTNAME$\\t$SERVICEDESC$\\t$SERVICESTATE$\\t$SERVICEATTEMPT$\\t$SERVICESTATETYPE$\\t$SERVICEEXECUTIONTIME$\\t$SERVICELATENCY$\\t$SERVICEOUTPUT$\\t$SERVICEPERFDATA$\\n\” >> /usr/local/nagios/var/service-perfdata.out
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
command_line /usr/bin/printf \”%b\” \”$LASTHOSTCHECK$\\t$HOSTNAME$\\t$HOSTSTATE$\\t$HOSTATTEMPT$\\t$HOSTSTATETYPE$\\t$HOSTEXECUTIONTIME$\\t$HOSTOUTPUT$\\t$HOSTPERFDATA$\\n\” >> /usr/local/nagios/var/host-perfdata.out
}

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

define command{
command_name process-host-perfdata-file
command_line /usr/local/nagios/libexec/process_perfdata.pl –bulk=/usr/local/pnp4nagios/var/host-perfdata
}

 

stare wpisy dezaktywujemy, czyli dodajemy ‘#’ przed wierszami:

#\’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$HOST#EXECUTIONTIME$\\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$
# }

 

Krok 6. Czas na weryfikacje instalacji poprzez plik, który jest dostarczony w pakiecie z pnp4nagios (plik o nazwie ‘verify_pnp_config’):

cd pnp4nagios-0.6.2/contrib/
chmod 755 verify_pnp_config
./verify_pnp_config -m bulk


Dokładniejszy opis znajduje się pod linkiem:
verify_pnp_config

Jeżeli wszystko się zgadza możemy podziwiać efekty naszej pracy:

[singlepic id=29 w=320 h=240 float=center]

Dodatkowo:
wykonać polecenie:

a2enmod rewrite


oraz wyłączyć magic_quotes (magic_qoutes= Off) w pliku php.ini