Texto escrito por Pedro Henrique Pereira. Pubicado originalmente em jun/2016.
O Monit, como o seu nome diz, é uma ferramenta de monitoramento de processos e recursos de um servidor Linux.
Nele pode ser configurado diretivas para monitorar o estado de processos do sistema (Ex: Nginx), e realizar determinadas ações caso ele esteja utilizando uma quantidade grande de recursos do servidor, ou outro tipo de condição. Além de processo, também é possível com esta ferramenta monitorar diretamente a utilização dos recursos de um servidor (Filesystem, Memória, CPU) como um todo, e enviar alertas por email caso eles atinjam um determinado limite superior pré-configurado.
Sua instalação é muito simples, pois ele é facilmente encontrado nos gerenciadores de repositório da maioria das Distros Linux, e as diretivas de configuração são bem intuitivas.
Instalação:
Em servidores Ubuntu ou Debian:
$ sudo apt-get install monit
Em servidores CentOS ou RHEL:
$ yum install monit -y
Em servidores OpenSUSE:
$ zypper install monit
Inicialização:
O instalador do Monit cria um script de inicialização no sistema para o mesmo, e dependendo do servidor ele pode utilizar o upstart ou o systemd:
Initscript upstart:
$ service monit (start|stop|restart|status)
Initscript systemd:
$ systemctl (start|stop|restart|status) monit.service
Configuração
Após a instalação, o arquivo principal de configuração do Monit fica localizado em /etc/monit/monitrc, ele já possui vários valores definidos como default, e comentários com exemplos de diretivas para monitorar recursos e processos.
Exemplo de algumas diretivas básicas de configuração:
##
# Regra para inicializar o Monit como um daemon (processo background), e o tempo em segundos, de um ciclo de monitoramento.
#
set daemon 60 # check services at 1-minute intervals
##
# Regra para definir o caminho do arquivo de log do monit
#
set logfile /var/log/monit.log
##
# Regra de include de outros arquivos de configuração do Monit. Vamos os arquivos da pasta indicada nesta regra para definir
# as diretivas de monitoramento de recursos e processos do servidor.
#
include /etc/monit/conf.d/*
A última linha da configuração básica do exemplo acima define uma regra de inclusão dos arquivos de configuração em /etc/monit/config.d, e é nessa pasta onde vamos incluir mais exemplos de configuração para enviar alertas, subir a aplicação Web de gestão, monitorar recursos do sistema e processos.
Este exemplo define as configurações para a conexão com um mailserver utilizando o protocolo SMTP, para o envio de alertas:
##
# Regra para definir o servidor de envio de email. Neste exemplo é mostrado a configuração do envio através de uma conta
# em um servidor SMTP, por login e senha, usando encriptação TLSv1
#
set mailserver smtp.gmail.com
port 587
username "no-reply@wkm.com.br"
password "####"
using tlsv1
## Regra para redefinir o formato do email enviado:
## Monit by default uses the following format for alerts if the the mail-format
## statement is missing::
## --8<--
## set mail-format {
## from: monit@$HOST
## subject: monit alert -- $EVENT $SERVICE
## message: $EVENT Service $SERVICE
## Date: $DATE
## Action: $ACTION
## Host: $HOST
## Description: $DESCRIPTION
##
## Your faithful employee,
## Monit
## }
## --8<--
##
# Definição de contas de usuário que irão receber os emails de alerta do Monit
#
set alert pjesus@wkm.com.br
O Monit também pode subir uma aplicação Web para a visualização dos processos e recursos que estão sendo monitorados, e para executar ações sobre os mesmos.
Podemos configurar a porta de acesso, Whitelist de IPs que podem acessar a aplicação, e login e senha para autenticação HTTP, como é mostrado no exemplo abaixo:
set httpd port 2815 and # Porta TCP da aplicação Web.
use address endereco.wkm.com.br # Regra que define um hostname para a aplicação
allow 1.1.1.1 # Regra para permitir acesso apenas dos IPs especificados.
allow 2.2.2.2 # //
allow login:senha # Regra para definir login e senha para autenticação HTTP básica.
Para monitorar a utilização dos recursos do servidor, como memória, CPU e disco, vamos definir as seguintes diretivas:
##
# Realiza o monitoramento de recursos gerais do sistema, como memória, CPU, e carga do sistema (load)
# Este exemplo mostra uma checagem simples de uso de memória e CPU
# A documentação completa do monitoramento do filesystem pode ser encontrada na página de documentação do Monit,
# Com o link localizado ao final deste artigo
#
check system [nome_do_sistema]
if memory usage > 90% for 3 cycles then alert
if cpu usage (system) > 50% for 3 cycles then alert
##
# Realiza o monitoramento de permissões para usuários e grupos, espaço e inodes utilizados
# Este exemplo mostra apenas uma checagem simples de espaço em disco, no disco localizado em /dev/xvda1
# A documentação completa do monitoramento do filesystem pode ser encontrada na página de documentação do Monit,
# Com o link localizado ao final deste artigo
#
check filesystem [nome_do_filesystem] with path /dev/xvda1
if space usage > 90% for 3 cycles then alert
Através do arquivo de PID, o Monit pode monitorar qualquer processo em execução no servidor.
Nesta configuração podemos definir regras de limite de utilização de recursos, validar o acesso a aplicação através de sua porta TCP ou socket, e executar determinadas ações, como restart e alert.
No exemplo abaixo está configurado o monitoramento de uma instância do servidor de banco de dados MySQL:
##
# OBS: as regras "cycles", representam o intervalo de tempo que o Monit realiza a checagem das diretivas. O valor de um cycle
# é definido no monitrc, e, no caso deste exemplo, está definido como 60 segundos.
#
check process mysql # Nome do processo (mysql)
with pidfile /var/run/mysqld/mysqld.pid # Caminho do PIDfile do processo
start program = "/usr/sbin/service mysql start" # Comando para iniciar o processo (aqui é necessario utilizar o caminho absoluto para executar qualquer programa pois o PATH não é definido)
stop program = "/usr/sbin/service mysql stop" # Comando para parar o processo (aqui é necessario utilizar o caminho absoluto para executar qualquer programa pois o PATH não é definido)
if failed host 127.0.0.1 port 3306 then restart # Monitoramento do acesso à porta TCP 3306 (do MySQL), se esse teste falhar, o Monit reinicia o processo (restart)
if totalmem > 500.0 MB for 5 cycles then restart # Monitoramento da memória utilizada pelo MySQL; se for maior que 500 MB, durante 5 ciclos, o Monit reinicia o processo (restart)
if cpu usage > 90% for 3 cycles then alert # Monitoramento da CPU utilizada pelo MySQL; se for maior que 90%, durante 3 ciclos, o Monit envia um alerta por email (alert)
if 5 restarts within 5 cycles then timeout # Se o Monit reiniciar este processo 5 vezes em um intervalo de 5 ciclos, o Monit para o monitoramento deste processo
Após definir todas as configurações, basta agora reiniciar o processo do Monit utilizando seu initscript, e para verificar que está funcionando, acesse a aplicação Web dele configurada neste artigo para a porta 2815:
Referências:
Página Principal do Monit: https://mmonit.com/monit/?source=post_page—–5e688e3d48a2——————————–
Documentação completa: https://mmonit.com/monit/documentation/monit.html?source=post_page—–5e688e3d48a2——————————–
Quer conhecer mais sobre soluções digitais inovadoras?
Acesse: http://www.wkm.com.br