Monit deve fazer o que você precisa. Se você quiser algo um pouco mais avançado, mas mais especificamente feito sob medida para o EC2, dê uma olhada nos serviços oferecidos por RightScale ou Scalr (um concorrente de código aberto da RightScale).
Estou configurando minha primeira instância de produção no EC2 e quero ter certeza de que tenho todo o monitoramento necessário em vigor. Existem três tipos diferentes de coisas que quero monitorar:
A instância está em execução? As instâncias do EC2 podem ser encerradas sem aviso se o hardware subjacente falhar e, até onde eu saiba, elas não são automaticamente reiniciadas. Então, se não, inicie o backup.
O UNIX está sendo executado corretamente? Este é o material usual sobre carga da CPU, espaço em disco, etc.
O site está respondendo? Caso contrário, reinicie-o.
Inicialmente, configurei o Nagios em um servidor físico fora da nuvem, mas é realmente útil apenas para o item 2. Ele pode me informar se a instância sumiu ou se o site não está respondendo, mas até onde eu sei não pode executar nenhum comando para corrigir a situação.
Meu Google pesquisando sobre este assunto produziu uma infinidade de opções - Cacti, Monit, God, Ganglia e provavelmente mais do que estou esquecendo agora. Não tenho tempo para pesquisar todos eles. Estou ciente do Cloudwatch da Amazon, mas parece que ele não faz nada que a minha instalação do Nagios já não faça.
Se você já tem algo assim, pode compartilhar o que funcionou bem para você?
Monit deve fazer o que você precisa. Se você quiser algo um pouco mais avançado, mas mais especificamente feito sob medida para o EC2, dê uma olhada nos serviços oferecidos por RightScale ou Scalr (um concorrente de código aberto da RightScale).
Eu resolvi esse problema com o uso do Puppet ... Eu construí meu próprio AMI que possui um cliente puppet instalado e um script SysV-init de dados do usuário que define o hostname antes de iniciar e ativar o processo puppet.
Quando a instância do EC2 se conecta ao mestre de bonecos, ele passa seu endereço IP atual e eu posso usar isso para modelar a configuração do Nagios dos nós do EC2. Quando o endereço IP muda, o arquivo de configuração do Nagios é atualizado e o Puppet inicia uma reinicialização do Nagios.
Reiniciar uma instância do EC2 exigiria ter as ferramentas da API do EC2 instaladas na caixa de monitoramento e configurar algo para automatizar o processo de inicialização da instância. Eu criei um script ruby que faz isso e define o conteúdo de dados do usuário pelo host que está sendo solicitado para ser iniciado.
Isenção de responsabilidade, sou o gerente da comunidade do Zenoss.
O Zenoss fará exatamente o que você está pedindo.
1) Existe um Zenoss ZenPack especificamente para monitorar instâncias do EC2: link
2) Você também pode monitorar as instâncias ativando o SSH e monitorando-as no nível do sistema operacional. Eu fiz o Debian, Ubuntu, CentOS e OpenSolaris no EC2 dessa maneira.
3) Você pode monitorar o site por processo, verificando a página ou um clickthrough sintético. Em resposta a eventos no Zenoss, você pode chamar um comando Event, como '/etc/init.d/apache restart' para reiniciar um servidor da Web que está desativado (ou qualquer outra coisa que você possa criar scripts).
Gostaria apenas de acrescentar: em termos de monitoramento do tempo de atividade do site, minha empresa usa o Pingdom, e sinceramente fiquei muito feliz com eles.
Eles até têm apps para Android e iPhone (que funcionam muito bem) que o notificam quando o site cai.
E para a divulgação completa, não, eu não trabalho para eles nem nada. Eu sou apenas um cliente entusiasmado:)
Tags monitoring amazon-ec2