Você está na página 1de 19

Implementação da ferramenta NAGIOS em uma rede corporativa de uma instituição

financeira.

Eider Jackson Conzatti

Curso de Especialização em Redes e Segurança de Sistemas

Pontifícia Universidade Católica do Paraná

Curitiba, Novembro de 2010

Resumo

O presente artigo trata da implementação de uma ferramenta de gerencia de redes para


monitorar a disponibilidades de link´s, servidores, hosts e serviços na Cooperativa de
Crédito de Livre Admissão de Associados do Planalto Catarinense SICOOB/SC
CREDIPLANALTO, que nos últimos anos teve um expressivo aumento no número de filiais,
soluções de segurança e serviços prestados aos clientes. O risco operacional e de imagem
motivaram a realização desse estudo para monitorar e fornecer alertas dos eventos
gerados pela indisponibilidade dos itens monitorados. Este artigo está divido em duas
partes, a primeira descreve o cenário, e a segunda a implementação as principais
configurações utilizadas.
1 – Introdução

A Cooperativa de Crédito de Livre Admissão de Associados do Planalto


Catarinense SICOOB/SC CREDIPLANALTO, atualmente com sete unidades, distribuídas
nos seguintes municípios: matriz em Papanduva/SC a sua topologia de rede está
demonstrada na figura 01.

Figura 1: Topologia da Matriz da Crediplanalto.

Uma filial em Mafra/SC, uma filial em Santa Cecília/SC quem tem as topologias
demonstradas na figura 02.
Figura 2: Topologia das filiais de Mafra/SC e Santa Cecília/SC

Duas filiais em Santa Terezinha, uma filial em Monte Castelo/SC e uma filial em
Major Vieira/SC, a figura 03 demonstra a topologia dessas quatro filiais.

Figura 3: Topologia das filiais de Santa Terezinha/SC, Monte Castelo/SC e Major


Vieira/SC.
Esse numero de filiais motivaram a necessidade de monitoramento constante sobre
links ADSL, Links MPLS e serviços essenciais para a rede da empresa (serviço e
autenticação de diretório, banco de dados, e-mail, dhcp, dns, http, antivírus). Além dos links
e serviços, serão monitorados os hosts responsáveis pela VPN mantida entre a matriz e
filiais, os servidores e serviços do circuito fechado de TV e os hosts e serviços que mantém
os terminais de auto-atendimento funcionando que atendem das 06:00 hrs até as 22:00 hrs.
Os serviços e hosts descritos nesse projeto foram selecionados como essenciais para
a cooperativa, pois a indisponibilidade de algum(uns) pode trazer sérios prejuízos
financeiros e prejudicar a imagem da Crediplanalto. Atualmente o departamento de
tecnologia da informação age de forma reativa, sendo acionado por algum colaborador ou
cliente externo que reclama de algum serviço ou host que não está funcionando. Existem
serviços que necessitam estar em pleno funcionamento durante 24 horas por dia, um
exemplo são os servidores e serviços do circuito fechado de TV.

2 - Implementação

2.1 - Escolha do sistema operacional

Por questões de familiaridade, foi escolhido o sistema operacional Fedora


GNU/Linux versão 13 executando em ambiente virtualizado pelo software: Oracle VM
Virtual Box na versão 3.2.8 r64453.

2.2 - Software de monitoramento

O custo de licenciamento, implementação e manutenção de ferramentas


proprietárias me levou e optar por uma solução open source. Após pesquisas, optei por
utilizar o Nagios na versão 3.0. Além dos custos, o que foi levado em consideração, é que a
cooperativa não ficará presa a uma solução de determinada empresa, pois além de ser open
source existe uma grande comunidade na internet interessada em estudar e contribuir para o
desenvolvimento do Nagios.

A ferramenta Nagios é uma popular aplicação de monitoração e gerencia de rede de


código aberto distribuída sob a licença GPL. Ele pode monitorar tanto hosts quanto serviços
em sistemas UNIX/Linux e Windows, alertando o administrador quando ocorrerem
problemas em serviços e ativos de rede e também quando os problemas forem resolvidos.
Originalmente escrito sob o nome NetSaint, o Nagios foi criado e ainda mantido por Ethan
Galstad e sua equipe de mais de 150 desenvolvedores espalhados por todo mundo. Este
software de monitoramento utiliza duas formas de gerenciamento [12]:

