Der beste Weg, um festzustellen, ob ein bestimmter Remote-Service aktiv ist, besteht darin, ihn zu bitten, eine Anfrage so zu bearbeiten, wie es beabsichtigt ist. Tatsächlich ist dies der einzige Weg, um wirklich zu wissen, dass etwas richtig funktioniert.
Als Beispiel fordere ich meine Load-Balancer immer auf, eine tatsächliche Antwort von unseren Webservern zu erhalten. Sie könnten dasselbe für eine kleine Auswahl an einer DB-Box tun, wenn Sie möchten oder was auch immer Ihr tatsächlicher Server bedient. Als Tipp können Sie eine 'online.txt' (oder einen beliebigen Namen, den Sie vergeben möchten) auf Ihren Webservern erstellen. Lassen Sie Ihre LBs versuchen, diese Datei abzurufen. Wenn dies fehlschlägt, wird der Server vom VIP entfernt Eine gute Möglichkeit, einzelne Server manuell aus Ihren VIPs zu entfernen, indem Sie einfach eine einzelne Datei umbenennen.
Ping testet nur die Fähigkeit, auf Pings zu antworten. Das ist also das Basisbetriebssystem, Teile des IP-Stacks und die physischen Links - aber das ist alles, alles andere könnte ausgefallen sein und Sie wissen es nicht.
Ich weiß, dass dies unten erwähnt wird, aber es lohnt sich, es immer wieder zu wiederholen.
ICMP-Echoanforderungen (auch bekannt als "Pings") (auch bekannt als ICMP-Typ 8) basieren auf der IP-Stack-Spezifikation, müssen jedoch weder implementiert noch verwendet werden. Tatsächlich gibt es eine große Anzahl von Internetanbietern, die sich weigern, diese weiterzuleiten, und diese Anforderungen stillschweigend ablehnen, da es sich um eine Form von Netzwerkangriffen handelt (sogenannte Pingfloods).
Wie oben erwähnt, wird dies vom Betriebssystem (speziell auf Netzwerkstapelebene) behandelt, und es liegt daher an der Betriebssystemkonfiguration, auf diese zu reagieren oder nicht. Wenn dies deaktiviert ist (aus Sicherheitsgründen?), Können Sie keine Ping-Antworten vom anderen Ende empfangen. Deshalb ist es nicht zuverlässig.
Meistens jedoch ja:
Einige Server blockieren Ping-Anfragen
Nur weil der Server antwortet, bedeutet dies nicht automatisch, dass die Website (oder der von Ihnen erwartete Dienst) funktioniert . Sie sollten auch prüfen, ob die Antwort mit dem erwarteten Inhalt übereinstimmt.
quelle
Es ist richtig, dass der ICMP-Verkehr in vielen Fällen herausgefiltert wird, so dass er möglicherweise unzuverlässig ist ...
Ein besserer Weg könnte sein, den Server an dem Service-Port zu telneten, an dem Sie interessiert sind.
dh Telnet 127.0.0.1 8080
quelle
Wenn der Server nur auf Pings antworten muss, ist dies eine gute Methode, um die Verfügbarkeit zu ermitteln. Wenn zum Beispiel ein Webdienst bereitgestellt werden soll, sollten Sie eine Art Test durchführen, um festzustellen, ob dies für Dateidienste usw. ähnlich funktioniert.
quelle
Ping hat zwei Nachteile:
eine bessere lösung ist es, deinen udp / tcp port direkt zu überprüfen, um zu sehen, ob der service noch verfügbar ist ... :-)
quelle
Es gibt spezielle Tools zum Testen und Überwachen wie Nagios / Icinga .
Mit diesen Tools können Sie (natürlich) Prüfungen mit verschiedenen Ping-Tests durchführen, aber auch Ihre Dienste überprüfen.
Alle Prüfungen können den zurückgegebenen Wert verwenden, um das Ergebnis als "gut", "Warnung" und "kritisch" zu klassifizieren. Sie können in nahezu jeder Programmiersprache geschrieben werden.
Natürlich nicht einfach einzurichten (wie Point and Click), aber anpassbar, zuverlässig und erweiterbar. Läuft gut auf verschiedenen Linux- und Unix-Distributionen.
quelle
Testen Sie die Dienste, nach denen Sie suchen. Wenn Sie nur einen Server anpingen, bedeutet dies nicht, dass die Dienste funktionieren.
Zum Beispiel:
Stellen Sie sich einen Webserver mit einem Dutzend Websites vor. Dann muss ich wissen, ob die Websites UP sind. Ich habe mir ein winziges Skript in PHP erstellt und es alle 10 Minuten ausgeführt.
Das Skript macht folgendes ->
quelle
Wenn Sie mithilfe von Ping feststellen, ob ein Server verfügbar ist, überprüfen Sie wie ein Notarzt, ob ein Patient atmet. Ja, es ist ein guter Anfang, aber es kann auch andere Probleme geben.
quelle
Wir
ping
führen eine Vorprüfung durch, um sicherzustellen, dass der Host eingeschaltet und erreichbar ist, bevor wir unseren systemd-Dienst starten, der versucht, eine ssh-Verbindung zu ihm herzustellen. Dies spart Zeit beim Debuggen, da dersystemctl start
Befehl sofort fehlschlägt, anstatt stillschweigend fehlzuschlagen und sich im Journal-Dschungel zu verlieren.Beachten Sie, dass Ping nicht im gleichen Sinne wie TCP "zuverlässig" ist. Wenn Sie eine schlechte Verbindung (oder einen beschissenen Netzwerkstapel, danke Intel mpss ) haben und Pakete verworfen werden, kann ein einzelner Paket-Ping fehlschlagen. Andererseits ist eine TCP-Verbindung gegen verworfene Pakete zuverlässig. Ironischerweise funktioniert eine SSH-Verbindung möglicherweise sofort nach einem einzelnen
ping
Fehler . Wenn Sie also Ping verwenden, um eine Überprüfung der Integrität durchzuführen, müssen Sie einige Fehler zulassen.quelle
Nur meine zwei Cent: Wir haben eine Legacy-Anwendung, die diese Methode verwendet, und mussten sie warten, da der Ping nicht ausreichte, um die Verfügbarkeit des Dienstes zu bestimmen.
Ping zeigt lediglich, dass der Server empfangsbereit ist. In unserem Fall konnte der Dienst jedoch nicht ohne menschliches Eingreifen gestartet werden.
Infolgedessen versuchten Einheiten, die naiv davon ausgegangen waren, dass der Server verfügbar war, eine Verbindung herzustellen und das Zeitlimit zu überschreiten. Stattdessen wird die Meldung "Server ist nicht verfügbar" angezeigt.
-
Unsere aktuelle Anwendung, die über XMLHTTPRequests an einen Webserver kommuniziert, sendet eine Nachricht, die vom Server mit einem Statuscode beantwortet wird. Der Statuscode wird vom Server durch eine Reihe von Überprüfungen berechnet, um sicherzustellen, dass verschiedene Subsysteme online sind (DB, erforderliche Verzeichnisse sind beschreibbar usw.).
quelle
Wenn Ihr Server unter normalen Umständen auf Ping antwortet, ist es hilfreich, ihn alle eine Minute zu pingen, um zu überprüfen, ob er antwortet. Dies sagt Ihnen natürlich nur, dass sich an dieser IP-Adresse ein Server befindet und dass es einen Netzwerkpfad von der Quelle des Pings zum Ziel gibt. Durch Festlegen eines Schwellenwerts für die Antwortzeit können Sie auch den Status des Netzwerks überwachen. Wenn Sie einen Server im Internet anpingen, können Sie möglicherweise nur wenig tun, um das Netzwerk zu reparieren. Wenn jedoch ein Kunde anruft, um sich zu beschweren, sind Sie sich des Problems bereits bewusst. Das Pingen von google.com zusätzlich ist auch nützlich. Wenn Sie und Google beide inaktiv sind, passiert etwas.
Wie bereits erwähnt, ist es wichtig zu überwachen, dass der von Ihnen bereitgestellte Dienst reagiert und dass seine Leistung in Ordnung ist. Das heißt, Sie möchten möglicherweise überprüfen, warum ein Webalter, das normalerweise innerhalb einer Sekunde antwortet, jetzt mit 10 Sekunden antwortet.
Wenn Sie also wissen, dass ein Dienst nicht reagiert und der Ping-Vorgang fehlschlägt, erhalten Sie viel mehr Informationen als nur einen Ansatz. Wenn Sie auch die Prozesse überwachen und wissen, dass Ping antwortet, antwortet der Dienst nicht und der Webserver verfügt nicht über die richtige Anzahl von Prozessen, die Ihnen mitteilen, wo Sie zuerst suchen müssen.
Sie können verrückt werden mit der Überwachung, also überwachen Sie nur genug, um zu sagen, wenn etwas Schlimmes passiert ist oder gefährlich wird. Dh zu viel Austausch,> 90% Festplattenauslastung, hohe Festplattenauslastung, 100% CPU für längere Zeit und denken Sie daran, dass die Überwachung nur ein Denial-of-Service-Angriff ist, der sehr langsam ausgeführt wird.
quelle
Ping (Packet Internet Groper) gibt an, ob Ihr System mit dem System kommuniziert, mit dem Sie eine Verbindung über das Netzwerk herstellen möchten. Es pingt sogar, bedeutet aber nicht, dass der Dienst zum Beispiel RemoteRegistry ausgeführt wird.
Zum Beheben eines Problems ist jedoch Ping erforderlich. Sie können jedes Problem aus der Ferne beheben. Daher hat Ping seine eigene Bedeutung.
quelle
Der beste Weg, den ich in meinen Skripten benutze, ist
Anstelle von rsh können auch Alternativen wie remsh verwendet werden. Dies stellt sicher, dass Ihr Remote-System vollständig gebootet ist und Sie Befehle darauf ausführen können. Ein einfacher Ping-Befehl reicht nicht aus, da das System beim Start der Netzwerkdienste auf den Ping-Befehl reagiert.
quelle
rsh
? "Ja wirklich?" Warum nichtssh
stattdessen verwenden?rsh
vsssh
beiseite, wie funktioniert die Lage, auszuführendate
(vorausgesetzt , Sie sind, zu beginnen) sagt etwas darüber , ob ein Web - Server, SMTP - Server, DNS - Server, lokale Datenbankserver oder Dingsbums ausgeführt wird und in der Lage Anfragen zu bedienen? Besser, Sie fragen nach dem Dienst, dessen Verfügbarkeit Sie überprüfen möchten (dies kann eine Remote-Shell sein, muss es aber nicht sein).Wenn ich einen Windows-Server neu starte, öffne ich ein Eingabeaufforderungsfeld und gebe ein
Zuerst wird es vorschlagen, dass es verfügbar ist - das ist die Kiste, die nach unten geht. Dann bekommst du viel "Anforderungs-Auszeit". Wenn Sie anfangen, Antworten zu erhalten, ist die Box aktiv.
quelle