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 monitEntão, criamos os links de inicialização do sistema para o monit:
systemctl enable monit
systemctl start monitO 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/monitrcE 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 leituraSubstitua por estas configurações:
set httpd port 2812 and
use address 0.0.0.0
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:testA 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/monitrcset 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_tokenEm 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/certsPrecisamos 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 = serverAgora criamos o certificado assim:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemFinalmente, podemos iniciar o monit:
systemctl restart monitAgora 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)

(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
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.