2012-03-31 6 views
0

Ich erstelle eine Spielserverliste, und ich möchte die Betriebszeit für bestimmte Server messen (um genau zu sein, sollte die Betriebszeit in Prozent angezeigt werden).Serverlaufzeit messen

Ich habe einen Cronjob für mein Skript konfiguriert, der alle 5 Minuten überprüft, ob der Server hoch oder runter ist, so dass ich den Serverstatus einfach abrufen kann.

Ich brauche eine Idee, wie ich die Betriebszeit jedes Servers basierend auf den obigen Daten messen kann. Müsste ich jede Minute, die das Skript ausführt, Zeit für jeden Server sparen?

Antwort

2

Wenn Ihnen viele Details egal sind und Sie nur die Auf- und Ab-Zeit haben wollen. Dann könnten Sie 2 Zahlen in einer Datei speichern, wobei eine der aktuelle Prozentsatz und die andere die aktuelle Anzahl von Takten des Skripts ist.

Zum Beispiel: '96 800 '.

Dann, wenn das Skript ausgeführt wird, wird diese Formel verwenden, unter der Annahme, dass der Anteil (96) ist, X ist die Anzahl der spart ist Y (800) und die aktuelle Maßnahme ist Z (0 oder 1)

X=X/100; 
X=(X*Y+Z)/(Y+1); //You get the new value of the percentage, X. Be careful as they need to be long values. 
Y=Y+1; //And the current number of interactions. 
X=X*100; 

Das ist natürlich nur Pseudo-Code und wird nicht sofort funktionieren, es ist nur, um Ihnen eine Idee von einer Möglichkeit zu geben, es zu tun. Sie müssen auch eine Möglichkeit zum Lesen einer Datei und zum Speichern dieser Datei an einer beliebigen Stelle Ihrer Seite, die diese 2 Zahlen enthält, angeben.

Wie Jamie feststellte, geht das davon aus, dass trotz des Serverabsturzes die Seite immer noch funktioniert.

PS, Sie könnten auch ein System von einem anderen Server hinzufügen, um diese Serververfügbarkeit zu überprüfen, aber es müsste statistisch berechnet werden (und der Fehler tendiert zu 0, wenn viele andere Server hinzugefügt werden, aber das wäre zu schwierig) da Sie die Betriebszeit des anderen Servers auch berücksichtigen müssen ...

+0

Und dann, basierend auf Ihrer Formel, Server-Verfügbarkeit wird verringert, wenn offline und erhöht, wenn online, oder? – Cyclone

+0

Genau. Wenn Z = 0 ist, tut dies (für das gegebene Beispiel) X = 0,96 · 800/801, was tatsächlich die Betriebszeit verringert und 800/801 <1 ist. Auf der anderen Seite, wenn Z = 1 ist, gilt X = (0,96 · 800 + 1)/801. Es kann bewiesen werden, dass dies etwas größer als 0,96 ist (nicht in diesem winzigen Kommentar). Aber es ist nicht die reine Betriebszeit, in der Sie reden, es ist Betriebszeitprozentsatz, wie Sie gefragt haben. –

+0

Okay, danke für diese großartige Antwort. – Cyclone

0

Sprechen Sie über den Apache-Server oder den gesamten Computer-Server? Wenn Sie nur Apache Überwachung:

Wenn Sie das gesamte System überwachen möchten, Cronjobs vielleicht ein bisschen sinnlos, da sie nicht ausgeführt werden, wenn ihre Host-Betriebssystem heruntergefahren ist. In diesem Fall sollten die Serverprotokolle alle Informationen enthalten, die Sie benötigen.

0

Ihre Frage ist nicht klar.Wenn Sie Remote-Server-Verfügbarkeitsstatus erhalten möchten, ist SSH eine Option.Schedule Cron in einem Server für ein Skript, das Remote-Verfügbarkeit für andere überprüfen wird.

-1

Wenn Ihre "Spieleserver" in virtuellen Unix- oder Linux-Maschinen laufen, könnte es eine bessere Idee sein, die tatsächliche Server-Betriebszeit zu messen.

In Unix-ähnlichen Betriebssystemen, haben Sie einen Befehl uptime genannt:

[[email protected] ~]$ uptime 
6:37PM up 10 days, 1:26, 52 users, load averages: 0.26, 0.35, 0.34 
[[email protected] ~]$ 

Wenn Sie die Möglichkeit zum Ausführen von Shell-Befehlen von PHP haben, dann können Sie diese Ausgabe in eine Variable in PHP erfassen und analysieren es um die tatsächliche Serververfügbarkeit zu bestimmen. Zeichnen Sie dies auf, wo immer Sie möchten, aber eine der beliebtesten Möglichkeiten ist die Verwendung von RRDTool Graphen. RRD ist das Datenbankformat, dann können Sie Werkzeuge wie Munin oder Cacti verwenden, um die Graphen zu erstellen. Könnte interessanter sein als nur die Betriebszeit als eine Nummer!

Auf der anderen Seite, wenn Sie möchte auch die Fähigkeit benachrichtigen Menschen automatisch, wenn ihre Server offline gehen, und Sie wollen die Flexibilität, jede Art von Service (HTTP, SMTP, Unreal Server, was auch immer) zu überwachen Sehen Sie sich Tools wie Nagios oder Icinga an.

1

Sie könnten die /proc/uptime Datei analysieren. Es ist eine Textdatei auf Linux (die Sie nacheinander lesen sollen), die Verfügbarkeit der Server-Maschine geben:

% cat /proc/uptime 
    129657.69 506917.57 

Mehr Details in der proc(5) -Handbuchseite.

PS. Beim Lesen des /proc/ Dateisystems (mit Pseudodateien) ist keine echte Datenträger-IO beteiligt. Das Lesen ist also sehr schnell.