Marcio Trindade

Conhecendo o Monit

Monit é um utilitário pequeno e open source criado para gerenciar e monitorar sistemas unix.

Eu passei a utilizar o monit para monitorar os meus projetos pessoais ao invés da gem God que além de mais complexo é escrito em Ruby.

O Monit está disponível para algumas plataformas, vou mostrar como eu instalei no Ubuntu utilizando o gerenciador de pacotes apt. No site do monit tem algumas outras formas de distribuição ou até mesmo o código fonte para ser compilado:

console
# atualize os pacotes
sudo apt-get update
# instale o monit
# sudo apt-get install monit

Pronto o Monit está instalado e rodando, então agora vamos entender como ele funciona e como alterar as configurações do mesmo.

O arquivo principal de configuração está em /etc/monit/monitrc.

/etc/monit/monitrc
# intervalo entre cada verificação em segundos.
set daemon 30
# arquivo de texto que será utilizado para logar o que for feito.
set logfile /var/log/monit.log
# arquivo com a identificação deste serviço.
set idfile /var/lib/monit/id
# arquivo utilizado para guardar o status de cada serviço.
set statefile /var/lib/monit/state
# configuração de fila de eventos
set eventqueue
    basedir /var/lib/monit/events
    slots 100
# servidor http para verificar a saúde do seu sistema via web
# pode utilizar
set httpd port 2812
    allow USER:PASSWORD

include /etc/monit/conf.d/*

Atente para o include no final do arquivo acima, isso quer dizer será feito o include de qualquer arquivo que estiver no diretório config.d com isso podemos organizar nossas monitorações em arquivos diferentes, eu mesmo procuro utilizar um arquivo para cada serviço.

Dentro do diretório monitrc.d encontram-se alguns exemplos de monitorações padrões que você pode criar links para o conf.d, no meu caso utilizei o ngnix e o mysql padrão e apenas adicionei o arquivo blog para monitorar o serviço deste blog. Veja a árvore dos arquivos abaixo:

console
/etc/monit/
├── conf.d
│   ├── blog
│   ├── mysql -> ../monitrc.d/mysql
│   └── nginx -> ../monitrc.d/nginx
├── monitrc
├── monitrc.bkp
├── monitrc.d
│   ├── acpid
│   ├── apache2
│   ├── at
│   ├── cron
│   ├── mdadm
│   ├── memcached
│   ├── mysql
│   ├── nginx
│   ├── openntpd
│   ├── openssh-server
│   ├── pdns-recursor
│   ├── postfix
│   ├── rsyslog
│   ├── smartmontools
│   └── snmpd
└── templates
    ├── rootbin
    ├── rootrc
    └── rootstrict

Outro detalhe interessante do Monit é a verificação de syntax, sempre que você alterar a syntaxe de qualquer arqvuivo de monitoração você pode rodar o comando service monit syntaxe para verificar se a syntaxe está ok antes de fazer um reload e deixar seus serviços sem monitoração. Depois que você tiver certeza que tudo está ok então basta rodar o comando service monit reload para carregar as novas configurações.