• Com agente: Um programa instalado em um ativo de rede envia os dados para o


gerente (servidor do Nagios) processar, demonstrado na figura 4

Servidor Nagios/ Servidor Gerenciado


Gerente Agente Instaldo

Nagios Disco

M Memória
I
B
S Processos

I/O

Plugin Plugin
ETC

Nscliente ou Nrpe

Figura 4: Nagios – Gerencia com agente

• Sem agente, onde os serviços disponíveis são testados remotamente, esse modelo
está ilustrado na figura 5.
Servidor Nagios/ Servidor Gerenciado
Gerente Sem Agente Instaldo

Nagios
Serviços de Rede

FTP HTTP

POP DNS

PING ETC
Plugin

Figura 5: Nagios – Gerencia sem agente

2.3 Pré-Requisitos

Para iniciar a instalação do Nagios é necessária a instalação dos softwares: Apache,


PHP, compilador GCC e GD development libraries.

2.4 - Instalação e configuração do Nagios.

Por escolha própria, resolvi baixar os pacotes e compilar manualmente a instalação


do Nagios, com isso aprendi a utilizar o comando make, que até então eu desconhecia. Na
sequencia segue os passos da instalação:
Primeiramente foi criado um diretório temporário para baixar e descompactar os
pacotes:
[root @ nhambu eider] # mkdir /tmp/nagios

Na sequência foram baixados dois pacotes: nagios-3.07b.tar.gz e nagios-plugis-1.4.3.tar.gz,


disponíveis em http://sourceforge.net/projects/nagios/files/nagios-2.x/ e
http://sourceforge.net/projects/nagiosplug/files/ respectivamente.

O primeiro passo será instalar a aplicação do Nagios, descompactar o arquivo .tar.gz

[root @ nhambu eider] # cd /tmp/nagios


[root @ nhambu eider] # tar xvzf nagios-3.07b.tar.gz
Depois de descompactado o arquivo nagios-3.07b.tar.gz, acessaremos o diretório nagios3-
.07b
[root @ nhambu eider] # cd nagios-3.07b

De acordo com a recomendação da documentação a instalação será no diretório


/usr/local/nagios

[root @ nhambu eider] # mkdir /usr/local/nagios

Nesse ponto será criado um usuário e um grupo denominado nagios que serão utilizados
para carregar o serviço.

[root @ nhambu eider] # usradd nagios


[root @ nhambu eider] # groupadd nagios

Agora serão especificados alguns parâmetros, em seguida será criado o make file que será
utilizado para compilar e instalar o software.
[root @ nhambu eider] # ./configure --prefix=/usr/local/nagios --withcgiurl=/nagios/cgi-bin
--with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-grp=nagios
[root @ nhambu eider] # make all
[root @ nhambu eider] # make install
[root @ nhambu eider] # make install-init
[root @ nhambu eider] # make install-config

Agora a aplicação do Nagios está instalada, em seguida instalaremos os plugins para que o
nagios carregue as funções que serão utilizadas nesse projeto.
[root @ nhambu eider] # cd /tmp/nagios/
[root @ nhambu eider] # tar xvzf nagios-plugis-1.4.3.tar.gz
[root @ nhambu eider] # cd nagios-plugis-1.4.3

Após acessar o diretório com o conteúdo do pacote de plugins que foi descompactado,
iremos compilá-lo e instalá-lo.
[root @ nhambu eider] # ./configure --prefix=/usr/local/nagios --with-nagiosuser=nagios --
with-nagios-group=nagios
root @ nhambu eider] # make all
root @ nhambu eider] # make install

Para que possamos acessar o nagios pela interface web devermos configurar o Web Server
Apache para que nos permita tal acesso.
root @ nhambu eider] # vi /etc/httpd/conf/httpd.conf
Adicione essas linhas no final do arquivo

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
</Directory>

Agora vamos criar um arquivo para permitir o acesso a pasta /sbin onde estão os scripts
CGI do nagios.

root @ nhambu eider] # vi / usr/local/nagios/sbin/.htaccess

Adicionar essas linhas no arquivo:

AuthName "Nagios Access"


AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user

