GERENCIA DE REDES E SOFTWARE LIVRE: USO DO NAGIOS
Lianna Mara Castro Duarte
Faculdade Santo Agostinho
Coordenação de Pós-Graduação
Curso de Pós-Graduação em Redes de Computadores
[email protected]
Resumo: Gerenciar redes nos dias de hoje é uma tarefa muito complexa, e,
devido a esta complexidade, várias soluções são criadas para auxiliar o profissional
de gerencia em suas atividades. Levando em consideração que inúmeras destas
soluções são proprietárias, e de como sai caro utilizar e manter as licenças para tais
softwares percebe-se o enorme potencial dos softwares livres na área de
gerenciamento, sem deixar a desejar em relação à qualidade. Como exemplo disto
existe o Nagios, um software para gerência remota de recursos.
Palavras-Chave: Gerenciamento de redes, software livre, Nagios, padrões
abertos.
Abstract: Nowadays the Network Management is a hard task, and because of the
complexity of this task, a large number of solutions are created to hel the
professionals, Considering that most of that solutions are “private”, and how
expensive is to use private softwares, we can see the enormous potenctial of the
open source softwares. An example is Nagios, a great service and network
monitoring program.
Keywords: Network Management, free software, Nagios, open source.
1- Introdução
O tráfego de informações dentro das redes vem crescendo continuamente,
principalmente devido ao surgimento de novas aplicações. Concorrentemente, novas
tecnologias e padrões proporcionam uma grande proliferação de dispositivos
heterogêneos conectados à rede. E tornou-se um grande desafio manter o controle
de um ambiente cada vez mais complexo e heterogêneo.
A necessidade de gerenciamento de redes vem fazendo com que, cada vez
1
mais, sejam pesquisadas e desenvolvidas novas técnicas e abordagens para este
tipo de problema. Como tudo que evolui o gerenciamento de redes, também está
evoluindo e muitas coisas que alguns anos atrás eram "verdades" hoje já não são
mais. Pontos que eram considerados importantes e de relevância já não possuem a
mesma importância de antes. Assim, antigos conceitos estão sendo revistos, e novos
estão surgindo, levando todos a reavaliar a forma que está sendo feito
gerenciamento de redes hoje, e levantando perspectivas para o futuro.
2- Um pouco da historia do gerenciamento
Até o início da década de 1980, redes de computadores eram baseadas em arquiteturas
e protocolos patenteados, a exemplo de System Network Architecture (SNA) da IBM e
DECNET da Digital Equipment Corporation. Já no final da década de 1980, redes
interconectadas baseadas na arquitetura e protocolos TCP/IP estavam em franca ascensão.
Porém, do ponto de vista da gerência de tais redes, a situação ainda favorecia arquiteturas
proprietárias, devido à inexistência de soluções de gerência de redes TCP/IP.
O crescimento de redes TCP/IP ao longo da década de 80 aumentou
consideravelmente as
dificuldades de gerência.
Devido à diversidade
de
equipamentos das modernas redes de dados, tornou-se necessário unificar e
padronizar as informações de gerência e o protocolo da administração dessas redes.
Para atender essa necessidade, dois protocolos principais surgiram: o SNMP
(Simple Network Management Protocol) e o CSMIE/CMP (Common Management
Information Service Element/Common Management Information).
A simplicidade do SNMP facilitou sua inclusão em equipamentos de
interconexão. No final da década de 1990, a solução SNMP já era tão difundida que
se estabelecera como padrão de gerência de redes de computadores. Hoje,
praticamente todos os equipamentos de interconexão dão suporte a SNMP, bem
como muitos outros dispositivos (nobreaks, modems etc.), e sistemas de software
(servidores Web, sistemas de bancos de dados etc.). SNMP, além da parte mais
importante para o gerente de rede: a informação de gerência, presente na forma de
Management Information Bases (MIBs).
Apenas durante o ano de 1993, foram publicadas 11 RFCs definindo revisões
para o SNMP e dando início ao padrão SNMPv2, sendo o primeiro, o RFC 1441
[Case et al 1993]. Esta série de revisões trouxe consigo grandes avanços que foram
2
incorporados ao protocolo original. Tais avanços podem ser classificados de acordo
com as seguintes categorias:
• Estrutura de informação;
• Primitivas de comunicação (PDUs);
• Comunicação gerente-gerente e gerenciamento hierárquico;
• Segurança.
A estrutura de informação de gerenciamento (SMIv2) para o SNMPv2 é mais
elaborada, e eliminou ambigüidades nas definições dos objetos encontrados nas
especificações anteriores.
Apesar do SNMP em si ser relativamente "simples", há um certo trabalho para
dar suporte a uma MIB no agente. Há ainda mais trabalho para construir o suporte
de gerenciamento para utilizar os dados da MIB, e ainda um pouco mais quando se
fala em desenvolver o gerenciamento nas várias plataformas existentes para
gerenciamento de redes.
Na eterna batalha de se tentar manter estáveis as redes, surgem diversas
pesquisas, modelagens e implementações de soluções rebuscadas para a
automatização de processos gerenciais e, obviamente caríssimos softwares
proprietários.
No entanto, existem alternativas à essas soluções, que são os
softwares livres.
3-O Uso de Software Livre
“Software livre" se refere à liberdade dos usuários executarem, copiarem,
distribuírem,
estudarem,
modificarem
e
aperfeiçoarem
o
software.
Mais
precisamente, ele se refere a quatro tipos de liberdade, para os usuários do
software:
•
A liberdade de executar o programa, para qualquer propósito (liberdade nº. 0)
•
A liberdade de estudar como o programa funciona, e adaptá-lo para as suas
necessidades (liberdade no. 1). Acesso ao código-fonte é um pré-requisito
para esta liberdade.
•
A liberdade de redistribuir cópias de modo que você possa ajudar ao seu
próximo (liberdade no. 2).
3
•
A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos,
de modo que toda a comunidade se beneficie (liberdade no. 3). Acesso ao
código-fonte é um pré-requisito para esta liberdade.
Um programa é software livre se os usuários tem todas essas liberdades.
Portanto, você deve ser livre para redistribuir cópias, seja com ou sem modificações,
seja de graça ou cobrando uma taxa pela distribuição, para qualquer um em
qualquer lugar. Ser livre para fazer essas coisas significa (entre outras coisas) que
você não tem que pedir ou pagar pela permissão. Você deve também ter a liberdade
de fazer modificações e usá-las privativamente no seu trabalho ou lazer, sem nem
mesmo mencionar que elas existem. Se você publicar as modificações, você não
deve ser obrigado a avisar a ninguém em particular, ou de nenhum modo em
especial.
A liberdade de utilizar um programa significa a liberdade para qualquer tipo de
pessoa física ou jurídica utilizar o software em qualquer tipo de sistema
computacional, para qualquer tipo de trabalho ou atividade, sem que seja necessário
comunicar ao desenvolvedor ou a qualquer outra entidade em especial.
A liberdade de redistribuir cópias deve incluir formas binárias ou executáveis
do programa, assim como o código-fonte, tanto para as versões originais quanto
para as modificadas. Está ok se não for possível produzir uma forma binária ou
executável (pois algumas linguagens de programação não suportam este recurso),
mas deve ser concedida a liberdade de redistribuir essas formas caso seja
desenvolvido um meio de cria-las. De modo que a liberdade de fazer modificações, e
de publicar versões aperfeiçoadas, tenha algum significado, deve-se ter acesso ao
código-fonte do programa. Portanto, acesso ao código-fonte é uma condição
necessária ao software livre.
Para que essas liberdades sejam reais, elas têm que ser irrevogáveis desde
que você não faça nada errado; caso o desenvolvedor do software tenha o poder de
revogar a licença, mesmo que você não tenha dado motivo, o software não é livre.
Muitas vezes esquecemos os princípios básicos que determinam a
estabilidade de uma rede e nos entregamos às falsas necessidades impostas pela
indústria de softwares. Algumas características se mostram importantes para a
4
manutenção de uma rede de computadores. Podemos citar:
• Independência de fornecedor
Empresas não duram pra sempre. Algumas soluções tornam-se
obsoletas e não encontram sustentabilidade por dependerem de um só
fornecedor. Aquele apliance que faz a análise de tráfego de sua rede hoje, e
que roda um sistema proprietário numa caixa preta, pode se transformar em
lixo no dia em que seu fabricante fechar as portas. É interessante obter um
hardware que siga padrões estabelecidos, e que seja suportado por diferentes
sistemas operacionais.
• Utilização de padrões abertos
Alguém montaria sua rede corporativa implementando uma solução
não compatível com o TCP/IP? Este é o caso mais absurdo, mas podemos
usá-lo para fazer analogia a outras implementações, a exemplo do SNMP
(Simple Network Management Protocol), que é um protocolo para gerência de
redes bastante popular, com especificação aberta e em constante evolução.
Mesmo assim alguns fabricantes empurram seus protocolos de gerência, e
algumas pessoas pagam caro (nos dois sentidos) por isso. Alguns fabricantes
fazem pior. Empacotam protocolos estabelecidos num rótulo com sua
assinatura.
• Baixo custo de implementação
Montar uma rede não é barato. A infraestrutura custa caro, a
implantação custa caro e o suporte custa caro. O software pode custar caro
também, mas essa é uma escolha sua. Existem excelentes softwares livres
para monitorar e gerenciar recursos de uma rede. Com sua adoção, dois
aspectos referentes ao custo são atacados: custo de suporte, que agora é
descentralizado e custo com licença, que é zero.
• Bons softwares
Bons softwares de gerência e monitoramento devem prever situações
indesejáveis na rede, e quando possível tomar as ações preventivas pelo
administrador. Uma interface clara e a centralização das informações são
também características importantíssimas para a gerência da rede. A
independência de plataforma é essencial. É muito difícil encontrar uma rede
homogênea nos quesitos software e hardware. Aí que geralmente somos
ludibriados com programas que se dizem multi-plataformas. É muito raro um
5
software proprietário atender a esse requisito. Geralmente encontramos uma
solução “multi-plataforma” porque que roda em Windows{XP,2000,NT,etc.} e
no máximo num redhat7.2 ou FreeBSD4.3.
Para um bom gerenciamento existem três preocupações básicas que um
administrador de redes deve ter:
1- Gerência de Falhas
Aqui temos as tarefas de (1) Identificar a falha, (2) Isolar a falha e (3)
Corrigir a falha. É uma das tarefas mais importantes para deixar uma rede
com um bom nível de confiabilidade. É também uma tarefa complexa,
necessita de ferramentas bastante escaláveis e de preferência que
automatizem ao máximo o processo, desde a identificação até a correção de
uma falha.
2- Gerência de Desempenho
Muito importante para (1) evitar o mau uso da rede e (2) prover uma
capacidade de planejamento. Gerenciar o desempenho dos recursos de uma
rede é muito importante para identificar quais deles devem ser revisto a
propósito de upgrades, ou mesmo de diminuição de custos (largura de banda
desnecessária, por exemplo). Essencial também para detectar atividades
ilícitas na rede, como por exemplo a detecção de utilização dos recursos
durante períodos em que não deveria existir (nas madrugadas, por exemplo).
3 - Configuração Centralizada
A centralização das informações, tal como seu correlacionamento é
uma característica muito importante para a administração de uma rede. Uma
interface simples de se manipular é essencial quando se trata de dados
complexos e provenientes de variadas localidades. Após a consolidação da
WEB ficou muito mais fácil produzir ambientes de gerência (NMS) remotos
multi-plataforma e amigáveis. Criou-se então uma forte independência de
GUIs proprietários, possibilitando a gerência remota em qualquer sistema
conectado à rede.
Frente a essas preocupações, o software livre tornou-se nos últimos anos
uma alternativa econômica e financeiramente viável ao modelo atual de
licenciamento de software e a sua política abusiva de renovação constante de
6
licença e atualização de hardware. O software livre passa a ser uma solução para as
milhões de cópias de software piratas que existem espalhados pelo Brasil e pelo
mundo.
Dentro deste contexto, mostraremos uma ferramenta especificamente, o
NAGIOS, um software livre usado no gerenciamento de redes.
4- Nagios, software livre para gerência remota de recursos
O NAGIOS é um software para gerência de recursos, um poderoso monitor
de rede. Com ele, é possível monitorar e gerenciar os recursos de hosts, tai como
sua carga de processamento, utilização de memória, tempo de resposta, utilização
de banda, etc., atestar o funcionamento adequado dos equipamentos e serviços.
Também possui um ambiente WEB capaz de gerar mapas da rede, relatórios e
gráficos online e é possível criar grupos de usuários para receber relatórios e alertas
do sistema e executar ações sobre os problemas da rede ou hosts monitorados.
Algumas características do Nagios:
• Monitora serviços de rede
• Monitora recursos de hosts
• Define hierarquia da rede
• Sistema inteligente de notificações
• Alertas para pagers, email, celular, etc;
•Possibilidade de implementação de servidores de monitoramento
distribuídos e redundantes.
• Interface WEB capaz de informar sobre status de redes, hosts,
serviços, logs, notificações. mapas da rede 2D e 3D
• Relatórios, integração com BDs, etc
O requisitos para rodar o Nagios são: uma maquina rodando um sistema
operacional Linux (ou qualquer variação UNIX); um compilador C; e provavelmente
ter TCP/IP configurado, um servidor web e uma biblioteca GD, atualizada, para a
geração de gráficos.
7
4.1- Obtendo e instalando o Nagios
O software está disponível no site : http://www.nagios.org/download, e antes
de começar a usa-lo é interessante que seja lida a documentação, para que os
conceitos que são utilizados na configuração do sistema fiquem bem claros.
Os passos para instalação do Nagios serão os seguintes:
1- Instalar o Nagios
2- Instalar o Nagios-plugins
3- Configurar o servidor WEB
4- Configurar o Nagios
4.2 – Instalação do Nagios
1- Descompacte o arquivo com o código fonte, use o comando:
tar xzvpf nagios-1.1.tar.gz
2- Crie o diretório de instalaçao
mkdir -p /usr/local/nagios
3 -Adicione o usuário e grupo nagios:
groupadd nagios
useradd -g nagios -d /usr/local/nagios -s /bin/false nagios
4-A compilação será básica, sem suporte a banco de dados, para isso são
necessários os comandos:
./configure
--prefix=/usr/local/nagios
--with-nagios-user=nagios—with-
nagios-grp=nagios--with-cgiurl=/nagios/cgi-bin--ithhtmurl=/nagios( parâmetros
para compilação )
make all -s ( criação de binários )
make install -s ( instalação de binários )
make install-init -s ( instalação de script de inicialização )
make install-config -s ( instalação de exemplos de configuração no diretório
/usr/local/nagios/etc )
Após a instalação serão criados os diretórios abaixo:
– /usr/local/nagios
– bin/ ( Arquivos binários do Nagios )
– etc/ ( Diretório de Configuração )
8
– sbin/ ( CGI's )
– share/ ( Arquivos HTML )
– var/ ( Diretório de logs )
4.2 – Instalação do Nagios-plugins
Descompacte o arquivo com o código fonte, use o comando:
tar xzvpf nagios-plugins-1.3.1.tar.gz
Antes de iniciar a instalação é ALTAMENTE recomendável ler o arquivo
REQUIREMENTS para verificar quais os requisitos dos plugins. Para compilar
use o seguinte parâmetro:
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios
--with-nagios-grp=nagios
Verifique se não está faltando algum componente para os plugins. Caso
esteja faltando algum irá aparecer uma mensagem com o link para download
e instalação.
make all -s ( criação de binários )
make install -s ( instalação de binários )
Após a instalação será criado o diretório abaixo:
- /usr/local/nagios
– libexec/ ( Arquivos de Plugins do Nagios )
4.2 – Configurando o servidor web
Para acessar o Nagios via web, é necessário adicionar a seguinte
configuração no httpd.conf do apache:
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" >
11
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
< /Directory >
Depois é necessário criar o arquivo com usuário e senha, para isso use o
comando abaixo:
htpasswd -c /usr/local/nagios/etc/htpasswd.users usuario
chown apache:apache /usr/local/nagios/etc/htpasswd.users (verifique qual o
usuário e grupo do apache)
4.2 – Configurando o Nagios
Não há complexidade alguma nesse processo, porém deve-se estar
atento que os arquivos de configuração do Nagios devem estar em sintonia.
A primeira boa prática agora é gerar os arquivos-exemplo de configuração do
Nagios, entrando no diretório que contém os fontes (aquele que você executou o
“make”) e executar o seguinte comando:
make install-config
Antes de iniciar a configuração iremos fazer uma cópia dos arquivos
originais):
cd /usr/local/nagios/etc
mkdir original
mv *.cfg-sample original
for i in *cfg-sample; do mv $i `echo $i|sed -e s/cfg-sample/cfg/`; done;
Depois iremos copiar somente os arquivos necessários:
cd /usr/local/nagios/etc/original
cp cgi.cfg checkcommands.cfg misccommands.cfg nagios.cfg
resource.cfg timeperiods.cfg ../
Arquivos de configuração:
1. CGI.CFG
Nele ficam as configurações de utilização de arquivos cgi pelo Nagios.
Devem ser configurados os parâmetros de autorização de utilização da
12
interface Web. Altere os campos para o nome do usuário cadastros no
arquivo /usr/local/nagios/etc/htpasswd.users e assim terão acesso ao sistema,
os parâmetros são:
authorized_for_system_information=usuario1, usuario2
authorized_for_configuration_information=usuario1, usuario2
authorized_for_system_commands= usuario1, usuario2
authorized_for_all_services=usuario1, usuario2
authorized_for_all_hosts=usuario1, usuario2
authorized_for_all_service_commands=usuario1, usuario2
authorized_for_all_host_commands=usuario1, usuario2
2. CHECKCOMMANDS.CFG
Configuração
dos
plugins
que
estão
no
diretório
/usr/local/nagios/libexec. Basta adicionar o plugin e seus parâmetros.
3. MISCCOMMANDS.CFG
Definição de algums comandos, tais como envio de e-mail, envio de
pager, etc ...
4. NAGIOS.CFG
Arquivo com as configurações principais. O padrão é bem completo,
somente altere os parâmetros:
check_external_commands=0 -> check_external_commands=1
date_format=us -> date_format=euro
5. RESOURCE.CFG
Configuração de parâmetros de recursos. Por padrão vem definido qual
o caminho dos plugins. Pode ser setadas variáveis para serem utilizadas nos
arquivos CHECKCOMMANDS.CFG e MISCCOMMANDS.CFG.
6. TIMEPERIODS.CFG
Arquivo com os horários pré-definidos para checagem de serviços e/ou
servidores. É muito útil para avisos para diferentes grupos.
13
Configurando usuários e grupos de usuários
Existem dois arquivos que se referem a essa tópico. São eles:
contactgroups.cfg e contacts.cfg. Abaixo cada um deles explicados.
contacts.cfg
define contact{
contact_name login
alias Nome do Usuario
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 protected]
} contactgroups.cfg
define contactgroup{
contactgroup_name grupo
alias Nome do Grupo
members Logins definidos no arquivo contacts.cfg
}
Configurando hosts e grupos de hosts
Existem dois arquivos que se referem a essa tópico. São eles:
hostgroups.cfg e hosts.cfg.
hosts.cfg
define host{
event_handler_enabled 1
flap_detection_enabled 1
max_check_attempts 5
name generic-host
14
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
}
# Definicao do 'servidor1'
define host{
use generic-host
address IP do Servidor
alias Nome do Servidor
check_command Comando a ser efetuado ( funcao do services.cfg)
host_name Host_Name_do_servidor
}
hostgroups.cfg
define hostgroup{
hostgroup_name nome_do_grupo
alias Descricao do Grupo
contact_groups grupos_que_fazem_parte
members membros_que_fazem_parte
}
Criando os arquivos dependencies.cfg e escalations.cfg
Utilize o comando abaixo para criar os dois arquivos pelo primeira vez. É
necessário para iniciar o Nagios:
touch /usr/local/nagios/etc/dependencies.cfg
touch /usr/local/nagios/etc/escalations.cfg
Também é necessário criar o diretório abaixo:
mkdir -p /usr/local/nagios/var/rw
chown nagios:nagios -R /usr/local/nagios/var/rw
Iniciando o Nagios
15
Após as configurações é necessário iniciar o Nagios. Utilize o comando
abaixo para verificar se está correto os arquivos:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Se tudo estiver certo, inicie o Nagios com o comando:
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
Assim será iniciado como daemon. Não esqueça que foi criado o arquivo
de inicialização no diretório /etc/rc.d/init.d/nagios.
5- Considerações Finais
Podemos sentir hoje o grande potencial do software livre nas diversas áreas,
e não seria diferente na gerência e segurança de redes/sistemas. A evolução dos
equipamentos empregados e a maior dependência dos negócios na agilidade e
confiabilidade deste meio de comunicação faz com que a área de gerenciamento
cresça e ofereça um enorme potencial futuro.
Assim
como
o
Nagios,
que
oferece
muitos
recursos
de
monitoramento,existem, e estão surgindo a cada dia, várias outras soluções livres
para auxiliar a complexa tarefa de gerenciar uma rede, como o CACT(
monitoramento de recursos), o NTOP (analisador de tráfego), e vários outros que
estão disponíveis para a comunidade que deseja utilizar softwares livres. Toda esta
evolução juntamente com a “popularização” dos softwares livres ajuda a auxiliar o
profissional de gerencia e aumenta o leque de opções na hora da escolha dos
softwares para gerenciamento das redes.
16
Referência Bibliográfica
TANEMBAUM, Andrews S.: tradução Vandenberg D. de Souza. Redes de
Computadores. 4. ed.. Rio de Janeiro: Elsevier, 2003.
COMER, Douglas E., STEVENS, David L. Interligação em Rede com TCP/IP. 3.ed..
Rio de Janeiro: Campus, 1999.
Monitoramento Inteligente com o Nagios. Disponível em:
<http://www.opencode.com.br/modules.php?name=News&file=article&sid=376>.
Acesso em 27 maio 2005.
Simple Network Management Protocol (SNMP). Disponível em:
<http://www.teleco.com.br/tutoriais/tutorialsnmp/pagina_1.asp> Acesso em 25 maio
2005.
Gerenciamento de Redes TCP/IP. Disponível em:
<http://www.rnp.br/newsgen/9712/gerencia.html> Acesso em 24 maio 2005.
Sistemas TTS: Uma abordagem voltada para Sistemas de Gerenciamento de
Redes. Disponível em: <http://www.rnp.br/_arquivo/wrnp2/2003/oscfa04a.pdf>
Acesso 23 maio 2005.
Tutorial SNMP. Disponível em:
<http://www.teleco.com.br/tutoriais/tutorialsnmp/pagina_1.asp>
Instalação e configuração do Nagios. Disponível em:
<http://web.onda.com.br/humberto/arquivo/nagios.pdf> Acesso 03 maio 2005.
17
Download

gerencia de redes e software livre: uso do nagios