O
mon será utilizado para monitorar os serviços locais da máquina e executar uma tarefa caso ocorra algum problema com o serviço monitorado.
No nosso exemplo, usaremos ele para monitorar o Apache e caso o mesmo tenha problemas de requisição, o mon derrubará o
heartbeat, forçando assim a máquina slave a assumir os serviços.
OBSERVAÇÃO: O mon tem opções para enviar e-mail de alerta caso ocorra algum problema. Para isso você poderá configurar um servidor de e-mail na máquina para enviar e-mails de alerta. Em nosso servidor, utilizamos o Postfix com Host Relay.
Instalação do Mon
Aqui iremos apenas instalar o pacote.
# aptitude install mon
Configuração do Mon
Primeiramente configure o arquivo principal do mon.
alertdir = /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 60s
hostgroup www localhost
watch www
service http
interval 10s
monitor http.monitor
allow_empty_group
period wd {Sun-Sat}
alert heartbeat.alert
alert mail.alert -S "web server is down" root@localhost
upalert mail.alert -S "web server is up" root@localhost
alertevery 1m
Essa configuração monitorará o processo do Apache da seguinte maneira: ele verificará de 10 em 10 segundos (interval) se o Apache está respondendo. Caso o mesmo apresenta falha de conexão na máquina local, ele irá executar o script "heartbeat.alert", responsável pela paralisação do heartbeat, obrigando assim a máquina slave assumir e irá disparar um e-mail através do script mail.alert com o assunto explícito em -S ASSUNTO para root@localhost.
O arquivo heartbeat.alert poderá ser
baixado aqui, já que o mesmo não vem instalado por default.
Com isso, podemos iniciá-lo.
# /etc/init.d/mon stop
# /etc/init.d/mon start
Ajustes de SUDO
Em nossos testes detectamos que o daemon do mon é executado no sistema com o usuário daemon. Isso nos gerou um problema, pois esse usuário não tem permissões para derrubar o heartbeat quando o Apache cai.
Para solucionar esse problema vamos usar o SUDO para dar as permissões necessárias para o usuário daemon executar a tarefa corretamente.
Vamos ao processo:
# aptitude install sudo
Em seguida, configure o SUDO.
# visudo
#Defaults env_reset
root ALL=(ALL) ALL
daemon ALL=NOPASSWD:/etc/init.d/heartbeat stop
E para finalizar, ajuste o arquivo heartbeat.alert para utilizar o SUDO.
Você deverá alterar a linha a seguir:
# vi /usr/lib/mon/alert.d/heartbeat.alert
[...]
# system ("/etc/init.d/heartbeat stop");
system ("sudo /etc/init.d/heartbeat stop");
E por fim, reinicie o mon.
# /etc/init.d/mon stop
# /etc/init.d/mon start
Criado por:
Ciro Siqueira - siqueira.ciro[em]gmail.com
Fabricio Vaccari Constanski - fabriciovc[em]gmail.com