Monitoramento · 5 min read · Oct 17, 2025

Monitoramento de servidor com Munin e Monit no CentOS 7 - Página 2

5 Instalar e Configurar Monit

Em seguida, vamos instalar o Monit:

yum install monit

Então, criamos os links de inicialização do sistema para o monit:

systemctl enable monit  
systemctl start monit

O arquivo de configuração padrão do Monit é /etc/monitrc onde você pode encontrar alguns exemplos de configuração (você pode encontrar mais exemplos de configuração em http://mmonit.com/wiki/Monit/ConfigurationExamples) que estão todos comentados, mas ele informa ao monit para também procurar no diretório /etc/monit.d por arquivos de configuração.

Neste caso, eu quero monitorar:

  • proftpd
  • sshd
  • mysql
  • apache
  • postfix

Além disso, vou configurar estas definições para o Monit:

  • Ativar a interface web do Monit na porta 2812.
  • Usar HTTPS para a interface web em vez de HTTP.
  • Configurar um Login protegido por senha para a interface web.
  • O Monit deve enviar alertas por e-mail para root@localhost

Primeiro, vou configurar as definições de autenticação. Abra o arquivo /etc/monit.d/monitrc

nano /etc/monit.d/monitrc

E role para baixo até encontrar esta seção:

set httpd port 2812 and  
   use address localhost # apenas aceita conexão de localhost  
   allow localhost # permite que localhost se conecte ao servidor e  
   allow admin:monit # requer usuário 'admin' com senha 'monit'  
   allow @monit # permite que usuários do grupo 'monit' se conectem (rw)  
   allow @users readonly # permite que usuários do grupo 'users' se conectem somente leitura

Substitua por estas configurações:

set httpd port 2812 and  
   use address 0.0.0.0  
   SSL ENABLE  
   PEMFILE /var/certs/monit.pem  
   allow admin:test

A palavra “test” é a senha, por favor, substitua isso por uma senha segura e você também pode querer mudar o nome de usuário “admin” para um nome que não possa ser facilmente adivinhado.

Agora adicionamos a configuração para os serviços monitorados. Em vez de modificar /etc/monitrc, criamos um novo arquivo de configuração /etc/monit.d/monitrc.

Meu arquivo se parece com isto:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
  
# Enviar e-mails através deste servidor de e-mail  
set mailserver localhost
  
# Definir o endereço De dos e-mails de alerta  
set mail-format { from: [email protected] }
  
# Enviar alertas para este endereço  
set alert root@localhost
  
# Monitorar o serviço Proftpd
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
   start program = "/usr/bin/systemctl start proftpd"
   stop program  = "/usr/bin/systemctl stop proftpd"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitorar o serviço SSH
check process sshd with pidfile /var/run/sshd.pid
   start program  "/usr/bin/systemctl start sshd"
   stop program  "/usr/bin/systemctl stop sshd"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitorar MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/usr/bin/systemctl start mysqld"
   stop program = "/usr/bin/systemctl stop mysqld"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout
  
# Monitorar o servidor web apache
check process apache with pidfile /var/run/httpd/httpd.pid
   group www
   start program = "/usr/bin/systemctl start httpd"
   stop program  = "/usr/bin/systemctl stop httpd"
   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart
   if cpu is greater than 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart
   if totalmem > 500 MB for 5 cycles then restart
   if children > 250 then restart
   if loadavg(5min) greater than 10 for 8 cycles then stop
   if 3 restarts within 5 cycles then timeout
  
# Monitorar servidor de e-mail postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/usr/bin/systemctl start postfix"
   stop  program = "/usr/bin/systemctl stop postfix"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

(Por favor, certifique-se de que você verifica processos que realmente existem em seu servidor - caso contrário, o monit não iniciará. Ou seja, se você disser ao monit para verificar o Postfix, mas o Postfix não estiver instalado no sistema, o monit não iniciará.)

O arquivo de configuração é bastante autoexplicativo; se você não tiver certeza sobre uma opção, dê uma olhada na documentação do monit: http://mmonit.com/monit/documentation/monit.html

Na parte do apache da configuração do Monit você encontra isto:

   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart

que significa que o monit tenta se conectar ao localhost na porta 80 e tenta acessar o arquivo /monit_token que é /var/www/html/monit_token porque a raiz do documento do nosso site é /var/www/html. Se o Monit não tiver sucesso, isso significa que o Apache não está em execução, e o Monit irá reiniciá-lo. Agora devemos criar o arquivo /var/www/html/monit_token e escrever alguma string aleatória nele:

touch /var/www/html/monit_token

Em seguida, criamos o cert pem ( /var/certs/monit.pem) que precisamos para a interface web do Monit criptografada em SSL:

mkdir /var/certs  
cd /var/certs

Precisamos de um arquivo de configuração OpenSSL para criar nosso certificado. Ele pode se parecer com isto:

nano /var/certs/monit.cnf
# criar certificados RSA - Servidor

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Nome do País (código de 2 letras)
countryName_default = MO

stateOrProvinceName             = Nome do Estado ou Província (nome completo)
stateOrProvinceName_default     = Monitoria

localityName                    = Nome da Localidade (por exemplo, cidade)
localityName_default            = Monittown

organizationName                = Nome da Organização (por exemplo, empresa)
organizationName_default        = Monit Inc.

organizationalUnitName          = Nome da Unidade Organizacional (por exemplo, seção)
organizationalUnitName_default  = Dept. de Tecnologias de Monitoramento

commonName                      = Nome Comum (FQDN do seu servidor)
commonName_default              = server.monit.mo

emailAddress                    = Endereço de E-mail
emailAddress_default            = [email protected]

[ cert_type ]
nsCertType = server

Agora criamos o certificado assim:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Finalmente, podemos iniciar o monit:

systemctl restart monit

Agora aponte seu navegador para https://www.example.com:2812/ (certifique-se de que a porta 2812 não está bloqueada pelo seu firewall), faça login com admin e test, e você deve ver a interface web do Monit. Deve se parecer com isto:

Tela principal do Monit.

(Tela Principal)

Detalhes do apache do Monit.

(Página de Status do Apache)

Dependendo da sua configuração em /etc/monit.d/monitrc, o Monit irá reiniciar seus serviços se eles falharem e enviar e-mails de notificação se os IDs de processo dos serviços mudarem, etc.

6 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.