Tutorial Nagios – O que é, Como funciona

O que é o Nagios?


Nagios é um sistema de monitoração das aplicações de rede. Ele vigia hosts e serviços que você especificar, alertando quando o serviço ou host ficar em “down” e também quando os mesmos ficarem em “up”. Uma ação pró-ativa.

Nagios

Está ferramenta é a evolução do NetSaint. Mesmo o site do NetSaint estando ainda no ar, todos os novos desenvolvimentos serão feitos para o Nagios.

Lista de características do Nagios:

– Monitoração de serviços de rede como HTTP, SMTP, SSH, Telnet, etc. – Monitoração dos recursos dos servidores, como espaço em disco. – Notificações de falhas por e-mail, pager, etc, em tempo real. – Interface Web informativa, que podemos identificar de maneira fácil os problemas.

Nagios roda no Unix e seus variantes, opcionalmente requer um servidor web to ser instalado (para a interface web de monitoração)

Instalação e Configuração do Nagios
1° – Faça o download do último pacote do Nagios e o último pacote dos Plugins, para um diretório temporário. Nesse tutorial usaremos /tmp/nagios.

root@nagios:/tmp/nagios# ls
nagios-1.0b6.tar.gz nagiosplug-1.3.0-beta3.tar.gz
Primeiro nós iremos instalar o gerenciador de aplicações Nagios. Vamos descomprimir o arquivo tar.gz

root@nagios:/tmp/nagios# tar xvzf nagios-1.0b6.tar.gz
Depois de descomprimido o arquivo tar.gz, iremos para o diretório nagios-1.0b6.

root@nagios:/tmp/nagios# cd nagios-1.0b6
root@nagios:/tmp/nagios/nagios-1.0b6#
Agora precisamos decidir a onde iremos instalar o nosso sistema. Você pode instalar o Nagios em qualquer lugar, mas o melhor é instalar na localização padrão (/usr/local/nagios), porque a documentação original sempre se refere para ele. Dessa forma será fácil resolver problemas que possam acontecer.

Crie o diretório a onde você gostaria de instalar o Nagios.

root@nagios:/tmp/nagios/nagios-1.0b6# mkdir /usr/local/nagios
Neste ponto, precisamos criar um usuário e grupo que o Nagios irá usar para carregar o serviço. Você pode usar o “root” para isto, mas não é recomendado como segurança. Em geral para uma fácil manutenção, decidi dedicar um novo usuário e grupo para essa função. O usuário e grupo terão o nome de “nagios”.

root@nagios:/tmp/nagios/nagios-1.0b6# useradd nagios
root@nagios:/tmp/nagios/nagios-1.0b6# groupadd nagios
Uma vez criado o usuário e o grupo, nos podemos iniciar o processo de instalação. Primeiro precisamos especificar alguns parâmetros e criar o Makefile que será usado para compilar e instalar o software.

root@nagios:/tmp/nagios/nagios-1.0b6# ./configure –prefix=/usr/local/nagios –with-cgiurl=/nagios/cgi-bin –with-htmurl=/nagios/ –with-nagios-user=nagios –with-nagios-grp=nagios
Geralmente quando instalamos o Nagios no diretório padrão (/usr/local/nagios) não precisamos utilizar todos os parâmetros acima, mas é sempre bom direcionar para o lugar correto.

Uma vez a configuração completa, irá aparecer um sumário de todos os parâmetros que foram usados durante a configuração. Tenha certeza que tudo está OK, senão execute o “configure” novamente com as opções corretas.