Agora será criado o usuário que poderá acessar a interface web de gerenciamento do nagios,
optei por criar um usuário padrão recomendado na documentação, denominado
nagiosamdin, esse usuário já tem as devidas permissões no arquivo CGI.cfg, que controla o
acesso aos scripts CGI.

[root @ nhambu eider] # htpasswd -c /usr/local/nagios/etc/htpasswd.user nagiosadmin


root @ nhambu eider] # New password: *****
Re-type new password: *****
Adding password for user nagiosadmin

Antes de executar o Nagios coloque o SELinux em modo permissivo


root @ nhambu eider] # setenforce 0

Agora inicie o serviço do Nagios

[root @ nhambu eider] # service nagios start


Starting nagios: done

Cheque o status do Nagios


[root @ nhambu eider] # service nagios status
Nagios (pid XXXXX) is running…

Pronto o serviço do nagios está ativo na maquina.

2.5 - Acessar a interface web do nagios.

Para acessar a interface web do nagios demonstrada na figura 7, digite no seu browser o
seguinte: HTTP://<Endereço ip do servidor nagios>/nagios, será solicitado o usuário e a
senha cadastrados no arquivo htaccess, conforme mostra a figura a figura 6.

Figura 6: Autenticação para acessar a interface web de gerenciamento do Nagios


Figura 7: Página inicial da interface web de gerencimaneto do Nagios.

2.6 - Arquivos de configuração do Nagios.

Para que o Nagios esteja funcionando perfeitamente é necessária a configuração de


alguns arquivos, na tabela 1 é relacionado e descrito o significado dos arquivos e o
utilizados nesse projeto.

/usr/local/nagios/etc/nagios.cfg Inicia os serviços de monitoramento


/usr/local/nagios/etc/cgi.cfg Configurações e permissões dos
Programas CGI
/usr/local/nagios/etc/hosts.cfg Cadastro e informações dos hosts.
/usr/local/nagios/etc/hostgrioup,cfg Cadastro dos grupos que os hosts farão
parte
/usr/local/nagios/etc/objects/contacts.cfg Cadastro e informações dos contatos
que receberão as notificações enviadas
pelo Nagios.
/usr/local/nagios/etc/objects/contactsgroups.cfg Cadastro dos grupos de contatos
/usr/local/nagios/etc/services.cfg Cadastro e informações dos serviços
que serão monitorados
/usr/local/nagios/etc/objects/hostextinfo.cfg Definição das imagens que
representarão cada host.
Tabela 1: Nome e descrição dos arquivos de configuração utilizados nesse projeto.

Em seguida serão apresentados os arquivos de configuração utilizados nesse projeto, será


demonstrado apenas um exemplo em cada arquivo para não se tornar muito extenso:

Para cadastrar os hosts deverá ser editado o arquivo hosts.cfg

[root @ nhambu eider] # vi /usr/local/nagios/etc/hosts.cfg


define host{
use generic-host #Template utilizado
host_name PAC00_CFTV #Nome do host para exibir
alias CFTV PAPANDUVA #Nome para exibição
address 10.22.42.18 #Endereço IP do host
check_command check-host-alive # Checa se o host esta ligado
notification_period 24x7 #Periodo das notificações
notification_options d,u,r #Opções de notificações
contact_groups admins #Grupo que será notificado.
}

Após isso, o host deverá ser adicionado a um grupo, editar o arquivos hostgroups.cfg

[root @ nhambu eider] # vi /usr/local/nagios/etc/hostsgroups.cfg

define hostgroup{
hostgroup_name GRUPO_CFTV
alias Maquinas Servidoras do CFTV
members
PAC00_CFTV,PAC02_CFTV,PAC03_CFTV,PAC04_CFTV,PAC05_CFTV,PAC06_CFT
V,MTECASTELO_CFTV
}

Para personalizar a exibição da imagem de um host, deverá editado o arquivo


hostextinfo.cfg. As imagens que serão utilizadas, deverão ser salvas na pasta
/usr/local/nagios/share/images/logos.

[root @ nhambu eider] # vi /usr/local/nagios/etc/hostextinfo.cfg

define hostextinfo {
host_name
PAC00_CFTV,PAC02_CFTV,PAC03_CFTV,PAC04_CFTV,PAC_CFTV,PAC06_CFTV,
MTECASTELO_CFTV
icon_image ImgCftv.gif
vrml_image ImgCftv.gif
}

