Tutorial de minha autoria para instalação e configuração do MON #in #linux #debian

MON -> Ferramenta para monitorar a disponibilidade de serviços

O programa mon é utilizado para monitorar (remotamente ou localmente) serviços e disparar ações conforme os eventos.
Mon possui vários scripts monitores e alerts.
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.
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).

Configurando o MON

Instalando

 aptitude install mon
 /etc/init.d/mon stop

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.
 localhost => 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 editando o /etc/group não resolva e continuem ocorrendo erros de permissão ao executar os alerts, edite o arquivo /etc/passwd:

 mon:x:0:0::/var/lib/mon:/bin/false

Reiniciando o mon

Após configurar o aplicativo, reinicie o programa:

 /etc/init.d/mon restart

Para testar se o mon está funcionando corretamente, pode-se usar o comando abaixo:

 monshow --detail localhost,http

localhost é o nome do servidor e http é o nome do serviço, podendo ser qualquer outro configurado no mon.

Exemplo de erro

 server: localhost
      time: Wed Sep 22 17:04:09 2010
      state: scheduler running
 Error: localhost/http not a valid service

Exemplo de sucesso

    server: localhost
      time: Wed Sep 22 17:07:49 2010
     state: scheduler running
 Detail for group localhost service http
 description
 -----------
   Monitoramento do apache
 summary
 -------
 hosts
 -----
   localhost
 -----DETAIL-----
 -----DETAIL-----
 opstatus: untested (7)
  exitval: undef
   depend:
  monitor:
 last check: 14874 days, 20:07 ago
 next_check: in 17s

Modelo de alert para reiniciar o apache

 Nome do arquivo: apache2.alert
 #!/bin/bash

 PID="/var/log/mon/apache.alert.pid"

 # Validando se o processo jah estah em execucao
 if [ -f "$PID" ] ; then
       echo "Processo ja estah em execucao com PID [`cat $PID`]"
       exit 0
 fi

 # Iniciando execucao do script
 while [ ! -z "`/bin/pidof httpd`" ] ; do
       echo "$$" > $PID
       /etc/init.d/apache2 stop
       sleep 2
 done

 # Iniciando o apache
 /etc/init.d/apache2 start
 rm -f "$PID"

//

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.