O
MON é utilizado para monitorar (remota ou localmente) serviços em servidores e disparar ações conforme os eventos. O MON possui vários scripts monitores e alerts. Você pode montá-los em Perl ou shell script, similarmente ao Nagios.
Os scripts podem ser complexos a ponto de executarem queries pré-definidas em bancos de dados remotos ou também enviar emails de alerta ao sysadmin.
Este é um processo de instalação, não necessariamente um artigo.
O MON foi instalado e configurado em sua versão 0-99-2.6 e testado no Debian 4.0 e 5.0, 32 bits.
O MON não é um substituto do Nagios. Pode ser usado com o Nagios, com SNMP.
É comumente usado com o Heartbeat para monitoramento de load balancers.
Instalando o MON
Em distribuições baseadas no Debian, basta usar o apt-get ou aptitude:
# aptitude install mon
Em seguida, interrompa o serviço:
# /etc/init.d/mon stop
Os scripts têm seus diretórios pré-definidos:
- /usr/lib/mon/mon.d -> armazena os scripts monitores (.monitor), que executam a checagem de algum serviço.
- /usr/lib/mon/alert.d -> armazena os scripts alert (.alert), responsáveis por executar alguma ação quando identificado o problema (subir um daemon, reiniciar um serviço etc).
São criados na instalação e preenchidos com vários scripts. Você pode utilizá-los ou criar seus próprios em Perl ou shell script.
Configurando o MON
Configurando o arquivo
/etc/mon/mon.cf:
serverbind = localhost
trapbind = localhost
cfbasedir = /etc/mon
alertdir= /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 60s
hostgroup localnode localhost
watch localhost
service http
description Monitoramento do apache
interval 1m
monitor http.monitor -p 80 -t 10 -o localhost
period wd {Mon-Sun}
alert apache2.alert
alert file.alert -d /var/log/mon http.alert.log
Explicando o mon.cf:
O arquivo /etc/mon/mon.cf é onde se define que servidores fazem bind, por quais portas e que rotinas de monitoramento são executadas, em que intervalo de tempo e o que acontece em caso de problemas.
- hostgroup => define um nome de grupo de hosts a serem monitorados.
- localgroup => nome do grupo monitorado.
- localhost => nome do servidor pertencente ao grupo localhost, definido dentro do hostgroup (cláusula de definição).
- watch => define quais serviços serão monitorados. O nome definido no parâmetro service dentro do watch deve ser o nome do script monitor, sem a extensão .monitor e deve constar no mondir, definido acima. Ou seja, em /usr/lib/mon/mon.d deve existir um script chamado http.monitor (neste exemplo).
- service => este parâmetro é exatamente o nome do script existente sob /usr/lib/mon/mon.d, sem a extensão .monitor.
- description => permite fornecer uma descrição para a checagem sendo realizada. Para controle pessoal do usuário.
- interval => intervalo de tempo entre as checagens. 1m = 1 minuto. 1h = 1 hora, e assim por diante.
- period => período em que a checagem deve ser executada. É possível especificar horários ou períodos diferenciados. A sintaxe correta de como o período desejado pode ser especificado pode ser consultada na página de manual do módulo Perl Time::Period, acessível através do comando:
man Time::Period
O timeperiod não pode ser setado para dias iguais. Por exemplo: wd {Mon-Mon}
- alert => esta cláusula permite especificar alertas a serem gerados quando o script monitor retornar um valor diferente de zero (quando retornar um erro). O script definido nesta cláusula deve estar no alertdir setado acima. Neste caso, em /usr/lib/mon/alert.d/. A cláusula file.alert é um script que gera um arquivo de log no endereço setado e com o nome de arquivo definido. Neste caso: /var/log/mon/http.alert.log.
Permissões
Para usar o MON como monitoramento de serviços como Apache, é necessário habilitar o usuário mon, criado na instalação, como pertencente ao grupo root. Para fazer isto, edite o arquivo /etc/group:
# vim /etc/group
Acrescente à linha que contiver este conteúdo root:x:0: o usuário mon. Ficará assim:
root:x:0:mon
Ou execute o comando:
# usermod -o -G root mon
Permissões - /etc/passwd:
Caso editar o /etc/group não resolva e continuem ocorrendo erros de permissão ao executar os alerts, edite o arquivo /etc/passwd. Veja como deve ficar a linha, abaixo:
mon:x:0:0::/var/lib/mon:/bin/false