Em seguida deverá ser criado o(s) contato(s) que receberão as notificações do Nagios, para
isso edite o arquivo contacts.cfg:

[root @ nhambu eider] # vi /usr/local/nagios/etc/contacts.cfg


define contact {
contact_name eider
use generic-contact
alias Eider Jackson Conzatii
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email eider@crediplanalto.com.br
}

Em seguida será criado o(s) grupo(s) que irão conter os contatos, cadastrados no arquivo
contacts.cfg

[root @ nhambu eider] # vi /usr/local/nagios/etc/contactsgroups.cfg

define contactgroup{
contactgroup_name admins
alias Nagios Administradores
members eider
}

Após alterar os arquivos de configuração, é necessário verificar se as alterações estão


corretas, com os comandos:

[root @ nhambu eider] # cd /usr/local/nagios/Bin


[root @ nhambu eider] # ./nagios –v /usr/local/nagios/etc/nagios.cfg

Após esses comandos será apresentado o resultado da verificação das configurações, se


aparecer a mensagem “Things look okay”, significa que todas as configurações estão
corretas, após isso o serviço Nagios deverá ser reiniciado, através do comando:

[root @ nhambu eider] # service nagios reload


Running configuration check...done.
Running nagios configurations…done.

Para que o nagios envie alertas por e-mail foi instalado e configurado o software ssmtp,
conforme demonstrado com os comandos abaixo:

[root @ nhambu eider] # yum install ssmtp

Após a conclusão da instalação, edite o arquivo ssmtp.conf


[root @ nhambu eider] # vi /etc/ssmtp/ssmtp.conf

Adicione as seguintes linhas nesse arquivo:

mailhub=10.22.42.1:25 # Servidor de e-mail com opção de relay habilitada


AuthUser=nagios@crediplanalto.com.br
AuthPass=**********************
UseSTARTTLS=YES
FromLineOverride=YES
hostname=localhost
rewriteDomain=crediplanalto.com.br
AuthMetod=plain
FromLineOverride=NO

A imagem 8 mostra um exemplo de e-mail enviado pelo nagios, notificando que um


determinado host estava off-line, essa mensagem pode ser persoanlizada no arquivo de
configuração: /usr/local/nagios/etc/objects/commands.cfg

** PROBLEM Host Alert: MTECASTELO_LINK_EXT is DOWN **


nagios@crediplanalto.com.br
Para: Eider J. Conzatti

Cc:

***** Nagios *****

Notification Type: PROBLEM


Host: MTECASTELO_LINK_EXT
State: DOWN
Address: 187.7.0.78
Info: CRITICAL - Host Unreachable (187.7.0.78)
Date/Time: Wed Sept 22 18:39:57 EDT 2010
Figura 8: Modelo de e-mail disparado pelo Nagios e enviado pelo ssmtp.

2.7 Interface WEB

A interface WEB disponibiliza várias funcionalidades, inclusive telas que


demonstram o status dos hosts e dos serviços configurados anteriormente. A figura 9 traz a
tela onde são listados todos os hosts cadastrados no arquivos hosts.cfg, juntamente com os
ícones personalizados definidos no arquivo hostextinfo.cfg
Figura 9: Tela da visualização dos hosts cadastrados no arquivo hosts.cfg

Além dos hosts, também poderemos verificar se os serviços cadastrados no arquivos


services.cfg estão OK, conforme demonstrado no figura 5.

Figura 10: Tela que demonstra os status dos serviços cadastrados no arquivo service.cfg

Com base no arquivo hostgroups.cfg é possível verificar os hosts separados por grupos,
conforme demonstrado na figura 11.
Figura 11: Grupos de hosts cadastrados no arquivos hostgroup.cfg

2.8 – Utilizando o agente NsClient++

Nesse projeto será utilizado o modelo de gerencia com agente de conforme


demonstra a figura 4. O agente utilizado nesse projeto foi o NsClient++ na versão 0.3.8 de
32 e 64 bits que pode ser obtido através do endereço http://nsclient.org/nscp/downloads . A
escolha desse agente se deu pelo motivo de que a maioria dos hosts no ambiente da
Crediplanalto utiliza sistema operacional Windows. A figura 12 demonstra quais as opções
devem ser marcadas no momento da instalação do agente NsClient++
Figura 12: Opções para a instalação do NsClient++

