Académique Documents
Professionnel Documents
Culture Documents
Monitoramento de
redes com Shinken
CAPA
O
sistema de monitoramento problemas antes que eles ocorram. de patches importantes para a co-
Nagios é uma ferramen- Porém, alguns usuários do Nagios munidade.
ta popular para controlar veem espaço para melhorias. O fork do Nagios chamado Icin-
serviços e dispositivos de rede. Ad- A arquitetura do Nagios é pra- ga, anunciado em meados de 2009,
ministradores de sistemas de todo o ticamente a mesma desde que o causou um breve agito entre os de-
mundo dependem do Nagios e de projeto foi fundado há dez anos, senvolvedores, e dois deles foram
sua galeria de plugins para manter os e seu sucesso provocou gargalos adicionados à equipe, mas a situação
sistemas em execução e detectar os que levaram a atrasos na execução pouco se alterou. O lançamento do
“nagios.cfg“ Worker 1
“objects.cfg“
Worker 2
“shinken-specific.cfg“‚ Poller
Worker n
checks >> E»
checagens
F<<results
results
Árbitro ping
Worker 1
“pack“
Worker 2
Reactionner
eventhandler
manipulador de >>
evento E
notifications >>
notificações E Worker n
<< results
F results
Agendador
Merlin module
broks E
NDO Oracle module
Broker
Perfdata module
Figura 1 O processo único do Nagios é substituído por cinco processos em um sistema Shinken mínimo.
40 http://www.linuxmagazine.com.br
Monitoramento de Redes | CAPA
Nagios XI, um produto comercial um único processo para analisar a lhe são atribuídos e por se certifi-
baseado no núcleo livre do Nagios, configuração, organizar agendamen- car da execução de verificações,
deu origem a especulações de que o tos, executar checagens e processar manipuladores de eventos e no-
principal desenvolvedor do Nagios, scripts. Em vez disso, o Shinken tificações. Ele também decide
Ethan Galstad, estava assumindo usa múltiplos processos, e cada um quando uma falha deve disparar
outras tarefas que poderiam com- deles executa apenas uma parte do um alarme e quais dependências
prometer ainda mais o seu tempo. trabalho. Esta abordagem melhora devem ser levadas em conside-
Ao mesmo tempo, os sistemas o desempenho e permite que várias ração. No entanto, o Scheduler
de monitoramento alternativos partes do sistema completem suas ta- não é responsável pela execução
tornaram-se mais competitivos ao refas sem que uma atrapalhe a outra. do serviço ou pela checagem
longo dos anos. Outras ferramentas Um sistema Shinken inclui cinco do host, dos manipuladores de
de código aberto, como o Zabbix processos (figura 1): eventos e scripts de notificação
e o OpenNMS, estão começando rbiter (árbitro): o Arbiter é
A – os processos satélites (Pollers e
a se destacar no segmento corpo- o processo mais importante e Reactionners) cuidam da execu-
rativo, com suas ativas equipes de é executado por último. Ele ção. O Scheduler simplesmente
desenvolvimento e, por serem mais analisa e valida os arquivos de adiciona tarefas para as filas que
novos, estes sistemas alternativos configuração. Após completar a os satélites analisam e processam
oferecem maior suporte às lingua- configuração e converter o que a cada segundo. Os resultados são
gens de programação modernas e foi encontrado em uma represen- colocados em outra fila, que é
a ambientes distribuídos. tação interna (na forma de obje- então analisada pelo Scheduler.
Jean Gabès respondeu a estes tos Python), o Arbiter também Poller: os Pollers fazem todo o
desafios lançando o Shinken, uma pode realizar uma etapa exclusiva trabalho pesado. Eles captam ta-
nova implementação do Nagios na do Shinken: se o usuário tiver refas atribuídas pelo Scheduler
linguagem Python. No final de 2009, definido vários Schedulers (agen- (checagem de serviços e hosts)
Gabès lançou uma versão inicial do dadores), o Arbiter fragmenta a e se certificam de que um con-
Shinken e ousadamente convidou configuração em uma série de junto de processos esteja execu-
desenvolvedores para se dedicarem segmentos, denominados packs, tando-as. Os resultados, códigos
a desenvolver uma futura versão 4 do e os distribui uniformemente pe- de saída e plugins de saída são
Nagios baseada no Shinken. los Schedulers. Uma “Shinken” devolvidos ao Scheduler uma
De acordo com Gabès, o Shinken é uma espada japonesa afiada, e vez por segundo para avaliação.
foi projetado para resolver alguns foi desse processo de segmenta- Diferentemente do Nagios, os
problemas do Nagios: ção que o autor Jean Gabès teve resultados da checagem não
falta de suporte adequado a a idéia para o nome. são arquivos. A comunicação
grandes ambientes e técnicas Scheduler (agendador): o Sche- ocorre somente na memória.
corporativas contemporâneas, duler é responsável por registrar Um Scheduler pode lidar com
como clustering; o status dos hosts e serviços que qualquer número de Pollers, por
o código base do Nagios, feito
em C e com dez anos de ida-
de, apresenta limitações para se Listagem 1: Balanceamento de Carga
adaptar à rápida evolução das
redes atuais. 01 define poller{
02 poller_name poller-All-1
O objetivo do Shinken é propor- 03 address shinken1.muc
cionar um novo modelo distribuído 04 port 7771
de múltiplos processos que se adap- 05 realm All
te bem a ambientes heterogêneos e 06 }
distribuídos. 07 define poller{
08 poller_name poller-All-2
Arquitetura 09 address shinken2.muc
Em contraste com o Nagios, o 10 port 7771
Shinken não depende de uma abor- 11 realm All
dagem no estilo três-em-um, que usa 12 }
42 http://www.linuxmagazine.com.br
Monitoramento de Redes | CAPA
cada Scheduler tem que lidar com ciso desativar algumas verificações aos Pollers para que eles verifiquem
aproximadamente o mesmo número ativas. O Shinken, no entanto, dis- hosts localmente (figura 3). Em ter-
de serviços. seca automaticamente uma única mos concretos, isso significa que uma
configuração do Nagios e a distribui empresa brasileira poderia usar um
Daemons Listagem 3: Gerador de configuração
de reposição
Daemons de reposição podem impe- 01 use Monitoring::Generator::TestConfig;
dir que o sistema tenha problemas no 02 my $mgt = Monitoring::Generator::TestConfig->new(
caso de uma falha. Nenhuma tarefa é 03 ‘output_dir’ => ‘/tmp/shinken_test’,
atribuída a um daemon de reposição 04 layout => ‘shinken’,
quando ele é iniciado, mas se um pro- 05 binary => ‘/usr/local/nagios/bin/nagios’,
cesso ativo falhar, o processo de repo- 06 overwrite_dir => 1,
sição entra em cena para substituí-lo. 07 hostcount => 10, # livre escolha
Esse mecanismo está disponível para 08 routercount => 1, # livre escolha
qualquer tipo de daemon. A listagem 09 services_per_host => 10, # livre escolha
2 mostra um exemplo. 10 host_settings => {
Um processo Poller chamado pol- 11 check_period => ‘24x7’,
ler-All-1 é executado no nó Shinken1 12 },
e executa plugins continuamente. 13 service_settings => {
Se esse processo ou todo o servidor 14 check_interval => 5,
Shinken1 (que é o mais provável) 15 retry_interval => 1,
travarem, o Arbiter detecta o inci- 16 },
dente. Então, ele envia um pedido 17 # Somente se for usado um usuário separado para o Shinken.
de ajuda ao Poller no nó Shinken9. 18 # Caso contrário, é o usuário atual.
O Poller, por sua vez, busca o Sche- 19 ‘main_cfg’ => {
duler responsável pelo nó, toma as 20 ‘nagios_user’ => ‘shinken’,
tarefas do Scheduler e as executa, 21 ‘nagios_group’ => ‘shinken’,
retornando os resultados para a fila 22 },
de resultado do Scheduler. 23 );
Do ponto de vista do Scheduler, 24 $mgt->create();
basicamente, nada mudou. Na verda-
de, não importa ao Scheduler quem
irá tomar as tarefas de checagem e
Árbitro
retornar os resultados. Nagios
cfg Broker global
Domínios “EU”
O Shinken permite a organização do cfg-1
“EU” Realm “US” “US” Realm
Scheduler, do Poller, do Reaction- cfg-2
ner e do Broker em um grupo lógico
conhecido como realm (domínio). EU
EU Reactionner US Reactionner
Se o atributo opcional realm for de- Agendador
44 http://www.linuxmagazine.com.br
VirtualBox | CAPA
Quadro 1: Fundações
Por ser feito em Python, o Shinken pode ser executado em qualquer sistema que possua uma implementação do
Python: isso inclui o Windows, o que significa que o Shinken poderia ser executado no sistema operacional da Micro-
soft sem necessidade de portabilidade. Para as pequenas empresas que desejem empregar o monitoramento de códi-
go aberto, mas não possuem o know-how em Unix necessário, este recurso definitivamente é interessante.
Essa portabilidade também se aplica a ambientes e cenários maiores, onde parte da infraestrutura de monitoramento
poderá ser baseada em Windows. Por exemplo, é possível atribuir todos os seus clientes Windows a um realm windo-
ws e instalar um Scheduler e Pollers separados.Todos os controles do Windows serão então executados em Windows
pollers dedicados.
mon; será preciso personalizar algu- o Broker (listagem 5) de modo que será possível ler as informações que os
mas das configurações (listagem 4). pelo menos dois módulos existam. processos individuais enviam quando
Os arquivos de configuração do Um é simplesmente um arquivo estão sendo executados.
daemon compartilham os parâmetros de log em um estilo similar ao do Como mencionado anteriormente,
workdir, pidfile, port, host@, ``user, Nagios.Também faz sentido usar é possível usar os CGIs pertencen-
group e idontcareaboutsecurity. Esses o módulo tipo status_dat. Ele cria tes a uma instalação já existente do
parâmetros são auto-explicativos e os arquivos objects.cache e status. Nagios para adicionar uma interfa-
definem onde reside o arquivo PID, dat necessários para verificar a ins- ce web para a instância do Shinken
em que porta e em qual endereço tância ativa do Shinken a partir da que acabou de ser iniciada. Para isso,
IP o daemon escuta, e a conta do interface web de uma instalação e basta definir o parâmetro main_con-
usuário para o daemon. O último uma instalação do Nagios. fig_file no arquivo /usr/local/na-
parâmetro, idontcareaboutsecuri- gios/cgi.cfg com o valor /etc/tmp/
ty, só é significativo se o servidor Pronto para a batalha shinken_test/nagios.cfg.
estiver sendo executado como root. Depois de temrinar a preparação, você Outra possibilidade é configurar
Normalmente, isso não é permitido, já pode iniciar o sistema Shinken. o Broker para gravar em um banco
mas se houver uma boa razão para Para isso, entre no diretório /tmp/ de dados usando o módulo do Mer-
fazê-lo, será necessário definir esse shinken_test/Shinken/src e execute os lin DB para o MySQL. O banco
parâmetro como yes. comandos mostrados na listagem 6 su- de dados Merlin também é a base
cessivamente. O parâmetro -d executa para a interface web Ninja [3]. Esta
Configuração os programas em segundo plano. Se
você quiser saber o que está aconte-
configuração também oferece uma
máquina virtual, embora seja um
do Broker cendo, é possível deixar esse parâmetro pouco antiquada.
O caminho a partir da qual os módulos de fora e executar cada processo em Saber mais sobre o Shinken, visite
de processamento individual são car- uma janela separada. Ao fazer isso, o site [4]. n
regados é importante para o Broker.
Para definir esse caminho, é preciso
definir o argumento modulespath com o O autor
caminho correspondente no diretório Gerhard Lausser é responsável por monitoramento na empresa ConSol com sede em Munique,
Alemanha. Publicou um guia prático do Nagios, assim como muitos plugins. Gerhard usa Linux há
de teste. Neste exemplo, o caminho é mais de 15 anos e se considera um evangelizador do código aberto. Em seu tempo livre, pratica
/tmp/shinken_test/src/modules/. Krav Maga e ajuda a desenvolver o Shinken.Gerhard Lausser. Gerhard Lausser trabalha na Con-
Vale a pena investigar o arquivo Sol em Munique, Alemanha. Ele instalou sua primeira versão do Linux em 1992 com uma pilha de
disquetes. Seu envolvimento com o Nagios começou em 2003, quando gerenciou uma grande im-
shinken-specifig.cfg neste momento. plantação de Linux numa fabricante de automóveis.
Este arquivo contém todos os compo-
nentes para a instalação do Shinken
e é usado principalmente pelo Arbi- Gostou do artigo?
ter com a finalidade de monitorar o Queremos ouvir sua opinião. Fale conosco em
sistema e controlar remotamente os cartas@linuxmagazine.com.br
seus membros. Este artigo no nosso site:
Antes de iniciar o Shinken pela http://lnm.com.br/article/3522
primeira vez, é preciso configurar