[Cristiano Casado] Nagios aditivado .. run run

Faltam detalhes para colocar uma instalação distribuída de Nagios em ambiente de produção para monitorar a rede e infra-estrutura na Globo.com.  Um destes detalhes está sendo atacado neste momento com bastante critério e paciência: performance.  Uma instalação básica com configurações de “fábrica” do Nagios podem servir bem para ambientes de pequeno e médio porte com 100-200 servidores.  Só que o cenário aqui é bem diferente.  Em ambiente de produção espero ter 1200 servidores sob os “olhares” do Nagios, e desta forma é preciso seguir algumas recomendações que explico em tópicos abaixo:

  • configurar os diretórios dos arquivos de check result (check_result_path) e de status (status_file) como filesystem tmpfs.  No primeiro ocorre intensa operação de escrita/leitura e o arquivo de status é lido pela camada CGI do Nagios.  Armazenar estas informações em ramdisk evita interrupções e I/O de disco.
  • optar por plugins compilados ( C/C++) para executar os checks reduz significativamente o load nos seus servidores Nagios.
  • ao utilizar plugins em perl (muitos deles disponíveis nesta linguagem) compilar o Nagios para utilizar o seu interpretador perl embedded.  A opção para o script de configure é –enable-embedded-perl.
  • otimizar os checks nos hosts utilizando o plugin check_fping ao invés do plugin padrão check_ping.
  • utilizar precache dos objetos de configuração para acelerar a inicialização do sistema com a opção -u do binário nagios.
  • programar checks regulares para hosts é desnecessário, uma vez que o mesmo possuirá serviços relacionados e a falha do check de um dos serviços força um host check sob demanda.  Para isso atribuir o valor 0 na diretiva check_interval no arquivo de definição de hosts.
  • em instalações distribuidas, incrementar o check de external commands na instalação do Nagios central.  Isso faz com que o Nagios verifique comandos externos assim que possível.  A diretiva command_check_interval deve ter o valor -1.
  • verificar sempre a latência nos checks de hosts e services para estabelecer o melhor valor para a concorrência de checks.  Desta forma você poderá controlar o load que o Nagios impõe aos seus hosts monitorados com a diretiva max_concurrent_checks.
  • cuidado ao utilizar módulos (broker module) para exportar dados do Nagios para softwares de terceiros, pois a dependência de operações externas pode ser blocante para a execução de checks no Nagios.
  • o setup de seu hardware influenciará diretamente na performance do sistema de monitoração.  CPU e memória com tecnologia atuais favorecem o sistema, porém o Nagios por natureza de sua arquitetura é I/O intensive.  Evitar sistemas de arquivos lentos ( discos IDE antigos e NFS), optando por discos UltraSCSI ou FastIDE para armazenar plugins, arquivo de status log, etc.

Antes mesmo de aplicar novas configurações é muito importante não abrir mão de backup dos seus arquivos de configuração e também utilizar as métricas que o Nagios oferece para plotar gráficos onde você poderá comparar como o sistema se comporta ao alterar estas configurações.

Para criar os gráficos o Nagios oferece o utilitário nagiostats que oferece um output compatível com o mrtg para contadores importantes do sistema como número de service checks executados em determinada janela de tempo, latência, tempo de execução de service checks, entre outros.

# /usr/bin/nagiostats –mrtg –data=AVGPSVHSTLAT,AVGPSVSVCLAT,PROGRUNTIME,NAGIOSVERPID
950
554
0d 3h 33m 21s
Nagios 3.0.6 (pid=1861)