Configuration d'Amazon Cloudwatch pour recevoir une alerte lorsque votre serveur est en panne

13

J'ai une instance fonctionnant sur Amazon EC2 que j'ai transformée en serveur Web.

Maintenant, je regarde Cloudwatch, mais je ne sais pas si c'est l'outil approprié pour le travail. Fondamentalement, je veux être informé lorsque le serveur est en panne, pour une raison quelconque.

Peut-être que le serveur a été piraté ou que le serveur s'est arrêté pour une raison quelconque, je veux recevoir une notification à ce sujet.

J'ai activé clouwatch et essayé de configurer une alerte, mais je ne vois que des choses comme l'entrée réseau ou l'utilisation du processeur, et d metrix. Maintenant, je ne sais pas si cela fera l'affaire.

Saif Bechan
la source
1
checkout cloudkick. Je sais que nous ne sommes pas censés diffuser l'opinion, mais cloudkick est ma solution de surveillance préférée. pingdom est assez inutile car votre site peut être pingable (apache / nginx) mais vos processus proxy trop php / java / ruby ​​peuvent ne pas fonctionner. frapper une URL réelle avec cloudkick toutes les 3 minutes et vérifier la présence du texte que vous spécifiez, ou pour un succès 2xx, est beaucoup plus utile et garantit que la pile entière fonctionne. J'ai des moniteurs configurés pour la moyenne de charge, l'utilisation de mem, la connexion d'agent (serveur hors ligne ou connexion abandonnée), le succès de http 2xx sur les pages, etc.
iainlbc
Vous avez fait valoir un bon point ici. Si seul php est en panne, vous obtiendrez toujours une réponse de 200. Le lien que vous avez fourni est une bonne alternative. Je vais y jeter un œil lorsque je prendrai ma décision finale.
Saif Bechan
@iainlbc Vous pouvez configurer Pingdom pour frapper une URL réelle et vérifier le texte spécifique.
ceejayoz

Réponses:

11

Une recommandation est de surveiller une métrique qui devrait toujours avoir une valeur numérique - telle que l'utilisation du processeur, et de déclencher une alarme lorsque l'état de la métrique est `` données insuffisantes '', vous pouvez utiliser le SNS d'Amazon pour vous en informer.

Alternativement, vous pouvez configurer des métriques personnalisées qui renvoient un état binaire pour des services spécifiques (httpd, mysql, etc.) et générer une alerte à chaque fois que l'une de ces lectures 0. Cette approche offre la possibilité de détails beaucoup plus fins - combinez-le avec «des données insuffisantes 'pour couvrir tous les cas.

Vous pouvez avoir plus de succès en utilisant quelque chose qui surveille réellement votre site (par exemple Pingdom, UptimeRobot, etc.).

cyberx86
la source
J'ai regardé les services comme pingdom, et je vais certainement les activer. De plus, je pensais également à regarder le processeur, mais je pensais ce qui se passerait lorsque seul le serveur Web serait piraté. Avoir un test pour httpd, mysql etc serait certainement utile. Pouvez-vous peut-être me donner un indice sur la façon d'activer cette métrique d'état binaire .
Saif Bechan
En bref: déterminez un moyen d'obtenir l'état du service d'intérêt (par exemple ps | grep pour le pid / nom; recherchez un port utilisé , etc.) - c'est-à-dire un script de surveillance. Modifiez un tel script pour appeler l'API Cloudwatch (PutMetricData) en lui passant soit un 0 (pour down) soit un 1 (for up) - il serait préférable d'utiliser l'un des SDK qui existent à cet effet (par exemple Ruby, PHP, etc); la version en ligne de commande mon-put-data est plus lente. Exécutez tout cela avec cron.
cyberx86
1
Ok, cela semble un peu compliqué. Je pense qu'un service comme uptimerobot serait un meilleur choix pour moi personnellement. Merci pour votre aide.
Saif Bechan
3

Vous pouvez utiliser OpsGenie ( http://www.opsgenie.com ) pour envoyer une alerte riche pour CloudWatch. Currenly CloudWatch dispose d'un ensemble limité de mécanismes d'alerte, notamment par e-mail et SMS via son mécanisme SNS.

Vous pouvez configurer CloudWatch pour appeler l'API des services Web OpsGenie, recevoir rapidement les bonnes personnes via des notifications push vers les applications iPhone / Android, SMS, appels vocaux, etc. selon les préférences des destinataires.

Veuillez consulter le billet de blog suivant pour obtenir des informations détaillées:

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

enguzekli
la source
2

Vous pouvez créer une alarme dans Cloudwatch et définir l'alarme pour qu'elle vous avertisse lorsqu'elle passe à l'état "Données insuffisantes". La plupart des métriques déjà disponibles proviennent du VM Host, qui n'a aucune idée réelle de ce qui se passe à l'intérieur de votre machine.

Au début, je recommanderais d'installer les outils Amazon dans votre instance et de configurer un script pour signaler quelque chose, (n'importe quoi: utilisation du processeur, peu importe) et une alarme si cette métrique cesse d'envoyer des données (donc la métrique passe à l'état de données insuffisantes ).

Ce n'est qu'un strict minimum, mais devrait être un bon point de départ.

Voir la section des scripts de surveillance du guide du développeur Cloudwatch: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html

Matt Connolly
la source
Génial, juste ce que je cherchais.
GivP
2

Vous pouvez utiliser la Route 53 et ses "bilans de santé". Avec cela, vous pouvez envoyer des alertes SNS et rediriger également vos utilisateurs vers un autre site Web secondaire ou un écran d'erreur. Je pense que c'est une meilleure solution à votre problème que Cloudwatch.

Petr
la source
2

Vous pouvez implémenter une vérification d'état EC2 . Cela se fait à partir du tableau de bord EC2. Accédez aux instances, sélectionnez votre instance, choisissez l'onglet de vérification d'état (à côté de la description de l'instance) Cliquez sur créer une alarme de vérification d'état La valeur par défaut «Vérification d'état échouée (n'importe laquelle)» devrait être bonne. Je règle toujours l'intervalle sur une valeur supérieure à un afin de ne pas me déranger pour les problèmes transitoires.

Il est également possible de configurer EC2 pour récupérer automatiquement votre instance si elle tombe en panne pour une raison quelconque.

Je recommande également un système de surveillance secondaire. Dumb est bon pour celui-ci. J'ai installé l'utilitaire linux mon pointé sur mon serveur Web à partir d'un autre hôte. S'il ne parvient pas à obtenir un code de réponse 200 deux fois de suite, je reçois un e-mail.

jorfus
la source
1

Si vous souhaitez surveiller les points de terminaison HTTP, tels que votre API ou votre site Web, consultez mon article de blog sur la façon d'y parvenir avec Route 53 Health Checks (même si vous n'utilisez pas Route 53 pour DNS):

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

Elad Nava
la source