Este artigo pressupõe que você usará o Ubuntu Server 20.04 ou 24.04.
Motivação
O Monit é uma ferramenta simples e leve para monitorar e gerenciar serviços, processos, arquivos e sistemas de arquivos em seu servidor Linux. Seus recursos proativos o tornam uma ótima opção para automação de servidores. Abaixo estão as etapas detalhadas sobre como instalar, configurar e usar o Monit no servidor Ubuntu 20.04 e 24.04.
Alternativas
O Netdata vem com o WordOps e faz um ótimo trabalho mostrando as estatísticas do seu servidor. Mas ele não tem os recursos de monitoramento proativo que o Monit oferece. Outras ferramentas como Kibana, Zabbix e Nagios também são populares, mas são mais difíceis de configurar e consomem mais recursos do sistema.
Instalar o Monit
Felizmente, o Monit está incluído no repositório do Ubuntu, portanto, vamos instalá-lo:
sudo apt update
sudo apt install monit
Configuração básica
O arquivo de configuração principal do Monit está localizado em /etc/monit/monitrc. Antes de editar, é uma boa ideia criar um backup:
sudo cp /etc/monit/monitrc /etc/monit/monitrc.backup
Por padrão, o Monit verifica os serviços a cada 2 minutos (120 segundos). Você pode modificar esse valor no arquivo editando a linha abaixo. Preferimos que as verificações ocorram a cada 1 minuto:
definir daemon 60
O Monit vem com seu próprio servidor de e-mail, mas como precisamos de algo mais robusto e já configuramos o Sendmail, vamos usá-lo como nosso MTA, apontando a configuração para localhost (esse parâmetro é comentado por padrão, portanto, basta colar acima dele):
definir servidor de correio eletrônico localhost
O formato de correio define todos os aspectos da sua estrutura de e-mail, portanto, você precisará descomentar todas as suas linhas, e a configuração mínima é apenas alterar seu e-mail FROM:
de: Monit <mo************@*****le.com>
Defina um e-mail que receberá todos os alertas da Monit, normalmente seu próprio e-mail comercial:
definir alerta al****@*****le.com
O Monit usa sua interface HTTP incorporada para fornecer uma página de status baseada na Web e para lidar com comandos de linha de comando. Mesmo que não queira ativar a interface da Web, você deve fornecer um bloco de configuração válido e completo para estabelecer um ponto de extremidade e gerenciar adequadamente o Monit.
definir a porta 2812 do httpd e usar o endereço localhost
permitir localhost
allow admin:monit # requer o usuário 'admin' com a senha 'monit'
Para permitir o acesso remoto, altere localhost para o IP ou domínio do servidor apropriado e defina as credenciais de autenticação segura.
Incluir arquivos de configuração adicionais:
Além de seu arquivo de configuração principal, o Monit pode incluir arquivos de configuração adicionais de /etc/monit/conf-enabled/. Adicionaremos vários monitores dentro desse diretório, abrangendo a maioria dos serviços que usamos em nosso servidor, mas vamos começar com o mais importante, a segurança.
Monitorar logins SSH bem-sucedidos
Esse é um primeiro alerta crucial, pois precisamos saber sempre que alguém faz um login bem-sucedido em nosso servidor via SSH. Esse alerta foi fornecido por Shireesh na Elitmus e o nomearemos ssh_logins.conf:
verificar o arquivo ssh_logins com o caminho /var/log/auth.log
ignorar a correspondência "/etc/monit/whitelist_ips.regex"
se corresponder a "Accepted publickey", então alertar
Adicione um IP por linha no arquivo /etc/monit/whitelist_ips.regex ou comente/remova-o se quiser receber todos os alertas.
Monitorar a pilha LEMP
Nome apropriado lemp.conf Esse monitor abrange os recursos de nossos sistemas, como armazenamento, CPU e RAM, NGINX, PHP e MySQL, que, no nosso caso, é o MariaDB. A fórmula para carregarvg é 1,5 * número de núcleos da CPU:
# Verifique o uso do sistema de arquivos no sistema de arquivos raiz
Verifique o sistema de arquivos rootfs com o caminho /
se o uso do espaço > 90%, alertar # Alertar se o uso do espaço em disco exceder 90%
# Verificar as métricas de desempenho do sistema no localhost
verificar sistema localhost
if loadavg (1min) > 6 then alert # Alerta se a média de carga de 1 minuto exceder 6
se loadavg (5min) > 4 then alert # Alerta se a média de carga de 5 minutos exceder 4
se o uso de memória > 90% então alerta # Alerta se o uso de memória exceder 90%
# Alerta se o uso da CPU exceder 80% por 15 verificações consecutivas
se o uso da CPU > 80% por 15 ciclos, então alerta # Uso total da CPU
Se o uso da CPU (usuário) > 70%, alerta # Uso da CPU do usuário
Se o uso da cpu (sistema) > 30%, alertar # Uso da CPU do sistema
se cpu usage (wait) > 20% então alerta # Uso da CPU de espera de E/S
# Verificar o processo do servidor da Web Nginx (HTTPS)
verificar o processo nginx com o arquivo pid /var/run/nginx.pid
start program = "/usr/sbin/service nginx start"
stop program = "/usr/sbin/service nginx stop"
se cpu > 80% por 2 ciclos, então alerta # Alerta se o uso da CPU exceder 80% por 2 verificações consecutivas
se houver falha no host 127.0.0.1 porta 443 protocolo https, reinicie # Reinicie se o Nginx não estiver respondendo em HTTPS
# Verifique o processo do servidor de banco de dados MySQL
Verifique o processo mysqld com o arquivo de pid /var/run/mysqld/mysqld.pid
start program = "/usr/sbin/service mysql start"
stop program = "/usr/sbin/service mysql stop"
se cpu > 80% por 2 ciclos, então alerta # Alerta se o uso da CPU exceder 80% por 2 verificações consecutivas
if failed unixsocket /var/run/mysqld/mysqld.sock then restart # Reinicie o MySQL se o soquete Unix não estiver respondendo
# Verifique o processo PHP-FPM para o PHP 8.3
verificar o processo php8.3-fpm com pidfile /var/run/php/php8.3-fpm.pid
iniciar programa = "/usr/sbin/service php8.3-fpm start"
stop program = "/usr/sbin/service php8.3-fpm stop"
se cpu > 80% por 2 ciclos, então alerta # Alerta se o uso da CPU exceder 80% por 2 verificações consecutivas
Monitorar o Redis
Vamos adicionar o monitoramento do Redis em um arquivo separado, redis.confjá que ele não é crucial para a execução do WordPress e pode ser desativado, se necessário:
# Monitoramento do Redis (usando soquete Unix)
Verifique o processo redis com o arquivo pid /var/run/redis/redis-server.pid
programa de início = "/usr/sbin/service redis-server start"
stop program = "/usr/sbin/service redis-server stop"
# Monitoramento de recursos do processo
se o uso da CPU for maior que 80% por 5 ciclos, então alerta
se o uso da memória for > 75%, então alerta
se crianças > 255 por 5 ciclos, então alerta
grupo redis
# Verifique se há erros no arquivo de registro do Redis
Verifique o arquivo redis_log com o caminho /var/log/redis/redis-server.log
se corresponder a "ERROR", alertar
se corresponder a "CRITICAL", então alerta
grupo redis
Monitor Fail2Ban
Usando a mesma metodologia, vamos adicionar fail2ban.conf:
Verificar o processo fail2ban com o arquivo pid /var/run/fail2ban/fail2ban.pid
serviços de grupo
iniciar programa = "/etc/init.d/fail2ban force-start"
stop program = "/etc/init.d/fail2ban stop"
se houver falha no unixsocket /var/run/fail2ban/fail2ban.sock, reinicie
se houver 5 reinicializações em 5 ciclos, o tempo limite será atingido
verifique o arquivo fail2ban_log com o caminho /var/log/fail2ban.log
se corresponder a "ERROR|WARNING", então alertar
Monitorar o ClamAV
Precisamos saber se o ClamAV, que instalamos anteriormente, encontrou algum vírus ou malware em nosso servidor, portanto, nosso clamav.conf parece isso:
# Observe o arquivo de registro do ClamAV em busca de alterações que indiquem uma detecção
verifique o arquivo clamav_log com o caminho /var/log/clamav/clamav.log
se corresponder a "FOUND", então alertar
Monitorar a integridade de arquivos confidenciais
O Monit pode observar arquivos importantes ou aqueles que provavelmente não devem ser alterados com frequência e nos alerta sempre que isso acontece. Essa atividade é normalmente chamada de "monitoramento da integridade do arquivo", portanto, nosso arquivo conf tem o nome fim.conf e, dentro dele, você pode listar seus arquivos da seguinte forma:
# Monitoramento do arquivo de configuração do WordPress quanto a alterações
Verifique o arquivo wp_config com o caminho /var/www/example.com/wp-config.php
se a soma de verificação for alterada, alertar
Verifique o arquivo whitelist_ips com o caminho /etc/monit/whitelist_ips.regex
se a soma de verificação for alterada, o alerta será emitido
Ativar e iniciar o serviço Monit
Habilite o Monit para iniciar automaticamente na inicialização:
sudo systemctl enable monit
Em seguida, inicie o serviço Monit:
sudo systemctl start monit
Você pode verificar o status do serviço Monit com:
sudo systemctl status monit
Teste da configuração do Monit
Antes de colocar sua configuração do Monit em produção, teste-a:
sudo monit -t
sudo monit reload
sudo monit status
O status de monitoramento listará todos os serviços e processos que estão sendo monitorados atualmente pelo Monit.
Se houver erros de configuração, o Monit os exibirá, e você poderá corrigi-los adequadamente.
Deixe um comentário