Monitoramento · 6 min read · Oct 16, 2025

Monitoramento de Servidores Com munin E monit No Debian Squeeze - Página 2

4 Instalar E Configurar monit

Para instalar o monit, fazemos isso:

apt-get install monit

Agora devemos editar /etc/monit/monitrc. O /etc/monit/monitrc padrão tem muitos exemplos, e você pode encontrar mais exemplos de configuração em http://mmonit.com/monit/documentation/. No entanto, no meu caso, quero monitorar proftpd, sshd, mysql, apache e postfix, quero habilitar a interface web do monit na porta 2812, quero uma interface web https, quero fazer login na interface web com o nome de usuário admin e a senha test, e quero que o monit envie alertas por e-mail para root@localhost, então meu arquivo fica assim (adicionei exemplos para outros daemons à configuração para que você possa ajustar o arquivo às suas necessidades):

cp /etc/monit/monitrc /etc/monit/monitrc_orig  
cat /dev/null > /etc/monit/monitrc  
vi /etc/monit/monitrc

| set daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert root@localhost set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/apache2.pid group www start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed host www.example.com 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 check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout #check process nginx with pidfile /var/run/nginx.pid # start program = "/etc/init.d/nginx start" # stop program = "/etc/init.d/nginx stop" # if failed host 127.0.0.1 port 80 then restart # #check process memcached with pidfile /var/run/memcached.pid # start program = "/etc/init.d/memcached start" # stop program = "/etc/init.d/memcached stop" # if failed host 127.0.0.1 port 11211 then restart # #check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid # start program = "/etc/init.d/pure-ftpd-mysql start" # stop program = "/etc/init.d/pure-ftpd-mysql stop" # if failed port 21 protocol ftp then restart # if 5 restarts within 5 cycles then timeout # #check process named with pidfile /var/run/named/named.pid # start program = "/etc/init.d/bind9 start" # stop program = "/etc/init.d/bind9 stop" # if failed host 127.0.0.1 port 53 type tcp protocol dns then restart # if failed host 127.0.0.1 port 53 type udp protocol dns then restart # if 5 restarts within 5 cycles then timeout # #check process ntpd with pidfile /var/run/ntpd.pid # start program = "/etc/init.d/ntp start" # stop program = "/etc/init.d/ntp stop" # if failed host 127.0.0.1 port 123 type udp then restart # if 5 restarts within 5 cycles then timeout # #check process mailman with pidfile /var/run/mailman/mailman.pid # group mail # start program = "/etc/init.d/mailman start" # stop program = "/etc/init.d/mailman stop" # #check process amavisd with pidfile /var/run/amavis/amavisd.pid # group mail # start program = "/etc/init.d/amavis start" # stop program = "/etc/init.d/amavis stop" # if failed port 10024 protocol smtp then restart # if 5 restarts within 5 cycles then timeout # #check process courier-imap with pidfile /var/run/courier/imapd.pid # group mail # start program = "/etc/init.d/courier-imap start" # stop program = "/etc/init.d/courier-imap stop" # if failed host localhost port 143 type tcp protocol imap then restart # if 5 restarts within 5 cycles then timeout # #check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid # group mail # start program = "/etc/init.d/courier-imap-ssl start" # stop program = "/etc/init.d/courier-imap-ssl stop" # if failed host localhost port 993 type tcpssl sslauto protocol imap then restart # if 5 restarts within 5 cycles then timeout # #check process courier-pop3 with pidfile /var/run/courier/pop3d.pid # group mail # start program = "/etc/init.d/courier-pop start" # stop program = "/etc/init.d/courier-pop stop" # if failed host localhost port 110 type tcp protocol pop then restart # if 5 restarts within 5 cycles then timeout # #check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid # group mail # start program = "/etc/init.d/courier-pop-ssl start" # stop program = "/etc/init.d/courier-pop-ssl stop" # if failed host localhost port 995 type tcpssl sslauto protocol pop then restart # if 5 restarts within 5 cycles then timeout # #check process dovecot with pidfile /var/run/dovecot/master.pid # group mail # start program = "/etc/init.d/dovecot start" # stop program = "/etc/init.d/dovecot stop" # if failed host localhost port 993 type tcpssl sslauto protocol imap then restart # if 5 restarts within 5 cycles then timeout |

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 isso:

| if failed host www.example.com port 80 protocol http and request "/monit/token" then restart |

o que significa que o monit tenta se conectar a www.example.com na porta 80 e tenta acessar o arquivo /monit/token que é /var/www/www.example.com/web/monit/token porque a raiz do documento do nosso site é /var/www/www.example.com/web. 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/www.example.com/web/monit/token e escrever alguma string aleatória nele:

mkdir /var/www/www.example.com/web/monit  
echo "hello" > /var/www/www.example.com/web/monit/token

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

mkdir /var/certs  
cd /var/certs

Precisamos de um arquivo de configuração do OpenSSL para criar nosso certificado. Ele pode ser assim:

vi /var/certs/monit.cnf

| # criar certificados RSA - Servidor RANDFILE = ./openssl.rnd [ req ] default_bits = 2048 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 (ex: cidade) localityName_default = Monittown organizationName = Nome da Organização (ex: empresa) organizationName_default = Monit Inc. organizationalUnitName = Nome da Unidade Organizacional (ex: 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

Depois, editamos /etc/default/monit para habilitar o daemon do monit. Altere startup para 1:

vi /etc/default/monit

| # Padrões para o script de inicialização do monit # fonte por /etc/init.d/monit # instalado em /etc/default/monit pelos scripts do mantenedor # Stefan Alfredsson <[email protected]> # Você deve definir esta variável para que o monit inicie startup=1 # Você pode alterar a localização do arquivo de estado aqui # Também pode ser definido em monitrc # STATEFILE="/var/lib/monit/monit.state" # Para alterar os intervalos em que o monit deve ser executado, # edite o arquivo de configuração /etc/monit/monitrc # Não pode mais ser configurado aqui. |

Finalmente, podemos iniciar o monit:

/etc/init.d/monit start

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

(Tela Principal)

(Página de Status do Apache)

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

Divirta-se!

5 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.