Como um profissional de TI, você já ouviu o termo “Alta Disponibilidade”, ele já fala por si: disponibilidade de um recurso/serviço o tempo todo, sem falhas. Há métodos diferentes para implementar “Alta Disponibilidade”, alguns conhecidos e muito usados, outros nem tanto, mas sempre presentes em manuais, textos, palestras e etcs no nosso vasto universo de TI: Failover clustering / Database mirroring / Log shipping / Replication no MS SQL Server, Master – Slave no MySQL, Mongo, etc . Sem falar nas que vem com o próprio DB, enfim, é nome e acrônimos para todos os gostos e bolsos…
As técnicas são válidas e uteis, mas e quanto ao Monitoramento do(s) seu(s) servidor(es), serviço(s) e app(s) ?
Infelizmente ainda é comum nos depararmos com ambientes de produção, homologação e testes em que não há nenhum tipo de monitoramento… In god we trust!
A idéia deste post e mostrar para você o que pode ser monitorado no servidor Mongo com o Nagios, Instalar o Plugin necessário para fazer esta monitoração, explanar sobre o Nagios e ajuda-lo a ampliar seus horizontes quanto ao ambiente de TI e claro, facilitar seu papo com a equipe de infra 🙂
Em futuros posts pretendo passar os passos para instalar e configurar o Nagios server , hoje vamos mostrar como monitorar seu servidor MongoDB que já tem o NRPE instalado em um ambiente que já possui instalado e configurado um servidor Nagios, em funcionamento.
Se você é Devops e não quer aguardar os futuros posts de como instalar e configurar o Nagios ou NRPE, go ahead young Padawan and have fun 😉
O que é Nagios?
Nagios é o sistema líder do segmento de monitoramento presente desde 2000 e ele pode monitorar praticamente tudo em uma máquina: Status do sistema, espaço no disco, uso da memória, uso da CPU, URLs, etc.
O Nagios possui duas versões: Free e uma versão Comercial. A versão de código aberto (free) é mais do que suficiente e amplamente usada e diversos tipos de ambientes. O Nagios usa diferentes estratégias (processos) para monitorar, porém o mais usado é o NRPE (Nagios Remote Plugin Executer). Como o nome sugere, ele manterá determinados plugins nas máquinas remotas, que enviarão os dados para o ouvinte NRPE localizado no servidor Nagios, mas não se preocupe, farei um post sobre o Nagios.
Há diversos plugins disponíveis como check_disk, check_load, check_ssh etc, que são usados para monitorar os recursos e você pode configurar alerta / alertas críticos para interrupção de recursos, etc.
Basicamente os Plugins são scripts com instruções e parâmetros que serão usados para fazer a monitoração, estão instalados no Nagios server e devem ser instalados no servidor que será monitorado, ou seja, do Mongo. No link ao lado você pode ver mais sobre Plugins Nagios
Uma visão típica de um servidor de mongo no painel Nagios parece assim:
Também existem outras maneiras no Mongo para monitorar seu status e também podem ajudar. (Leia sobre isso aqui)
Hmm, mas a idéia aqui não era esse tal Nagios e seus Plugins?
SIM, e lembre-se: entende-se que você esta em um ambiente já monitorado com Nagios e te passarei os passos para fazer no servidor Mongo que deverá ser monitorado pelo Nagios.
Como funciona ?
Não há nenhum plugin NRPE nativo no Nagios disponível para verificar o Serviço Mongo…
Mas estamos na esfera open source da TI e temos comunidades ativas e engajadas!
Existe um plugin para p Mongo chamado check_mongodb, esta escrito em Python e seu repositório no GitHub é: https://github.com/mzupan/nagios-plugin-mongodb
Como sempre, vale leitura de todo material no GitHub antes de iniciar a brincandeira 😉
Apos a leitura, e feito os passos de clone download, simbora!
OBS.: você deve ser root no servidor!
Passos: – No servidor Nagios:
1- Copie o arquivo check_mongodb.py para pasta /usr/local/nagios/libexec;
2 – Vá na pasta /usr/local/nagios/etc/objects;
3 – Edite o arquivo commands.cfg adicionado a seguinte linha:
define command { command_name check_mongodb command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ }
Estes são os argumentos para uma monitoração “básica”, salve e feche.
Ainda dentro de /usr/local/nagios/etc/objects, abra o .cfg que é usado para monitorar servidores Linux e coloque:
define service { use generic-service hostgroup_name Mongo Servers service_description Mongo Connect Check check_command check_mongodb!connect!27017!2!4 }
Você pode também criar um novo .cfg, mas isso é papo para outro post falando mais a fundo sobre Nagios.
Se tudo estiver ok, você verá algo assim:
Agora que a brincadeira começou…
Neste mesmo plugin temos as ferramentas necessárias para fazer check de praticamente todos serviços Mongo através de vários checks – leia isso antes – alguns exemplos:
- Porcentagem de Conexões Abertas
- Atraso da replicação
- Porcentagem de desvio de replicação
- Uso da memória
- Uso da memória mapeada
- Tempo médio de descarga
- Status do conjunto de réplicas do MongoDB (replica set)
- Tamanho de um banco de dados
- Verificar o servidor principal do conjunto de réplicas
- Verificar conexão primária
- Verificar a conexão
Por hora é só e este foi um racional de como monitorar seu servidor Mongo. Como já dito, a ideia aqui é te fazer pensar no monitoramento, mostrar que há ferramentas Open Source que lhe atendem e mostrar o lado “infra” da coisa 😉
Até a próxima.