1. Trabalho sobre Nagios
Francisco Aldevan Barbosa Costa – RA 1011354
Nagios
O Nagios é um sofware livre distribuído por meio da licença GPL, criado por
Ethan Galstad. Atualmente uma grande comunidade de desenvolvedores ao
redor do planeta participa do desenvolvimento desta ferramenta que surgiu
com o nome de Netsaint, nos anos 90. O NetSaint era apenas uma pequena
ferramenta DOS que se utilizava do comando "ping" para testar conectividade
com servidores Novell. Esta aplicação também conseguia se utilizar de
aplicações de terceiros e resgatar dados, organizando-os em arquivos de texto.
Este é o início da arquitetura Servidor-Plugins, utilizada pelo Nagios e que
resultou em um enorme sucesso da ferramenta.
Em 1998, Ethan lançou uma versão aprimorada do NetSaint para que
funcionasse na plataforma Linux. Esta versão foi otimizada para que pudesse
monitorar hosts e serviços de maneira efetiva. No ano de 2002, devido a
problemas com os direitos do nome NetSaint, Galstad muda o nome de sua
ferramenta para Nagios e, a partir deste ponto, o software tornou-se cada vez
mais conhecido internacionalmente. Nos últimos anos, Nagios tem vencido
muitos prêmios e vem sendo utilizado em larga escala, principalmente por
empresas de grande porte como ISPs (Internet Service Providers), devido a
sua robustez e escalabilidade.
Existem no mercado várias ferramentas para recursos computacionais,
algumas distribuídas gratuitamente como o Nagios e outras pagas como o
Orion Solar Winds, que chega a custar milhares de dólares. A decisão em se
utilizar o Nagios parte da ideia de redução de custo, um fator primordial dentro
das empresas de TI, hoje em dia, e também por ser considerada uma das
ferramentas mais poderosas no mercado, atualmente, adapta-se a todo o tipo
2. de ambiente, além de apresentar a flexibilidade de uma arquitetura que permite
a participação direta do usuário através de customização e criação de plugins.
Em outras palavras, podem-se listar algumas funcionalidades chave do Nagios
como:
Web interface. Não importa a localidade onde se encontra o
administrador, pode-se verificar a saúde da rede desde que se tenha
acesso a um browser;
Recursos de rede como HTTP e FTP podem ser monitorados assim
como recursos de hosts como espaço em disco, processos, logs,
recursos de processamento e memória etc;
Pode-se gerar relatório para tendências, alertas, viabilidade e
notificações através da interface web;
Plugins podem ser programados pelo próprio administrador ou uma
equipe caso o Nagios não forneça a princípio as informações desejadas;
"Downtime" programável. Enquanto servidores estão off-line para
manutenção ou recursos estão indisponíveis por razões conhecidas
pode-se ativar o modo downtime e notificações não são enviadas;
Estrutura de monitoramento redundante. Para que o servidor de
monitoramento não corra o risco de falhar, pode-se utilizar uma estrutura
"Master and Slave", ou seja, um segundo servidor Nagios pode ser
utilizado como Backup para o primeiro. Caso haja falha, o servidor de
backup assume o controle automaticamente.
Um dos propósitos principais de um sistema de monitoramento é
detectar falhas no funcionamento de máquinas e serviços, portanto, o
administrador é avisado imediatamente sobre o problema (Kocjan, 2008,
p.8). O sistema Nagios não executa suas funções por si só. Utiliza-se de
plugins para realizar as verificações necessárias. Tais plugins podem ser
desenvolvidos por usuários em qualquer linguagem de programação, o
que torna a estrutura do Nagios extremamente flexível.
Os objetos monitorados pelo sistema Nagios podem ser divididos
em duas categorias básicas: hosts e serviços. Hosts são máquinas
3. físicas como servidores, switches, impressoras, roteadores etc. Serviços
são funcionalidades como um servidor web, impressão, e-mail, entre
outros. Tais serviços são associados com o host no qual são
executados. Grupos de hosts e serviços podem também ser criados, o
que facilita a organização dos objetos.
Visão geral da organização dos host no nagios
A figura acima explica o conceito de hosts e serviços no Nagios. O host
1 por exemplo, possui 4 serviços associados, são eles : Webserver, Database
server, FTP server e SSH server. Host 1 e Host 2, por sua vez, formam o grupo
Hostgroup 1. Caso uma ação seja aplicada a esse grupo, esta irá afetar Host 1
e Host 2, respectivamente.
O Nagios possui um estilo de exibição dos dados que simplifica sua
visualização. Em vez de utilizar números e percentagens, o sofware utiliza
quatro estados para demonstrar o status de serviços e equipamentos: OK,
WARNING, CRITICAL, e UNKNOWN. Esta abordagem facilita muito o trabalho
do administrador que ao invés de monitorar valores numéricos o tempo todo,
pode customizar estes valores de forma que os quatro estados do Nagios
reflitam o estado da rede de maneira eficiente. Por exemplo, em determinada
4. rede a utilização média do link de Internet pode girar em torno dos 40%. Em
outra, a percentagem pode ser em torno de 65%, portanto, os administradores
devem customizar os estados de maneira que o Nagios possa informar
anomalias na utilização destes links, eficientemente.Em geral, administradores
tendem a desconsiderar coisas como uma lenta diminuição do espaço em
disco em um servidor, e, até que se perceba o problema, este poderá fazer
com que usuários sejam impossibilitados de gravar arquivos, até usar o
sistema de maneira eficiente. Em casos como esse, ferramentas de
monitoramento são muito importantes para se prevenir problemas desse tipo.
Nagios se utiliza de plugins para monitorar seus objetos. Tais plugins são
componentes externos, os quais passam informações ao servidor. São
responsáveis por verificar e analisar resultados, ou seja, são transformados em
um dos quatro estados citados anteriormente e enviados ao servidor, assim
como um relatório detalhado adicional, que pode ser lido por administradores
experientes. Existem plugins capazes de monitorar basicamente qualquer tipo
de objeto de uma companhia. O site www.nagiosplugins.org deve ser checado
para maiores informações sobre as centenas de plugins disponíveis. A Figura 9
exibe uma tela do plugin Nagvis, a qual possibilita a visualização do status de
estruturas, servidores e outros objetos por meio de diagramas e fotografias.
5. Tela do plugin Nagios
Características do Nagios
Como citado anteriormente, a característica mais forte do Nagios é a
flexibilidade, ou seja, pode ser configurado em detalhes pelo administrador.
Também possui um mecanismo que reage automaticamente em caso de
problemas e um poderoso sistema de notificações. De acordo com Kocjan
(Kocjan, 2008, p.25), todas essas funcionalidades são baseadas em um
sistema claro de definições e tipos de objetos, a saber:
Comandos - definições de como o Nagios deve executar verificações
específicas; na verdade, são uma camada de abstração que permite o
agrupamento de operações similares.
Períodos de Tempo - controlam quando ações devem ser executadas ou
não. Por exemplo: segunda a sexta entre 7:00 e 18:00 horas.
6. Contatos e grupos de contato - Informações sobre as pessoas que
devem ser contatadas e os meios de contato. Podem ser agrupadas
para facilitar o contato de várias pessoas.
Hosts - informações sobre máquinas físicas, como a verificação deve ser
efetuada e quais as pessoas a serem contatadas.
Serviços - várias funcionalidades ou recursos a serem monitorados em
um host específico, contatos, além de como e quando a verificação deve
ser feita.
Hierarquia de notificações para Hosts e Serviços - define períodos nos
quais pessoas adicionais devem ser notificadas. Por exemplo, se um
servidor de missão crítica estiver off-line por mais de 4 horas, a gerência
pode ser notificada.
Outra característica muito importante do Nagios é o avançado sistema
de dependências do sistema. Por exemplo, se um roteador está off-line, todas
as máquinas e serviços acessados através deste equipamento são obviamente
afetadas. Alguns sistemas não levam isso em consideração, o que resulta em
um excesso monstruoso de notificações a respeito de todas as máquinas e
serviços afetados.
O Nagios utiliza um sistema de quatro estados para informar o
administrador sobre o status de um objeto. Porém, para que se evitem
problemas temporários, que resultam em notificações que não refletem o
estado real da rede, o Nagios utiliza estados "hard" e "soft" para descrever o
estado do objeto naquele momento. Por exemplo, se o administrador precisa
reiniciar um servidor web e este processo faz com páginas web fiquem sem
acesso por alguns segundos, o Nagios não deve enviar notificações uma vez
que se trata de um período aceitável. Caso o servidor continue indisponível por
tempo acima do permitido pelo administrador como aceitável, a ferramenta
avisa, então, as pessoas responsáveis. Se o Nagios não possuísse este tipo de
estado temporário, um evento como esse poderia ativar uma série de
notificações equivocadas. A configuração de "soft" e "hard" states pode ser
feita para cada host individualmente, o que proporciona maior flexibilidade.
Para testar serviços o Nagios faz uso de programas externos chamados
7. plugins. No caso mais simples isto envolve testar um serviço de internet. Aqui o
serviço pode ser chamado diretamente na rede, pois é suficiente chamar um
programa local no servidor Nagios que teste o serviço específico no servidor
remoto.
Nem tudo o que se queira testar pode ser alcançado tão facilmente na
rede. Entretanto, não existe um protocolo de rede para verificação da área
disponível em disco, por exemplo. Neste caso é necessário iniciar um plugin
num host remoto através de um shell remoto (mas primeiro ele precisa ser
instalado no computador remoto), ou então usa-se de outros métodos tal como
o protocolo SNMP (Simple Network Management Protocol) para verificar a
capacidade do disco. Os quatro métodos de verificação de serviço de forma
“ativa”, onde o Nagios toma a iniciativa e dispara o teste, são: executar
diretamente um plugin no seu próprio servidor; executar um plugin que por sua
vez vai chamar um outro no host remoto; executar um plugin também
diretamente na máquina cliente, mas utilizando o serviço NRPE - Nagios
Remote Plugin Executer - criado especificamente para este propósito; e, por
último, utilizar uma consulta via SNMP - para isto o cliente precisa de um
agente SNMP disponível. Existem vários plugins disponíveis para consulta de
dados através de protocolo. Outro tipo de verificação é feita de forma passiva:
o Nagios apenas aguarda pela informação a ser enviada pelo cliente através do
programa NSCA (Nagios Service Check Acceptor). No próprio servidor Nagios
o NSCA executa como um daemon que recebe os resultados enviados e os
repassa à interface para comandos externos. O Nagios possui um sistema
interno de controle que permite a atualização dos resultados relativos à
verificação dos serviços. Se esta opção for ativada pelo administrador, assim
como for definido o intervalo máximo entre cada verificação, o Nagios irá forçar
uma verificação de serviços ativos sempre que este intervalo for atingido.