Überprüfen Sie das Ping-Update für eine große Anzahl von Maschinen

Überprüfen Sie das Ping-Update für eine große Anzahl von Maschinen

Ich habe eine große Anzahl von Maschinen, deren Verfügbarkeit ich stündlich per Cron prüfen muss. Ich habe fast 1.000 Maschinen, die in 4–5 Namensserien aufgeteilt sind, gefolgt von einer Nummer für jeden Knoten. Sagen wir von ab1000 bis ab1200, von bs3000 bis bs3892, von zx7800 bis zx8900 usw. Momentan verwende ich ein einfaches Ping-Skript, da ich auf diesen Knoten keine Software zur Überwachung laufen lassen kann (ich habe dafür keine Genehmigung). Also rufe ich in meinem Code die Datei auf, in der ich alle Maschinennamen einzeln aktualisiere (glauben Sie mir, ich muss das jeden Tag machen, da die Maschinennamen sehr häufig vorkommen) und frage mich, ob ich reguläre Ausdrücke verwenden kann, um die Maschinen zu erwähnen, da mir das das Leben sehr erleichtern würde. Sagen wir zum Beispiel: ab1*,zx[7-8]* usw. Ich habe versucht, dasselbe in der Eingabedatei zu verwenden, aber das hat nicht viel geholfen. Ein weiteres Problem dabei ist, dass manchmal ein oder zwei Maschinen dauerhaft ausfallen und ich sie nicht jedes Mal zählen muss. Deshalb muss ich es in meiner Warnliste als ausgeschlossen belassen.

Lassen Sie mich auch wissen, ob ich den Alarm noch robuster gestalten kann, z. B. durch einen Alarm, der eine Liste ausgibt, wenn 3/300 sx mit den Maschinennamen sz7701,7702,7703 ausgefallen sind.

cat /tmp/node.txt

zx7800
zx7801
zx7802
.....
....
zx8900
bs3000
bs3001

cat nodecheck.sh

for node in `cat /tmp/node.txt`
do
 count=0
 count=$(ping -c 3 $node | grep "100%packet loss"|wc -l)
 if [ $count -ne 0 ]
 then
  echo "$node" >> /tmp/nodedown.txt
 fi
done

Antwort1

Sie benötigen eine Liste der Namen, die Sie überwachen möchten. Entweder pflegen Sie diese Liste manuell oder Sie extrahieren die Liste aus einer Datenbank, in der jemand anderes die Liste der Maschinen pflegt, die laufen sollen.

Sie können einige Dinge vereinfachen. Der pingBefehl gibt bereits einen Beendigungsstatus zurück, den Sie verwenden können. Außerdem benötigen Sie keine Umleitung für jedes Echo, einmal pro Schleife reicht aus. Dies hat den zusätzlichen Vorteil, dass die Datei initialisiert wird und nicht die Zeilen des letzten Laufs enthält.

for node in $(cat /tmp/node.txt); do
  if ! ping -c 3 $node &> /dev/null; then
    echo "$node"
  fi
done > /tmp/nodedown.txt

Wenn Sie eine Statistik wünschen, können Sie diese entweder zählen, oder Sie verwenden wczum Zählen der Zeilen in den beiden Dateien.

echo "$(wc -l < /tmp/nodedown.txt) / $(wc -l < /tmp/node.txt)"

Antwort2

Alternativen:

  • fpingist wie Ping, aber ausdrücklich für das Pingen mehrerer Hosts konzipiert.
  • was ist losist ein Dienstprogramm zum Überwachen des Betriebs- und Ausfallzustands von Maschinen.

verwandte Informationen