Monitoração Distribuída com Nagios e Gearman
Como funciona? Nagios Mod Gearman - NEB Gearman Server Checagens de Hosts Checagens de Serviços Event Handlers Resultados Gearman ( * ) (Event Handlers) (Hostgroup Linux)
Como funciona? Nagios Mod Gearman - NEB Gearman Server Checagens de Hosts Checagens de Serviços Event Handlers Resultados Gearman ( * ) (Event Handlers) (Hostgroup Linux)
Realidade dos Ambientes de TI Grande complexidade na Infraestrutura Serviços críticos Necessidade de alta disponibilidade Monitoração precisa e em tempo-real sobre a saúde do ambiente
Problema Quanto maior a infraestrutura, mais serviços serão monitorados. Quanto mais serviços monitorados, problemas de performance e escalabilidade surgem. Necessidade de implementar algum tipo de solução de cluster. Diferentes soluções possíveis
Checagens Passivas x Ativas Prós Monitoração de serviços de natureza assíncrona como Traps SNMP, alertas de segurança, etc. Checagem de serviços em redes remotas. Contras Configuração individual para cada serviço passivo. Necessidade de processos externos ( cron ). Falsos positivos.
NSCA Prós Monitoração distribuída. Centralização de informações. Contras Configuração descentralizada e complexa. Manutenção complicada.
DNX Prós Proposta de distribuir checagens em diferentes servidores. Redução significativa de carga do servidor de monitoração. Contras Muitas instabilidades Processo evolutivo lento
Diferentes propostas Não possuem a flexibilidade necessária Não atingem os objetivos esperados
O que é Gearman Framework simples para distribuição de tarefas Flexível Rápido API multi-linguagem http://www.gearman.org
Estrutura de funcionamento Client API C, Perl, PHP, C#, Python Gearman Job Server
Nagios + Gearman Prós Checagens distribuídas em diferentes servidores. Consumo reduzido de recursos. Configuração mínima. Transparência na adição de novos nodos. Segurança no transporte de informações. Redundância / Failover. Distribuição de qualquer tipo de processamento. Contras???
Mod_Gearman Composto em três partes: Nagios Event Broker Agentes de checagem ( s ) Servidor de Tarefas ( Gearman Job Server ) Versão atual: 1.0.3 http://labs.consol.de/lang/de/nagios/mod-gearman/
Como funciona? Nagios
Como funciona? Nagios Mod Gearman - NEB
Como funciona? Nagios Mod Gearman - NEB Gearman Server Checagens de Hosts Checagens de Serviços Event Handlers
Como funciona? Nagios Mod Gearman - NEB Gearman Server Checagens de Hosts Checagens de Serviços Event Handlers Gearman ( * ) (Event Handlers) (Hostgroup Linux)
Como funciona? Nagios Mod Gearman - NEB Gearman Server Checagens de Hosts Checagens de Serviços Event Handlers Resultados Gearman ( * ) (Event Handlers) (Hostgroup Linux)
Cenário I Balanceamento de Carga Hosts Serviços Event Handler Nagios Hosts Serviços Event Handler
Cenário II Monitoração Distribuída Hosts Serviços Event Handler Nagios Hostgroup Linux Hosts Serviços Event Handler
Cenário III Monitoração Distribuída e Balanceamento de Carga Hosts Serviços Event Handler Hosts Serviços Event Handler Nagios Hostgroup Linux Hostgroup Linux
Cenário IV Substituir NCSA Nagios send_gearman send_gearman send_gearman
Instalação Dependências gcc / g++ autoconf / automake / autoheader libtool libgearman (>= 0.14)
Instalação Download e descompactação root@linux# wget "http://labs.consol.de/wp-content/uploads/2010/09/mod_gearman- 1.0.3.tar.gz" root@linux# tar zxf mod_gearman-1.0.3.tar.gz root@linux# cd mod_gearman-1.0.3
Compilação root@linux#./configure --prefix=/opt withgearman=/path/to/gearman --with-user=nagios with-initdir=/etc/init.d... root@linux# make... root@linux# make install... root@linux# make install-config...
Configurando Nagios nagios.cfg event_broker_options=-1 broker_module=/path/to/mod_gearman.o config=/path/to/mod_gearman.conf
Configurando Mod_Gearman (NEB) Arquivo padrão server=<gearman_server>:4730 eventhandler=yes services=yes hosts=yes encryption=no result_workers=1 debug=0
Configurando Mod_Gearman () Arquivo padrão server=<gearman_server>:4730 eventhandler=yes services=yes hosts=yes encryption=no min-worker=1 max-worker=20 max-jobs=50 debug=0
Finalizando Iniciar Gearman service gearmand start Iniciar s mod_gearman_worker -config=/path/to/mod_gearman_worker.cfg Reiniciar nagios service nagios restart
Verificando instalação root@linux# grep mod_gearman /path/to/nagios.log [1295003042] mod_gearman: Version 1.0.3 [1295003042] Event broker module '/path/to/mod_gearman.o' initialized successfully.
Verificando filas mod_gearman_top +---------------+------------------+--------------+--------------+ Queue Name Available Jobs Waiting Jobs Running +---------------+------------------+--------------+--------------+ check_results 1 0 0 host 20 0 1 service 20 0 13 eventhandler 20 0 0 +---------------+------------------+--------------+--------------+
Verificando Job Server./check_gearman -H localhost -t 20 check_gearman OK - 6 jobs running and 0 jobs waiting. check_results=0;0;1;10;100 host=0;0;9;10;100 service=0;6;9;10;100 Verificando./check_gearman -H <server> -q worker_<worker hostname> -t 10 -s check check_gearman OK - localhost has 10 worker and is working on 1 jobs worker=10 running=1 total_jobs_done=1508
Enviando checagens passivas./send_gearman --server=<job server> --encryption=no --host="<hostname>" --service="<service>" -- message="message"
Dicas 1 worker (no mínimo) para cada fila. Monitorar logs do Gearmand e mod_gearman_worker. Plugins que trabalham direto com o arquivo de comandos do Nagios devem rodar local. Nagios e Gearman Server na mesma máquina para melhor performance. Manter plugins sincronizados entre os workers.
Dicas 1 worker (no mínimo) para cada fila. Monitorar logs do Gearmand e mod_gearman_worker. Plugins que trabalham direto com o arquivo de comandos do Nagios devem rodar local. Nagios e Gearman Server na mesma máquina para melhor performance. Manter plugins sincronizados entre os workers.
Opções comuns server Definição do servidor gearman server=localhost:4730,host1:4730 hosts Habilita/desabilita checagens de hosts hosts=yes services Habilita/desabilita checagens de serviços services=yes hostgroups Hostgroups que irão para uma fila separada hostgroups=rede_mg,rede_rj servicegroups Servicegroups que irão para uma fila separada servicegroups=checagens_web
Opções Mod_Gearman (NEB) localhostgroups Hostgroups que não serão checados via Gearman localhostgroups=grupo1,grupo2 localservicegroups Servicegroups que não serão checados via Gearman localservicegroups=grupo1,grupo2 result_workers Número de workers para processar resultados. result_workers=3
Opções Mod_Gearman () min-worker Número mínimo de processos que irão rodar simultaneamente. max-worker=1 max-worker Número máximo de processos que irão rodar simultaneamente. max-worker=20
Demonstração prática
DÚVIDAS?
OBRIGADO junior.cunha@opservices.com.br