107 votes

Le Ping est-il un moyen fiable de vérifier si un serveur est disponible ?

Dans mon application, j'envoie un ping à un serveur et j'attends une réponse. Je l'utilise pour déterminer si le serveur est disponible et réactif ou non.

Est-ce un moyen fiable de déterminer la disponibilité ? Je suppose qu'un pare-feu pourrait filtrer le trafic icmp... Y a-t-il d'autres inconvénients ? Existe-t-il une méthode plus fiable ?

3voto

ppuschmann Points 598

Il existe des outils spéciaux pour les tests et le suivi, comme Nagios / Icinga .
Avec ces outils, vous pouvez (bien sûr) faire des vérifications avec divers ping-test mais aussi faire des vérifications sur vos services.

Toutes les vérifications peuvent utiliser la valeur renvoyée pour classer le résultat comme "bon", "avertissement" et "critique" et peuvent être écrites dans presque tous les langages de programmation.

Bien sûr, il n'est pas facile à mettre en place (comme un pointeur et un clic), mais il est personnalisable, fiable et extensible. Fonctionne bien sur diverses distributions Linux et Unix.

2voto

devasia2112 Points 163

Testez les services que vous recherchez, le simple fait d'envoyer un ping à un serveur ne signifie pas que les services fonctionnent.

Par exemple :

Imaginez un serveur web avec une douzaine de sites web, alors j'ai besoin de savoir si les sites web sont UP, j'ai fait moi-même un petit script en php et je l'exécute toutes les 10 minutes.

Le script fait le -> suivant

<?php
    $website1 = "http://www.mywebsite.com/";
    $myWebsite = file_get_contents($website1);
    $message = 'My website' . $website1 . ' is DOWN at the moment.';
    if (empty($myWebsite)) mail('mail@server.com', 'Website is DOWN', $message);
?>

2voto

Adam Points 21

Utiliser le ping pour déterminer si un serveur est disponible, c'est comme si un médecin urgentiste vérifiait si un patient respire. Oui, c'est un bon point de départ, mais il peut y avoir d'autres problèmes.

1voto

Mark Lakata Points 243

Nous utilisons ping pour faire une pré-vérification, que l'hôte est allumé et joignable, avant de lancer notre service systemd qui tente une connexion ssh avec lui. Cela permet d'économiser du temps de débogage, car la fonction systemctl start échouera immédiatement, au lieu d'échouer silencieusement et de se perdre dans la jungle de journalctl.

Notez que le ping n'est pas "fiable" dans le même sens que le TCP. Si votre connexion est mauvaise (ou si votre pile réseau est défectueuse, merci ), vous ne pourrez pas utiliser ping. Intel mpss ) et les paquets sont abandonnés, un ping à un seul paquet peut échouer. D'un autre côté, une connexion TCP est fiable contre les paquets abandonnés. Donc, ironiquement, une connexion ssh pourrait travail immédiatement après un seul ping échec . Ainsi, si vous utilisez ping pour effectuer un contrôle d'intégrité, veillez à autoriser un certain nombre d'échecs.

0voto

Robbie Points 141

Juste mes deux cents : Nous avons une ancienne application qui utilise cette méthode et nous avons dû l'entretenir parce que le ping était no suffisante pour déterminer la disponibilité du service.

Le Ping montre simplement que le serveur est capable d'écouter, mais dans notre cas, le service était incapable de démarrer sans intervention humaine.

En conséquence, les unités, qui supposaient naïvement que le serveur était disponible, tentaient de se connecter et perdaient leur temps. Au lieu d'afficher notre message "Server is Unavailable".

--

Notre application actuelle, qui communique avec un serveur web via des requêtes XMLHTTPR, envoie un message formé auquel le serveur répondra par un code d'état. Le code d'état est calculé par le serveur qui effectue un certain nombre de vérifications pour s'assurer que divers sous-systèmes sont en ligne (base de données, répertoires nécessaires accessibles en écriture, etc.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X