Configuração o Apache
Como o Nagios é uma ferramenta totalmente voltada para WEB, é preciso configurar o apache para que ele possa exibir as páginas de monitoração do Nagios, para isso edite o arquivo httpd.conf e adicione as linhas abaixo:
# vi /etc/http/conf/httpd.conf
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin/"
<Directory "/usr/local/nagios/sbin/">
AllowOverride AuthConfig
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /nagios "/usr/local/nagios/share/"
<Directory "/usr/local/nagios/share">
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
</Directory>
Note que o acesso a página do Nagios será feito através de senha, usando o recurso httpaccess do Apache.
Ao término da configuração, no arquivo httpd.conf você deverá configurar os usuários que terão acesso ao Nagios.
Informe no comando htpasswd o local onde o arquivo de usuários deverá ser armazenado de acordo com a linha AuthUserFile definida no arquivo de configuração do apache (httpd.conf).
# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
# chown apache:apache /usr/local/nagios/etc/htpasswd.users
CheckList:
# cat /usr/local/nagios/etc/htpasswd.users
Reinicie o Apache para que as modificações sejam ativadas.
# /etc/init.d/httpd restart
Entendendo os arquivos de configuração do Nagios
O Nagios em sua instalação padrão cria os arquivos de configuração exemplos no diretório /usr/local/nagios/etc que você poderá usar para customizar sua rede.
Entre no diretório de configuração do Nagios:
# cd /usr/local/nagios/etc/
Faça um backup de todos os arquivos de configuração por segurança:
# mkdir original
# cp *.cfg-sample original
Troque os arquivos .cfg-sample para apenas .cfg para que os mesmos possam ser usados na configuração do Nagios (execute o comando abaixo na pasta /usr/local/nagios/etc):
# for i in *cfg-sample; do mv $i `echo $i|sed -e s/cfg-sample/cfg/`; done;
Antes de começar a configurar o Nagios, segue uma tabela dos arquivos de configuração com suas respectivas funções. Caso já tenha conhecimento de tal tabela poderá passar para o capítulo Configurando o Nagios.
Relação dos arquivos de configuração do Nagios
- resource.cfg - Arquivo de Macro, onde você poderá definir variáveis globais.
- checkcommands.cfg - Definição dos comandos que podem ser executados pelo Nagios.
- hosts.cfg - Arquivo de configuração das máquinas e equipamentos da rede.
- hostgroups.cfg - Arquivo contendo informações dos hosts por grupos.
- hostextinfo.cfg - Onde serão definidos as imagens de hosts apresentadas no StatusMap.
- contacts.cfg - Contatos que deverão ser notificados caso ocorra algum problema.
- contactgroups.cfg - Contatos divididos em grupos.
- service.cfg - Serviços que deverão ser monitorados.
- serviceextinfo.cfg - Onde serão definidos as imagens de serviços apresentadas em StatusMap
- dependencies.cfg - Informações de serviços que dependem de outros serviços.
- timeperiods.cfg - Informações sobre o período de monitoramento, podem ser definidos vários períodos de monitoramento diferentes.
- escalations.cfg - Arquivo responsável por criar coordenadas no Status Map.
- minimal.cfg (não usado) - Arquivo Exemplo com configuração mínima basicamente referenciando a máquina local. Não habilite esse arquivo para não ter problemas de comandos duplicados no arquivo nagios.conf.
- misccommands.cfg (não usado) - Esse arquivo traz alguns exemplos de comandos que poderão ser centralizados no arquivo checkcommands.cfg.
- bigger.cfg (não usado) - Arquivo com Alguns Exemplos. Não deverá ser ativado em nagios.conf.
Configurando Nagios
Para que o Nagios possa funcionar corretamente você deverá realizar a configuração nos arquivos nagios.cfg e cgi.cfg.
Configurando o nagios.cfg:
# vi nagios.cfg
Você terá que descomentar as linhas com prefixo cfg_file, que corresponde aos arquivos de configuração que o Nagios irá checar quando o serviço for iniciado (Alguns ainda serão criados). Abaixo as principais linhas que você deverá estar configurando:
log_file=/usr/local/nagios/var/nagios.log
#Só descomente os arquivos CFG que você irá usar na customização.
cfg_file=/usr/local/nagios/etc/checkcommands.cfg
#cfg_file=/usr/local/nagios/etc/misccommands.cfg #Deixar Comentada
#cfg_file=/usr/local/nagios/etc/minimal.cfg #Deixar Comentada
cfg_file=/usr/local/nagios/etc/contactgroups.cfg
cfg_file=/usr/local/nagios/etc/contacts.cfg
#cfg_file=/usr/local/nagios/etc/dependencies.cfg
#cfg_file=/usr/local/nagios/etc/escalations.cfg
cfg_file=/usr/local/nagios/etc/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
cfg_file=/usr/local/nagios/etc/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/hostextinfo.cfg
cfg_file=/usr/local/nagios/etc/serviceextinfo.cfg
resource_file=/usr/local/nagios/etc/resource.cfg
nagios_user=nagios
nagios_group=nagios
Certifique-se que as linhas acima estão corretas em seu arquivo nagios.cfg.
O arquivo cgi.cfg é responsável por determinar permissões de acesso a página de monitoramento do nagios, como também indicar a localização dos arquivos hostextinfo.cfg e serviceextinfo.cfg que são usados para mapeamento de logos e imagens.
Edite o arquivo checando as linhas abaixo:
# vi cgi.cfg
physical_html_path=/usr/local/nagios/share
url_html_path=/nagios
use_authentication=1
default_user_name=ronaldo
authorized_for_system_information=ronaldo
authorized_for_configuration_information=ronaldo
authorized_for_system_commands=ronaldo
authorized_for_all_services=ronaldo
authorized_for_all_hosts=ronaldo
authorized_for_all_service_commands=ronaldo
authorized_for_all_host_commands=ronaldo
default_statusmap_layout=3
xedtemplate_config_file=/usr/local/nagios/etc/hostextinfo.cfg
xedtemplate_config_file=/usr/local/nagios/etc/serviceextinfo.cfg
Configurando períodos de monitorando
No arquivo timeperiods.cfg você poderá criar períodos de monitoramento que posteriormente serão vinculados aos monitoramentos de serviços.
Você poderá determinar períodos por dia e hora. Será criado aqui somente um tipo de período denominado 24x7 definido que a monitoração de serviços nunca irá parar.
# vi timeperiods.cfg
define timeperiod{
timeperiod_name 24x7
alias 24 Horas por dia/7 dias da semana
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
}
OBS: Em todos os arquivos de customização que fizerem referência ao tempo de monitoramento você deverá especificar o 24x7.
Criando comando de notificação
Para que o Nagios possa enviar e-mails notificando caso algum hosts monitorado apresente problemas, você deverá criar um checkcommand no arquivo checkcommands.cfg. Para isso adicione as seguintes linhas no final do arquivo:
# vi checkcommands.cfg
Configurando e Customizando o Nagios para sua Rede
Para começar a configurar os arquivos de monitoramento do Nagios você precisará ter em mãos as necessidades de monitoramento de sua rede.
Todos os arquivos de customização do monitoramento do Nagios serão baseados na figura acima, para facilitar na definição de IPs e Nomes de Máquinas.
Cadastrando Contatos e Grupos de Contatos
Como o Nagios além de monitorar também tem a função de comunicar os administradores se algum serviço ou host apresenta problemas, você precisa cadastrar no arquivo contacts.cfg quem serão as pessoas que poderão receber alertas do Nagios.
OBS: Após cadastrar os contatos, você ainda terá que cadastrá-los em grupos de contatos para que possa associá-los aos serviços que serão monitorados.
Criando um novo Contato:
# vi contacts.cfg
define contact {
contact_name ronaldo
alias Ronaldo Gomes
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notificacao-por-email
host_notification_commands host-notificacao-por-email
email ronaldo.gomes@seu_email.com.br
}
Onde:
- contact_name - Será o nickname ou login do técnico.
- alias - Nome Completo do Técnico.
- service_notification_period - Período em que ele poderá receber notificações de serviços que não esteja funcionando.
- host_notification_period - Período em que ele poderá receber notificações de hosts que estejam com problemas.
- service_notification_options - w,u,c,r.
- host_notification_options - d,u,r.
- service_notification_commands - Comando criado em checkcommands.cfg responsável por enviar uma notificação de serviço para o respectivo técnico.
- host_notification_commands - Comando criado em checkcommands.cfg responsável por enviar uma notificação de host para o respectivo técnico.
- email - E-mail para qual serão enviadas as notificações.
Esse arquivo contacts.cfg poderá conter todos os técnicos que terão acesso ao Nagios para monitoração.
Após cadastrar todos os contatos você deverá inseri-los em grupos de contatos no arquivo contactgroups.cfg. Isso é necessário devido o Nagios realizar as notificações sempre através dos grupos cadastrados.
# vi contactgroups.cfg
define contactgroup {
contactgroup_name tecnicos
alias Técnicos Empresa
members ronaldo
}
Cadastrando as Máquinas da Rede
Para facilitar a configuração de todas as máquinas que serão monitoradas pelo Nagios, você deverá criar um template para todos os hosts da seguinte maneira:
# vi hosts.cfg
define host{
name host-padrao
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
}
Perceba que não foi definido IP para o host-padrao justamente porque ele será um modelo para os demais, assim você não precisará editar as linhas em todas as máquinas a serem adicionadas no arquivo.
O arquivo abaixo terá a lista de máquinas da Figura 1.0:
define host{
use host-padrao
host_name host-linux-firewall
alias Servidor Firewall
address 172.16.32.1
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
define host{
use host-padrao
host_name host-linux-dns
alias Servidor DNS Interno
address 172.16.32.2
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
define host{
use host-padrao
host_name host-linux-mta
alias Servidor MTA
address 172.16.32.3
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
define host{
use host-padrao
host_name host-linux-web
alias Servidor Web
address 172.16.32.4
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
define host{
use host-padrao
host_name host-linux-nagios
alias Servidor de Monitoramento-Nagios
address 172.16.32.100
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
define host{
use host-padrao
host_name host-win-web
alias Servidor Web (IIS)
address 172.16.32.5
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
contact_groups tecnicos
}
Após cadastrar todas as máquinas que serão monitoradas você deverá associá-las em grupos, como por exemplo: servidores, desktops, roteadores. Para isso edite o arquivo hostgroups.cfg.
# vi hostgroups.cfg
define hostgroup{
hostgroup_name Roteador
alias Máquinas Gateways
members host-linux-firewall
}
define hostgroup{
hostgroup_name Servidores Linux
alias Servidores Empresa
members host-linux-dns,host-linux-mta,
host-linux-web,host-linux-nagios
}
define hostgroup{
hostgroup_name Servidores Windows
alias Servidores Empresa
members host-win-web
}
Configurando os serviços nas Máquinas
Com todas as máquinas cadastradas em seus respectivos grupos você poderá configurar os serviços de acordo com os plugins já instalados.
Para visualizar uma lista de plugins disponíveis execute o comando abaixo:
# ls /usr/local/nagios/libexec/ | grep ^check | cut -d"_" -f2
Cada plugin deverá ser associado a um comando no arquivo checkcommands.cfg para que você possa usá-los. Antes de cadastrar um serviço certifique-se de que o comandos já existem no arquivo checkcommands.cfg.
Da mesma forma que criamos um modelo de hosts em hosts.cfg é recomendado que você crie um modelo de serviços para minimizar linhas repetidas.
# vi services.cfg
# Template de Serviços
define service{
name service-padrao
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
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
}
O primeiro serviço a ser cadastrado no arquivo, será o PING para realizar a checagem de máquinas ativas. Nesse serviço você poderá cadastrar todas as máquinas do hosts.cfg basta indicar em host_name o * (all):
# vi services.cfg
# Checando se todas as máquinas estão ativas.
# PING Protocolo ICMP)
define service{
use service-padrao
host_name *
service_description Host Ativo
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 120
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
Exemplos de Monitoramentos de Serviços:
Importante: Você só poderá criar um serviço para hosts já cadastrados.
- Monitorando o Servidor Nagios (Máquina Local):
Serviços:
* Checar Espaço em Disco
* Checar Quantidade de Usuários Logados.
* Checar Quantidade de Processos
# vi services.cfg
##### Monitoramento Servidor Nagios - LocalHost #######
# Monitorando Espaço em Disco
define service{
use service-padrao
host_name host-linux-nagios
service_description Tamanho em Disco
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_disk!20%!10%!/
}
# Monitorando Quantidade de Usuários Logados
define service{
use service-padrao
host_name host-linux-nagios
service_description Usuarios Logados
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_users!20!50
}
# Monitorando quantidade de Processos Ativos
define service{
use service-generic
host_name host-linux-nagios
service_description Processos Ativos
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_local_procs!250!400
}
- Monitorando o Serviço Apache:
# vi service.cfg
####### Monitorando Serviços da Rede #########
# Serviço HTTP (Protocolo TCP, Porta 80)
define service{
use service-padrao
host_name host-linux-web,host-win-web
service_description Servidor HTTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_http
}
- Monitorando o Serviço DNS:
# vi service.cfg
# Serviço NAMED (Protocolo UDP, Porta 53)
define service{
use service-padrao
host_name host-linux-dns
service_description Servidor DNS
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_dns
}
- Monitorando o Serviço MTA:
Serviços:
* Pop, Imap e Smtp
# vi service.cfg
# Serviço SMTP (Porta 25)
define service{
use service-padrao
host_name host-linux-mta
service_description Servidor SMTP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_smtp
}
# Serviço POP (Porta 110)
define service{
use service-padrao
host_name host-linux-mta
service_description Servidor POP3
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_pop
}
# Serviço IMAP (Porta 143)
define service{
use service-padrao
host_name host-linux-mta
service_description Servidor IMAP
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups tecnicos
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_imap
}
Lembrete: O monitoramento dos serviços só funcionará corretamente se os "check_command" já estiverem cadastrados no arquivo checkcommands.cfg.
Criando ícones para os Hosts
Para que a visualização via browser do monitoramento do Nagios inclua imagens indicando o sistema operacional das máquinas, você precisará manualmente criar o link no arquivo hostextinfo.cfg.
Faça o download do imagepak-base.tar.gz disponível no site oficial do Nagios (www.nagios.org) e descompacte o pacote em /usr/local/nagios/share/images/logos/.
# tar -xvzf imagepak-base.tar.gz
# cd /usr/local/nagios/images/logos
# mv base/* .
# rm -rf base/ (Esta pasta deverá estar vazia)
# chown nagios:nagios /usr/local/nagios/images/logos -R
Com as imagens disponíveis basta criar o arquivo hostextinfo.cfg. Para cada imagem você deverá primeiro criar um template, assim manterá o arquivo organizado.
# vi hostextinfo.cfg
define hostextinfo{
name linux-template
icon_image linux40.png
icon_image_alt SO Linux
vrml_image linux40.png
gd2_image linux40.gd2
register 0
}
define hostextinfo{
name windows-template
icon_image win40.png
icon_image_alt SO Windows
vrml_image win40.png
gd2_image win40.gd2
register 0
}
define hostextinfo{
use linux-template
host_name host-linux-firewall,host-linux-dns,host-linux-mta
2d_coords 65,425
3d_coords 3.0,0.0,0.0
}
define hostextinfo{
use windows-template
host_name host-win-web
2d_coords 65,425
3d_coords 3.0,0.0,0.0
}
Criando ícones para os Serviços
Você poderá criar ícones para os serviços que estão sendo monitorados pelo Nagios editando o arquivo serviceextinfo.cfg:
# vi serviceextinfo.cfg
define serviceextinfo {
host_name host-win-web,host-linux-web
service_description Servidor HTTP
notes_url www.apache.org
icon_image world.gif
icon_image_alt web
}
Importante: Os campos host_name e service_description são obrigatórios, e deverão ser preenchidos de acordo com o arquivo service.cfg.
OBS: Todas as imagens definidas nos arquivos hostextinfo.cfg e serviceextinfo.cfg deverão existir em /usr/local/nagios/share/images/logos.
Testando as Configurações
Ao término das configurações é importante checar se as mesmas foram realizadas com sucesso antes de iniciar o serviço. Para isso execute:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
.
.
.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
O comandos acima irão checar todos os arquivos ".cfg" que estão definidos em nagios.cfg totalizando a quantidade de erros que ele encontrou. Você só deverá seguir adiante caso seus erros e warnings estejam "zerados".
Inicie o serviço e acesse um browser para verificar se as configurações foram realizadas com sucesso.
# /etc/init.d/nagios start
Adicionando um Tema para o Nagios
Já que estamos falando em ícones para uma visualização mais amigável no monitoramento da rede no site
www.nagiosexchange.org/ temos um tema nuvola para todas as páginas web do Nagios.
Aplicando o tema nuvola:
- Faça backup dos html originais:
# cd /usr/local/nagios/share
# mkdir backup-tema-original
# mv side.html main.html index.html backup-tema-original
# mv images/ stylesheets/ backup-tema-original/
- Descompacte o tema nuvola:
# tar -xvzf nagios-nuvola-1.0.3.tar.gz -C /usr/local/nagios/share/
- Será criado um diretório html com todos os arquivos que você deverá copiar para /usr/local/nagios/share.
# cd /usr/local/nagios/share/html
# cp -a * ../
# chown nagios:nagios /usr/local/nagios/share -R
- Copie novamente os logos do pacote imagepak para o diretório de logos:
# cd /usr/local/nagios/share
# cp -a backup-tema-original/images/logos/* images/logos/
OBS: Não sobrescreva as imagens que já existem!