Je voudrais faire un bilan de santé d'un service en appelant une URL spécifique sur celui-ci. On dirait que la solution la plus simple serait d'utiliser cron pour effectuer le contrôle toutes les minutes environ. En cas d'erreur, cron m'envoie un email.
J'ai essayé d'utiliser cUrl pour cela, mais je ne parviens pas à envoyer des messages uniquement en cas d'erreur. Si j'essaie de diriger la sortie vers / dev / null, il affiche un rapport de progression.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
J'ai essayé de regarder à travers les options de boucle, mais je ne trouve rien qui corresponde à la situation dans laquelle vous voulez que les choses soient silencieuses, mais que vous fassiez du bruit en cas d'erreur.
Existe-t-il un moyen de faire en sorte que curl fasse ce que je veux ou y a-t-il un autre outil que je devrais utiliser?
la source
icinga
ou tout autre système de surveillance?Réponses:
Qu'en est- il
-sSf
? À partir des pages de manuel:Par exemple:
la source
curl -fsS http://example.org > /dev/null
. Cela ne produira rien lorsque rien ne va pas, mais imprimera le code d'état sur les erreurs, ce qui me convient parfaitement.-f
pour les références futures.Je pense que pour le moyen le plus simple de vérifier si le site est actif, vous pouvez utiliser la méthode suivante:
Cela va revenir
HTTP/1.1 200 OK
. Si le retour ne correspond pas à votre production, appelez à l'aide.la source
Vous avez besoin de l'
-s
indicateur (silencieux), de l'-f
indicateur (échec avec le code de sortie en cas d'erreur) et pouvez utiliser l'-o
indicateur pour rediriger la sortie:Ceci est juste un mauvais exemple pour un script cron simple. Normalement, vous ne voulez recevoir qu'un seul courrier si un site Web est en panne.
la source
vous pouvez capturer les statistiques de synchronisation du réseau de curl. les latences de chaque phase d'un cycle de requête / réponse peuvent être utiles pour déterminer la santé.
la source
Cette façon de faire vous aidera lorsque vous essayez de tester le site lorsque https est présent:
la source
On m'a récemment demandé de proposer quelque chose qui agirait davantage comme un battement de coeur sophistiqué.
Ou, élargi pour un peu plus de lisibilité,
Ce que j'ai fait était
curl
un site Web, analyser tous les liens ducurl
code HTML, puis ces liens analysés, en ne produisant que le code d'état. Ensuite, je rechercherais des codes d’état http> = 400 pour détecter les erreurs.la source
Répondre:
Explications:
timeout 3s
fixera un délai d'attente de 3 secondes pour votre demande. Répondre plus lentement est considéré comme "pas sain"-f
flag échouera tôt,-S
affichera des erreurs,-s
supprimera la sortie normale,-I
extraira uniquement les en-têtes HTTP, pas le contenu. (Comme toujours, plus de détails sont disponibles surman curl
commande.)-checkend
directive openssl vérifie les dates d'expiration d'un certificat. Dans mon exemple, c'est 20 jours (spécifié en secondes).la source
-s
et-S
échangéCurl a des codes de statut de sortie très spécifiques.
Pourquoi ne pas simplement vérifier ceux-ci?
Usage:
Résultat:
Remarques:
Ce script vérifie uniquement si le site peut être résolu.
Ce code devrait vous guider si tout ce qui vous intéresse est que le site soit en haut ou en bas.
Cependant, si vous apportez quelques modifications au bloc if / else, vous pouvez facilement tester d’autres codes d’état si vous le souhaitez.
la source