Instalação e configuração do Monit
Vamos agora instalar o
monit.
O monit é utilitário de gerenciamento e monitoramento de processos, arquivos, diretórios, dispositivos e serviços.
Parecido com o Nagios, porém ele pode tomar ações nos serviços, arquivos, processos, diretórios e dispositivos.
Exemplo: o monit fica monitorando o Apache, se ele percebe que o Apache parou então ele tenta reiniciar o serviço, caso não consiga ele envia um alerta para o seu email lhe avisando que o Apache não pode ser iniciado.
Você pode fazer isso para qualquer serviço, fazer monitoramento em arquivos para quando os arquivos sejam modificados o serviço seja restartado ou seja enviado um email para você avisando que o arquivo foi modificado, pode ser monitorado partições para não deixar elas sobrecarregadas, podemos monitorar as permissões de arquivos.
Essa ferramenta é muito boa e para mais informações a respeito de configuração do monit podem ser encontradas nos seguintes endereços:
Então vamos instalar o Monit em cada máquina, o arquivo de configuração vai depender de cada máquina e dos serviços que ela tem.
Estou colocando um arquivo de exemplo abaixo com alguns serviços.
O monit é bem chato com a configuração dele, caso tenha algum erro na configuração você não vai conseguir acessar a interface web.
Então preste bem a atenção na configuração e os serviços que você não estiver utilizando deixe comentados ou retire do arquivo.
# aptitude install monit
Temos que habilitar o arquivo
/etc/default/monit e tem que mudar:
startup=0
Para:
startup=1
Agora vamos configura o monit. O arquivo de configuração se encontra em /etc/monit/monitrc.
Faça um backup deste arquivo antes de começar editá-lo.
A configuração dele é bem simples.
# vim /etc/monit/monitrc
#Iniciar o monit em background (como daemon)
set daemon 60
#Especificar o arquivo e categoria de log
set logfile /var/log/monit.log
#Receber todos os sistemas do alert
set alert ti@dominio.com
#Receber somente alertas de timeout
set alert gerenteti@dominio.com only on { timeout}
#Definição do acesso ao monitoramento gráfico
#aqui definimos a porta a ser acessada no navegador a 2812 o endereço 192.168.0.1
#a rede que pode acessar 10.10.10.0/24
# o usuario=admin e a senha=monit
set httpd port 2812 and
use address 192.168.0.11
allow 192.168.0.0/24
allow admin:monit
#Definição dos servidores de correio
#definição do usuário que vai ser usado para o envio de emails e a senha
set mailserver localhost
username "monit@dominio.com" password "senha"
with timeout 15 seconds
#Caso não precise de autenticação pode ser usado da seguinte maneira para utilizar esta maneira de envio de email
#comente a configuração do servidor de correio acima e descomente a logo abaixo
#set mailserver localhost
#Definição do modelo de email gerado
set mail-format {
from: monit@dominio.com
subject: $SERVICE $EVENT at $DATE
message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
Yours sincerely,
Monit
}
set eventqueue
basedir /var/spool/monit #Diretorio Base
slots 100 #Limite de quantidade de eventos
######################PROCESSOS###############################
#Processos que vao ser monitorados na máquina local
check system xerxes.dominio.com
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if memory usage > 75% then alert
if cpu usage (user) > 70% then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
#######################DEVICES###############################
#Aqui eu estou monitorando o drbd para que ele não exploda.
#você pode fazer o monitoramento de qualquer outra partição como eu já estava explicando o drbd+ocfs2
#vou monitorar eles.
check device drbd1 with path /dev/drbd1
start program = "/bin/mount /dev/drbd1 /ocfs2"
stop program = "/bin/umount /ocfs2"
if space usage > 90% then alert
if space usage > 95% then stop
if inode usage > 90% then alert
if inode usage > 95% then stop
#Aqui estamos fazendo a checagem das permissões do diretório /bin que contem os aplicativos
#Validando o uid e gid dos arquivos e as permissões.
check directory bin with path /bin
if failed permission 755 then unmonitor
if failed uid 0 then unmonitor
if failed gid 0 then unmonitor
######################ARQUIVOS###############################
#Aqui eu estou controlando as modificações dos arquivos de configuração
#sempre que o arquivo de configuração for modificado o serviço será reiniciado.
#Para recarregar a configuração.
check file apache2.conf with path /etc/apache2/apache2.conf
group www
if changed checksum
then exec "/etc/init.d/apache2 graceful"
check file main.cf with path /etc/postfix/main.cf
if changed checksum
then exec "/etc/init.d/postfix restart"
check file postfix_rc with path /etc/init.d/postfix
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file monitrc with path /etc/monit/monitrc
if changed checksum
then exec "/etc/init.d/monit restart"
check file named.conf with path /etc/bind/named.conf
if changed checksum
then exec "/etc/init.d/bind9 restart"
check file named.conf.options with path /etc/bind/named.conf.options
if changed checksum
then exec "/etc/init.d/bind9 restart"
check file cron_rc with path /etc/init.d/cron
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file clamavd_rc with path /etc/init.d/clamav-daemon
group Virus
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file clamavd_bin with path /usr/sbin/clamd
group Virus
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file mysql_rc with path /etc/init.d/mysql
group database
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file mysql_bin with path /usr/sbin/mysqld
group database
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file spamd_rc with path /etc/init.d/spamassassin
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
check file spamd_bin with path /usr/sbin/spamd
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
#####################SERVIÇOS###############################
#aqui é o monitoramento de serviços.
#no qual checamos os pid para ver se existem caso não existam
#vamos iniciar o serviço
#e podemos fazer a verificação de portas e protocolos exemplo o apache2 logo abaixo
check process apache2 with pidfile "/var/run/apache2.pid"
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed port 80 and protocol http then restart
group www
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 and protocol ssh then restart
check process cron with pidfile "/var/run/crond.pid"
start program = "/etc/init.d/cron start"
stop program = "/etc/init.d/cron stop"
if 5 restarts within 5 cycles then timeout
check process ntp with pidfile /var/run/ntpd.pid
start program = "/etc/init.d/ntp start"
stop program = "/etc/init.d/ntp stop"
if failed port 123 type udp then alert
if 5 restarts within 5 cycles then timeout
check process rsyslogd with pidfile /var/run/rsyslogd.pid
start program = "/etc/init.d/rsyslog start"
stop program = "/etc/init.d/rsyslog stop"
if 5 restarts within 5 cycles then timeout
check process named with pidfile /var/lib/named/var/run/bind/run/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 alert
if failed host 127.0.0.1 port 53 type udp protocol dns then alert
if 5 restarts within 5 cycles then timeout
#Exemplo de serviço que vai ser monitorado se outro estiver ok
#a cláusula depends on postfix_rc serve para definir que este serviço só vai ser monitorado caso
#o postfix_rc estiver trabalhando, caso contrario este serviço não vai ser monitorado.
check process postfix with pidfile /var/spool/postfix/pid/master.pid
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
depends on postfix_rc
group mail
#aqui temos um exemplo de serviço que só vai ser monitorado caso os arquivos clamavd_rc e clamavd_bin estiverem ok.
check process clamav with pidfile /var/run/clamav/clamd.pid
start program = "/etc/init.d/clamav-daemon start"
stop program = "/etc/init.d/clamav-daemon stop"
if 5 restarts within 5 cycles then timeout
depends on clamavd_rc
depends on clamavd_bin
group Virus
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 protocol mysql then restart
if 5 restarts within 5 cycles then timeout
depends on mysql_rc
depends on mysql_bin
check process spamd with pidfile /var/run/spamd.pid
group mail
start program = "/etc/init.d/spamassassin start"
stop program = "/etc/init.d/spamassassin stop"
if 5 restarts within 5 cycles then timeout
if cpu usage > 99% for 5 cycles then alert
if mem usage > 99% for 5 cycles then alert
depends on spamd_rc
depends on spamd_bin
#####################Heartbeat2############################
#Aqui estou monitorando o meu segundo nodo do heartbeat só para saber se ele esta funcionando.
check host esparta with address 10.10.10.252
if failed icmp type echo count 3 with timeout 3 seconds then alert
if 5 restarts within 5 cycles then timeout
Agora que já instalamos e configuramos o monit, temos que reiniciá-lo para que ele releia o arquivo de configuração, e como que comentei no começo, deixe no arquivo de configuração somente os serviços que você tem no servidor, senão o monit não vai funcionar.
Vamos reiniciá-lo.
# /etc/init.d/monit stop
# /etc/init.d/monit start
Se deu tudo certo podemos acessar a interface gráfica pelo endereço do servidor:porta que está configurado no arquivo. Exemplo:
http://192.168.0.1:2812
Ele vai pedir o usuário: admin
E a senha:monit
Pronto, aqui temos a interface do monit.
Ele é bem simples, para habilitar ou desabilitar algum monitoramento é só clicar no link do nome do monitoramento e efetuar o gerenciamento parando, iniciando, reiniciando, desabilitando ou habilitando o monitoramento.
O resto é só acompanhar os arquivos de log.
Obrigado pela leitura! Tomara que eu tenha ajudado!
Qualquer dúvida fico a disposição.
Douglas Q. dos Santos.
msn: quintilianodouglas@hotmail.com
email: douglashx@gmail.com