O diretório padrão da instalação do
Nagios (se você não alteração durante a criação do Makefile) é /usr/local/nagios.
Deverão existir, basicamente, 6 subdiretórios:
- bin - Executáveis do Nagios;
- etc - Arquivos de configuração;
- libexec - Plugins;
- sbin - Scripts CGI para interface Web;
- share - Arquivos HTML e imagens para Web;
- var - Logs.
Dentro do diretório etc, se você executou o comando "make install-config" durante a instalação, deverão estar os arquivos de exemplo de configuração. Estes arquivos estão bem completos, precisando apenas de poucas alterações para o correto funcionamento. Portanto, vamos utilizar esses mesmos arquivos para levantar nosso sistema.
Antes de mais nada, realizamos um backup dos arquivos originais para eventuais problemas na configuração:
# cd /usr/local/nagios/etc
# mkdir original
# cp *.cfg-sample original
Renomeie todos os arquivos com nome .cfg-sample para .cfg:
# for i in *cfg-sample; do mv $i `echo $i|sed -e s/cfg-sample/cfg/`; done;
Pronto, temos agora no diretório etc os arquivos necessários para começarmos as configurações do Nagios.
Arquivos de configuração
cgi.cfg
Contém as configurações de acesso e visualização via Web-CGI. Descomente as linhas de autorização, e defina os usuários que podem acessar as funções, de acordo com o arquivo htpasswd.users, conforme já visto na página anterior.
nagios.cfg
Configurações padrão do Nagios. Precisamos alterar apenas a definição para busca de comandos externos (para uso do NRPE), e o formato da data:
check_external_commands=1
date_format=euro
commands.cfg
Definição dos comandos a serem executados para monitoramento.
Todos os plugins podem ser executados manualmente, utilizando a opção "-h" para exibir a ajuda.
# /usr/local/nagios/libexec/check_http -h
No caso do plugin check_http, a opção "-H" define o IP do HTTP server a ser testado:
# /usr/local/nagios/libexec/check_http -H <ip_httpserver>
Com esta linha de comando, a definição do comando dentro de commands.cfg, será:
define command{
command_name check_http
command_line check_http -H $HOSTADDRESS$
}
Na linha acima, a variável $HOSTADDRESS$ será informada pelo Nagios no momento da verificação desse serviço.
O arquivo commands.cfg original já possui muitos comandos predefinidos, por isso não daremos tanta atenção a este arquivo agora.
services.cfg
Definição dos serviços de monitoramento. Utilizando a definição do comando check_http em commands.cfg, podemos ativar o monitoramento de um servidor http, utilizando a seguinte configuração, dentro de services.cfg:
Primeiro, definimos um template (padrão), afim de diminuir o número de linhas nesse arquivo, podendo aplicar esse template aos serviços desejados.
define service{
name local-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 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 1
contact_groups <nome_do_grupo>
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}
Agora, definimos o serviço HTTP a monitorar:
define service{
use local-service # (nome do template)
host_name site
service_description Servidor HTTP
check_command check_http!<ip_http_server>
contact_groups <Grupo de Contato>
}
Repare que na linha "check_command", deverá ser colocado o nome do serviço plugin "check_http", seguido de (!) exclamação e o IP do servidor, que será o valor da variável $HOSTADDRESS$ declarada no arquivo commands.cfg.
Adicione também no arquivo commands.cfg, a definição do plugin NRPE:
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
contacts.cfg
Definição dos contatos para envio de notificações e alertas.
define contact{
contact_name <login>
alias <Nome_Completo>
service_notification_period <Periodos definidos em TIMEPERIODS.CFG>
host_notification_period <Periodos definidos em TIMEPERIODS.CFG>
service_notification_options w,u,c,r #( w=warning / u=unknown / c=critical / r=recoveries / n=none)
host_notification_options d,u,r #( d=down / u=notify / r=recoveries / n=none )
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email email@seudominio.com.br
}
contactgroups.cfg
Definição dos grupos de contatos, facilitando a configuração para envio de notificações e alertas.
define contactgroup{
contactgroup_name <grupo>
alias <nome do grupo>
members <Logins definidos no arquivo contacts.cfg>
}
hosts.cfg
Configuração dos hosts que serão monitorados.
Pode ser definido um host padrão (template) e utilizado para todos os hosts, diminuindo muito o número de linhas no arquivo hosts.cfg.
define host{
name generic-host
event_handler_enabled 1
flap_detection_enabled 1
max_check_attempts 5
notification_interval 20
notification_options d,u,r
notification_period 24x7
notifications_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 # não deve ser registrado, pois não é um host, apenas um template
}
define host{
use generic-host # nome do template criado acima
address <ip_servidor>
alias <Nome do Servidor>
check_command <comando pre-definido em services.cfg>
host_name <Host_Name_do_servidor>
}
hostgroups.cfg
Definição dos grupos de hosts.
define hostgroup{
hostgroup_name <nome_do_grupo>
alias <Descrição do Grupo>
contact_groups <grupos_que_fazem_parte>
members <hosts_que_fazem_parte>
}
timeperiods.cfg
Declaração dos horários para monitoramento.
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}