Após a instalação o agente NsClient++ fica rodando como daemon, e é carregado


automaticamente pelo sistema operacional. O campo Allowed host pode ser preenchido para
permitir que apenas determinado servidor do nagios se conecte, nesse projeto o campo foi
deixado em branco, ou seja, permite que qualquer servidor se conecte a esse cliente. O
campo NSCliente password é a senha que o servidor nagios traz para se conectar, nesse
projeto a senha foi deixada em branco.

2.8 Avaliação do Nagios

Foram realizados diversos testes no ambiente de produção, alguns testes podem ser
observadosnas figuras 13 e 14, onde o nagios satisfatoriamente cumpriu seu papel, tanto
alterando o status na interface web quanto no envio dos e-mail´s de notificação.
Figura 13: Teste realizado com um host off line

Figura 14: Teste realizado com serviços off-line

Abaixo destacamos algumas vantagens e desvantagens.

Vantagens:

• Open source;
• Flexível, pois permite a criação de plugins e a inserção de comandos
personalizados,
• Escalável;
• Notificações através de e-mail, mensagens instantâneas, sms entre outros;
• Interface de monitoramento web;
• Vasto material de pesquisa disponível na web.

Desvantagens:

• Dificuldade de configuração, pois são feitas através de arquivos texto;


• A cada nova mudança de configuração é necessário reiniciar o serviço para que as
mesmas entrem em vigor.

3 Conclusão

Realmente essa ferramenta marcou um novo cenário no departamento de T.I. da


Crediplanalto, ajudando a monitorar de forma dinâmica os serviços de rede e os hosts.
Também foi possível automatizar alguns processos manuais, por ex: checar se os servidores
do circuito fechado de TV e os caixas eletrônicos estavam ligados.
Esse projeto ajudou o departamento de T.I. a agir de forma preventiva, por exemplo,
saber que um link de comunicação está off line logo no início do expediente, permitindo
assim tomar as devidas providências antes de iniciar o atendimento ao público. Também
permitir monitorar os caixas eletrônicos durante o final de semana, pois era um problema
comum os clientes não conseguirem utilizar os serviços, devido a queda do link de
comunicação, ou travamentos do software ou hardware. O monitoramento das VPN´s é
outro fato importante, visto que vários serviços dependem da mesma para funcionar, ex:
servidor de diretório, servidor de e-mail, intranet, anti-vírus entre outros.
O planejamento estratégico da diretoria da Crediplanalto prevê para os próximos
três anos uma expansão expressiva tanto no número de clientes quanto de novas filiais, e
com certeza o software nagios será uma das ferramentas que auxiliará o departamento de
T.I nesse novo horizonte.

4 Bibliografia

[1] http://www.vivaolinux.com.br/artigo/Instalacao-e-configuracao-do-Nagios - Acessado


em Julho de 2009.
[2] http://leandrotoledo.com.br/2010/10/02/ssmtp-enviando-e-mails-pela-linha-de-comando/
- Acessado em Agosto de 2009.
[3] http://www.devin.com.br/htaccess/ - Acessado em Agosto de 2009.
[4] http://linux.die.net/man/8/setenforce - Acessado em Agosto de 2009.
[5] http://www.ginux.ufla.br/files/mono-HettyAndrade.pdf - Acessado em Agosto de 2009
[6] http://dsc.upe.br/~tcc/20091/TCC_Rogerio_Pontual_Projeto-baseado-no-Nagios-------
.pdf - Acessado em Agosto de 2009.
[7] http://www.nagios.org/ - Acessado em Setembro de 2009.
[8] http://www.nsclient.org/nscp/ - Acessado em Setembro de 2009
[9] http://pt.wikipedia.org/wiki/GNU_Compiler_Collection - Acessado em Setembro de
2009.
[10] http://www.vivaolinux.com.br/artigo/Nagios-O-seu-gerenciador-de-redes - Acessado
em Setembro de 2009
[11] http://nagios-br.sourceforge.net/wiki/index.php/P%C3%A1gina_principal – Acessado
em Setembro de 2009.
[12] http://pt.wikipedia.org/wiki/Nagios - Acessado em Outubro de 2009.