Je suis un seul développeur Web avec mon propre Centos VPS hébergeant quelques petits sites Web pour mes clients. Aujourd'hui, j'ai découvert que mon service httpd s'était arrêté (sans raison apparente - mais c'est un autre fil). Je l'ai redémarré, mais maintenant je dois trouver un moyen d'être averti par e-mail et / ou SMS si cela se reproduit - je n'aime pas quand mon client me téléphone pour me dire que son site Web ne fonctionne pas!
Je sais qu'il existe probablement de nombreuses possibilités différentes, y compris un logiciel de surveillance de serveur. Je pense que tout ce dont j'ai vraiment besoin, c'est d'un script que je peux exécuter en tant que tâche cron à partir de mon hôte de développement (qui s'exécute en permanence dans mon bureau) qui tente de charger une page à partir de mon serveur de production et s'il ne se charge pas dans disons 30 secondes, il m'envoie un e-mail ou un SMS. Je suis assez nul à l'écriture de scripts shell, d'où cette question.
Toute suggestion serait grandement appréciée.
Réponses:
Eh bien ... Le script le plus simple, j'écris:
Ajoutez-le à cron comme:
Mais il est trop simple de vous dire quel est le problème s'il existe.
UPD: Maintenant, cette ligne unique recherche une chaîne spécifique sur la page ("Chaîne de fonctionnement normal"), qui ne devrait apparaître qu'en fonctionnement normal.
UPD2: Un moyen simple d'envoyer la page d'erreur dans l'e-mail:
Son inconvénient est que la page est demandée à nouveau en cas d'échec du premier test. Cette fois, la demande peut aboutir et vous ne verrez pas l'erreur. Bien sûr, il est possible de stocker la sortie et de l'envoyer en pièce jointe, mais cela rendra le script plus complexe.
la source
Jetez un œil à ce script:
curl
est un utilitaire de ligne de commande pour récupérer une URL. Le script vérifie le code de sortie ($? Fait référence au code de sortie de la commande la plus récente dans un script shell) et s'il était différent de 0, signale une erreur (un code de sortie de 0 fait généralement référence à la réussite). Comme mentionné dans la réponse de HUB, vous pouvez également simplement||
sur la ligne de commande pour exécuter une deuxième commande lorsque la première échoue.Une fois que vous avez compris le statut, il vous suffit de vous envoyer du courrier. Voici un exemple qui utilise la
mail
commande pour envoyer du courrier à partir d'un script shell, en supposant que la boîte à partir de laquelle vous testez a une configuration SMTP:BTW: si vous n'êtes pas bon en script shell, ne vous limitez pas à un script shell. Vous pouvez utiliser un script ruby, un script php, n'importe quel type de script que votre serveur peut exécuter! Ajoutez simplement la
#!/path/to/executable
ligne au début du script - par exemple:#!/usr/bin/php
la source
Vérifiez ce script . il vérifie une liste de sites Web et envoie un e-mail (à la liste des e-mails) chaque fois que quelque chose ne va pas (réponse http différente de 200). Le script crée un fichier .temp pour "se souvenir" du ou des sites Web qui ont échoué lors de la dernière vérification afin que vous n'obteniez pas plusieurs e-mails. le fichier .temp est supprimé lorsque le site Web fonctionne à nouveau.
Ajoutez les lignes suivantes à la configuration de crontab ($ crontab -e)
Disponible sur Github
la source
Je sais que tous les scripts ci-dessus sont exactement ce que vous avez demandé, mais je suggérerais de regarder monit car il vous enverra un e-mail si apache est en panne mais il le redémarrera également (s'il est en panne).
la source
Je recommanderais pingdom pour cela. Leur service gratuit vous permet de vérifier 1 site, mais c'est tout ce dont vous avez besoin pour vérifier 1 serveur. Si vous avez un iPhone, ils vous envoient un message gratuit, donc pas besoin d'acheter des crédits SMS, et ils ont plusieurs paramètres que vous pouvez utiliser. Le mien est configuré pour m'avertir après 2 tentatives (10 min) et toutes les 10 minutes d'arrêt après cela. C'est génial, car il vérifie également les messages HTTP 500 indiquant qu'un site est en panne. En cas d'échec, il vérifie immédiatement votre site à partir d'un autre serveur dans un emplacement différent. Si celui-ci échoue, eh bien, cela déclenche votre préférence dans la façon / quand vous souhaitez être averti.
la source
Légère variation de ce qui précède.
Un script pour vérifier si un site Web est disponible toutes les 10 secondes. Enregistrez les tentatives infructueuses dans un
siteuptime.txt
fichier afin qu'il puisse être consulté (ou représenté graphiquement dans Excel) plus tard.la source
la source
Comme vous avez de nombreux sites sur votre VPS, je recommanderais que vous puissiez ouvrir un compte avec un site de surveillance de site Web tel que host-tracker.com. En plus de vous alerter si le site est en panne ou non, ils vous fournissent également une disponibilité hebdomadaire, mensuelle et annuelle de vos sites. Whish est très utile pour la gestion et la performance.
la source
Que dis-tu de ça:
la source