domingo, 17 de novembro de 2019

Monit - Monitoração pró-ativa de processos e serviços

Bom dia pessoal, tudo bem?

Recentemente conheci uma excelente ferramenta para nosso dia-a-dia. Além de ter a função de monitoração essa ferramenta também possui por assim dizer uma automação por asssim dizer para restabelecimento de serviços dentro do SO.

A ferramenta em questão é o Monit.



Resumindo o escopo dela: Monitoração pró-ativa de processos e programas.

Nos dias de hoje, sabemos o quanto as empresas valorizam e cobram cada vez mais por ambientes com mais autonomia, procedimentos automatizados e claro, monitoração efetiva.

Agora vamos ao procedimento de instalação e alguns exemplos de monitoração e ação de correção com o Monit.

Instalação

Para distribuições baseadas em RedHat o pacote pode ser instalado através do repo EPEL:

# yum install epel-release
# yum install monit

Para distribuições baseadas em Debian, basta apenas instalar:

# apt-get install monit

Em meu lab estou utilizando o CentOS 7, com isso vou passar os passados para utilizar essa distro.

Iniciando e habilitando o serviço do Monit

# systemctl start monit
# systemctl enable monit

O arquivo de configuração do Monit encontra-se no path abaixo:

/etc/monitrc

Cenário de testes

Para fazermos os testes e demonstrar as funcionalidades, eu criei uma máquina virtual com CentOS 7 e os seguintes serviços instalados:

- WebServer Apache: Serviço respondendo na porta padrão http - tcp/80
- Banco de Dados MariaDB: Serviço respondendo na porta padrão também tcp/3306

Obs.: Ambos os serviços estão apenas instalados e iniciados, sem nenhuma configuração.

O segundo servidor também com CentOS 7 e apenas com o serviço do Monit instalado.
- Monit: Ferramenta de monitoração pró-ativa respondendo na porta 2812

Endereços IP

Monit: 10.0.0.5
App: 10.0.0.4

Exemplo de monitoração com Monit

Abaixo está a sintaxe que deve ser utilizada para monitorar processos em servidores remotos. Para o funcionamento sem a necessidade de autenticação, eu criei chaves ssh para que o servidor do Monit possa chegar no servidor de Aplicação sem necessidade de passar autenticação.

check host host.domain.name with address ip.addy.here.ip
start program = "/usr/bin/ssh user@ipaddress /etc/init.d/servico start"
stop program = "/usr/bin/ssh user@ipaddress /etc/init.d/servico stop"
if failed port 6757
then restart


No exemplo a primeira linha devemos cadastrar o nome FQDN do servidor e seu respectivo IP, as duas linhas seguintes responsáveis pelo comando de start e stop da aplicação/processo que será monitorado e em caso de falha a ação de restart.

Vale uma observação quanto a monitoração do processo SSH de forma remota, caso o serviço fique indisponível seja por queda ou por algum bloqueio no servidor destino o Monit não conseguirá intervir para tentar fazer o start do serviço, mas pode servir para alarmar e notificar. OK?

Uma dica...

Ao informarmos o hostname do servidor no formato FQDN, caso não utizemos tudo por DNS podemos criar entradas na configuração do Monit contendo o nome do servidor + o serviço ao qual estamos monitorando.

Exemplo:

server-app1-apache
server-db01-mongodb

Assim teremos uma view mais rápida e fácil de qual serviço corresponde a monitoração.

Segue o trecho de configuração do arquivo monitrc com as entradas criadas para monitorar o Apache e o MariaDB:



Na console Web do Monit, fica assim:



Caso o serviço/processo monitorado fique indisponível, o Monit tentará fazer o start novamente utilizando o comando inserido na configuração.

No próprio arquivo de configuração temos algumas linhas com exemplo de configuração, no site do Monit também... isso ajuda muito pois podemos ter variações de configuração dependendo da versão.

Site do Projeto para quem queira conhecer mais: https://mmonit.com/monit/

Até a próxima.
:wq!







Nenhum comentário:

Postar um comentário