Existe também uma alta probabilidade de aparecer um aviso que a biblioteca GD está faltando. Consulte o site da Boutell (http://www.boutell.com/) para instalar essa biblioteca, e execute o “configure” novamente com a opção –with-gd-lib e –with-gd-inc para especificar o exato diretório da biblioteca GD. Caso não funcione não se preocupe, o Nagios funcionará mesmo sem essa biblioteca. Essa biblioteca é somente usada em alguns CGI´s que criam imagens dinâmicas para a estatística de serviço. A aplicação é ainda muito útil sem estes gráficos.

Agora iremos compilar o software. Usaremos as seguintes opções (se você não estiver logado com o root, se logue agora).

root@nagios:/tmp/nagios/nagios-1.0b6# make all
Se durante o longo processo de compilação não acontecer nenhum erro, receberemos a mensagem “Compile Finished” no final da compilação.

Iremos executar três comandos para instalar vários componentes nos seus devidos lugares. Primeiro iremos instalar o programa principal, arquivos e diretórios no /usr/local/nagios.

root@nagios:/tmp/nagios/nagios-1.0b6# make install
Vamos agora instalar o script de inicialização para que o Nagios seja carregado automaticamente durante o boot.

Esse script permite também que utilizemos a opção start, stop, restart e reload. Exemplo: service nagios start

root@nagios:/tmp/nagios/nagios-1.0b6# make install-init
No meu sistema (Red Hat 8.0) eu coloquei o script no diretório /etc/rc.d/init.d

Se você der uma olhada dentro do diretório /usr/local/nagios você verá que existem quatro diretórios.

root@nagios:/tmp/nagios/nagios-1.0b6# ls /usr/local/nagios
bin sbin share var
O diretório bin contém um simples arquivo chamado nagios, que é o centro dos pacotes. Este aplicação não é atualmente monitorada. O diretório sbin contém o CGI script que será usado na interface web. Dentro do diretório share você encontrará o HTML a documentação. E finalmente o diretório var é onde o Nagios armazenará informações quando iniciado.

Em geral para você habilitar o uso do Nagios, você precisa de um conjunto de arquivos de configuração. Estes arquivos estão dentro do diretório etc no qual será criado quando você executar o seguinte comando.

root@nagios:/tmp/nagios/nagios-1.0b6# make install-config

Instalação dos Plugins


Nesse ponto a instalação do Nagios está completa, mas ele não está com suas totais funções, falta a monitoração das aplicações. Esta função é responsável por checar se um particular serviço está funcionando. Para habilitarmos essa função é necessário instalar os Plugins separadamente. Faça o download da última versão dos Plugins no site do Nagios www.nagios.org.

Depois do download, faça a descompactação do arquivo e entre no diretório criado pelo comando “tar”.

root@nagios:/tmp/nagios/nagiosplug-1.3-beta3# ./configure –prefix=/usr/local/nagios –with-nagios-user=nagios –with-nagios-group=nagios
Você talvez notificações sobre a perda de problemas ou módulos Per enquanto esteja executando o configure.

Não tem problema, a menos que você especifique uma aplicação que necessite desses módulos.

Uma vez terminado a configuração, compile todos os Plugins.

root@nagios:/tmp/nagios/nagiosplug-1.3-beta3# make all
Se nenhum erro for reportado, você pode instalar os Plugins.

root@nagios:/tmp/nagios/nagiosplug-1.3-beta3# make install
Os Plugins serão instalados no diretório “ibexec” dentro do diretório do Nagios /usr/local/nagios/libexec.

Entre nesse diretório, depois execute ./check_ssh -h para saber como o “check_ssh” trabalha.

Usando esses comandos você pode rodar manualmente a checagem de qualquer serviço, mas iremos automatizar o nosso processo.

Por exemplo: root@nagios:/usr/local/nagios/libexec# ./check_ssh 200.146.2.1 (IP ilustrativo)
SSH ok – protocol version 1.99 – server version

Configuração do Nagios
Depois da instalação do Nagios e dos Plugins nós estamos quase prontos para iniciar a monitoração dos nossos servidores, mas antes precisamos configurar alguns arquivos.

root@nagios:/tmp/nagios/nagiosplug-1.3-beta3# cd /usr/local/nagios/etc
root@nagios:/usr/local/nagios/etc# ls
O comando “ls” irá mostrar todos os arquivos *.cfg-sample, precisamos renomear esses arquivos para *.cfg

Criem um diretório “sample” e copie todos os arquivos *.cfg-sample para esse diretório, uma cópia de segurança, em seguida renomeie todos os arquivos *.cfg-sample para *.cfg

Como a nossa configuração é simples e não iremos entrar em maiores detalhes, apague os arquivos “dependencies.cfg e escalation.cfg” e iremos criar dois arquivos em branco para substituir os mesmos.

root@nagios:/usr/local/nagios/etc# touch dependencies.cfg
root@nagios:/usr/local/nagios/etc# touch escalations.cfg
Conteúdo do arquivo hosts.cfg

No arquivo hosts.cfg devemos colocar os servidores que desejamos monitorar. Edite o arquivo hosts.cfg com o seu editor preferido.

Exemplo:

root@nagios:/usr/local/nagios/etc# vi hosts.cfg
# ‘servidor1′ host definition
define host{
use generic-host ; Name of host template to use
host_name 9; servidor1
alias 9; Web Server #1
address 192.168.0.1
check_command check-host-alive
max_check_attempts 5
notification_interval 1
notification_period 24×7
notification_options d,u,r
}
Para cada “host” você irá criar um conjunto das linhas acima, identificando o “hostname” do servidor e o “IP address”

Conteúdo do arquivo “hostgroup.cfg”

Edite o arquivo hostgroup.cfg, uso o seu editor preferido.

Exemplo:

root@nagios:/usr/local/nagios/etc# vi hostgroup.cfg
# ‘email-servers’ host group definition
define hostgroup{
hostgroup_name http-servers
alias 9; Web Servers
contact_groups http-admins
members servidor1, servidor2
}
Agora necessitamos adicionar os hosts para o hostgroup usando o arquivo acima.

Acima nós definimos um novo “hostgroup” e associamos o “http-admins” grupo de contato para ele. Agora iremos ver o arquivo “contactgroup.

Conteúdo do arquivo “contactgroup.cfg”

# ‘http-admins’ contact group definition
define contactgroup{
contactgroup_name http-admins
alias 9; Web Administrators
members User,leonardo
}
Nós definimos o grupo de contato “http-admins” e adicionamos dois members “jose” e “leonardo” para este grupo. Estas configurações asseguram que ambos os usuários serão notificados quando alguma coisa errada acontecer com os servidores que as pessoas do grupo “http-admins” são responsáveis.

A próxima etapa será configurarmos as informações dos contatos e notificações para estes usuários.

Conteúdo do arquivo “contacts.cfg”

# ‘User’ contact definition
define contact{
contact_name User
alias 9; User Rebello
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email 9; User@nssecurity.com.br
}

# ‘leonardo’ contact definition
define contact{
contact_name leonardo
alias 9; Leonardo
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email 9; leonardo@nssecurity.com.br
}
Para criarmos os detalhes dos usuários o arquivo é o contacts.cfg, conforme exemplo acima.

Depois de criado os hosts, grupo dos hosts, contatos e grupos dos contatos, iremos identificar qual o serviço que queremos gerenciar em cada host.

No exemplo abaixo, estamos habilitando o gerenciamento através do PING, para saber se o servidor está no ar, e do serviço HTTP para sabermos se o serviço Web está funcionando corretamente.

Conteúdo do arquivo “services.cfg”

# Service definition
define service{
use generic-service ; Name of service template to use
host_name 9; servidor1
service_description HTTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
contact_groups http-admins
notification_interval 2
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}

# Service definition
define service{
use generic-service ; Name of service template to use
host_name 9; servidor1
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 5
normal_check_interval 1
retry_check_interval 1
contact_groups http-admins
notification_interval 2
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}

Agora que terminamos a configuração dos hosts, contatos e serviços, podemos iniciar o serviço do Nagios para iniciarmos a monitoração dos nossos servidores.

Por experiência própria com o Red Hat 8.0, carregue o serviço com a opção “reload” e não “start”. Ainda não sei porque, mas a opção “start” quando carregada a primeira vez acontece alguns erros que não permiti carregar o serviço.

Interface Web
Bem, embora o Nagios esteja iniciado e monitorando os nossos servidores e enviando notificações por e-mail (O seu MTA deverá estar configurado corretamente para enviar mensagens) quando ocorrer algum problema, é muito válido configurarmos a interface web para uma melhor interação com essa monitoração.

Para isso precisamos ter um Web Server instalado na máquina que o Nagios esteja instalado. O nosso exemplo será utilizando o Apache, pois é um dos mais utilizados Web Servers no mundo inteiro.

Arquivo /etc/httpd/conf/httpd.conf

Adicione as linhas abaixo no final do seu arquivo httpd.conf

ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin
AllowOverride AuthConfig
Options ExecCGI
Order allow,deny
Allow from all
Alias /nagios/ /usr/local/nagios/share/
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
Está configuração cria um alias “/nagios/cgi-bin/” e direciona ele para um script CGI no diretório “sbin” do Nagios. Dessa forma podemos carregar a interface web do Nagios, assumindo que a página principal do seu web server está em http://localhost, digitando no nosso browser http://localhost/nagios.

Mas ainda não carrega a página do Nagios, pois ainda não criamos os usuários que podem acessa-lo.

Crie um arquivo “.htaccess” no diretório “/usr/local/nagios/sbin” com o seguinte conteúdo:

AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
Não esqueça de criar o arquivo com atributo de oculto, com um “ponto” antes do nome do arquivo.

Agora precisamos criar os usuários e as suas respectivas senhas, execute o seguinte comando:

htpasswd –c /usr/local/nagios/etc/htpasswd.user User
New password: *****
Re-type new password: *****
Adding password for user jose

Para criar outros usuários você não deve utilizar o parâmetro “-c”, pois ele é utilizado para criar o arquivo htpasswd.user se o mesmo não existir. Se você utilizar o parâmetro “-c” e o arquivo já existir, o mesmo será substituido.

Ótimo, agora você poderá entrar na interface web do Nagios para monitorar online todos os serviços dos seus servidores.

Uma dica muito importante, todos os acessos aos scripts CGI, são controlados pelo arquivo “/usr/local/nagios/etc/cgi.cfg”. Lá você determina o que cada usuário pode acessar.

Pronto o seu software de monitoração de hosts e serviços está funcionando, para controle de mais serviços, aconselho você entrar no diretório “/usr/local/nagios/libexec” e testar os scripts (./check_ftp -h).

Site Oficial Nagios – http://www.nagios.org

Site Oficial NetSaint – http://www.netsaint.org

Nagios Plugins – http://nagiosplug.sourceforge.net

Abraços,
Ranieri Marinho de Souza
Segurança da Informação