Configurando o Amazon Cloudwatch para receber um alerta quando o servidor está inoperante

13

Eu tenho uma instância em execução no Amazon EC2 que me transformei em um servidor da web.

Agora, estou observando o cloudwatch, mas não sei se é a ferramenta correta para o trabalho. Basicamente, quero ser informado quando o servidor estiver inoperante, por qualquer motivo.

Talvez o servidor tenha sido hackeado ou o servidor seja desligado por qualquer motivo, eu quero receber uma notificação sobre isso.

Habilitei o clouwatch e tentei configurar um alerta, mas só vejo coisas como entrada na rede ou uso da CPU, e d metrix. Agora eu não sei se isso vai dar certo.

Saif Bechan
fonte
1
checkout cloudkick. eu sei que não devemos espalhar opinião, mas o cloudkick é minha solução de monitoramento favorita. pingdom é bastante inútil, pois seu site pode ser pingável (apache / nginx), mas seus processos com php / java / ruby ​​com proxy também podem não estar funcionando. acertar um URL real com cloudkick a cada 3 minutos e verificar a presença de texto especificado ou o sucesso de 2xx é muito mais útil e garante que toda a pilha esteja funcionando. Tenho a configuração de monitores para loadaverage, uso mem, conexão agente (servidor offline ou conexão caiu), http 2xx sucesso em páginas, etc.
iainlbc
Você fez um bom argumento aqui. Se apenas o php estiver inativo, você ainda receberá 200 respostas. O link que você forneceu é uma boa alternativa. Vou dar uma olhada quando tomar minha decisão final.
Saif Bechan
@iainlbc Você pode configurar o Pingdom para acessar um URL real e verificar se há um texto específico.
ceejayoz

Respostas:

11

Uma recomendação é monitorar uma métrica que sempre deve ter um valor numérico - como o uso da CPU e acionar um alarme quando o estado da métrica for 'dados insuficientes'. Você pode usar o SNS da Amazon para notificá-lo.

Como alternativa, você pode configurar métricas personalizadas que retornam um estado binário para serviços específicos (httpd, mysql, etc.) e geram um alerta sempre que qualquer uma dessas leituras 0. Essa abordagem oferece a possibilidade de detalhes muito mais refinados - combine-os com dados insuficientes 'para cobrir todos os casos.

Você pode ter mais sucesso usando algo que realmente monitora seu site (por exemplo, Pingdom, UptimeRobot etc.).

cyberx86
fonte
Eu olhei para os serviços como pingdom e certamente os habilitarei. Além disso, eu também estava pensando em olhar para a CPU, mas pensei no que aconteceria quando apenas o servidor da Web fosse invadido. Ter um teste para httpd, mysql etc certamente ajudaria. Talvez você possa me dar uma dica de como habilitar essa métrica de estado binário .
Saif Bechan
Resumidamente: determine uma maneira de obter o status do serviço de interesse (por exemplo, ps | grep para o pid / name; verifique se há uma porta em uso , etc.) - isto é, um script de watchdog. Modifique esse script para chamar a API do Cloudwatch (PutMetricData) passando 0 (para baixo) ou 1 (para cima) - seria melhor usar um dos SDKs existentes para esse fim (por exemplo, Ruby, PHP, etc); a versão da linha de comando mon-put-data é mais lenta. Execute tudo isso com cron.
cyberx86
1
Ok, isso parece um pouco complicado. Eu acho que um serviço como o uptimerobot seria uma escolha melhor para mim pessoal. Obrigado por toda a ajuda.
Saif Bechan
3

Você pode usar o OpsGenie ( http://www.opsgenie.com ) para enviar um alerta rico para o CloudWatch. Atualmente, o CloudWatch possui um conjunto limitado de mecanismos de alerta, incluindo email e SMS por meio do mecanismo SNS.

Você pode configurar o CloudWatch para ligar para a API de serviços web da OpsGenie, notificar rapidamente as pessoas certas por meio de notificações push para aplicativos para iPhone / Android, SMS, chamadas de voz etc. de acordo com as preferências dos destinatários.

Consulte a seguinte publicação no blog para obter informações detalhadas:

http://www.opsgenie.com/blog/2012/09/04/aws-cloudwatch-alarms-on-your-mobile-with-opsgenie.html

enguzekli
fonte
2

Você pode criar um alarme no Cloudwatch e definir o alarme para notificá-lo quando entrar no estado "Dados insuficientes". A maioria das métricas já disponíveis são do VM Host, que não tem nenhuma idéia real sobre o que está acontecendo dentro de sua máquina.

No começo, recomendo instalar as ferramentas da Amazon em sua instância e configurar um script para relatar algo (qualquer coisa: uso da CPU, o que seja) e alarme se essa métrica parar de enviar dados (para que a métrica entre no estado de dados insuficientes) )

Este é apenas um mínimo, mas deve ser um bom ponto de partida.

Consulte a seção de scripts de monitoramento do guia do desenvolvedor do Cloudwatch: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html

Matt Connolly
fonte
Impressionante, exatamente o que eu estava procurando.
GivP
2

Você pode usar o Route 53 e suas "verificações de integridade". Com isso, você pode enviar alertas de SNS e também redirecionar seus usuários para outro site secundário ou uma tela de erro. Penso que esta é uma solução melhor para o seu problema do que o Cloudwatch.

Petr
fonte
2

Você pode implementar uma verificação de status do EC2 . É feito no painel do EC2. Vá para instâncias, selecione sua instância, escolha a guia Verificações de status (ao lado da descrição da instância) Clique em criar alarme de verificação de status O padrão "Status Check Failed (any)" deve ser bom. Eu sempre defino o intervalo para mais de um, para não me incomodar por problemas transitórios.

Também é possível configurar o EC2 para recuperar automaticamente sua instância se ela for desativada por algum motivo.

Eu também recomendo um sistema de monitoramento secundário. Burro é bom para este. Eu configurei o utilitário linux mon apontado para o meu servidor web de outro host. Se ele não conseguir obter um código de resposta 200 duas vezes seguidas, recebo um email.

jorfus
fonte
1

Se você deseja monitorar pontos de extremidade HTTP, como sua API ou site, confira minha postagem no blog sobre como conseguir isso com as verificações de integridade do Route 53 (mesmo se você não usar o Route 53 para DNS):

http://eladnava.com/monitoring-http-health-email-alerts-aws/

Elad Nava
fonte