Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Server-Administration » Cronjob: fsockopen() auf *eigenem* Server? Antworten
Cronjob: fsockopen() auf *eigenem* Server?

MrMilla
Pixelschubser


Beiträge: 4


Hallo liebe Webworker!
Auf meinem Rootserver hoste ich einige Sites - darunter auch kommerzielle. Aus diesem Grund war ich schon immer sehr interessiert daran, wie gerade der load ist und ob der Server überhaupt noch up ist.
Ich habe mir also (im Schweiße meines Angesichts ) einen Cronjob gebastelt, der 15-minütlich ein PHP-Script aufruft, das per fsockopen() prüft, ob Port 80 (=HTTP) erreicht werden kann. Wenn nicht gibt's ne Alarm-Mail an mich.
So weit so gut - aaaaaber...: Bringt das überhaupt was? Ich meine, wenn die Maschine steht, dann steht sie!?! Dann ist Port 80 nicht erreichbar - und crond läuft dann wohl auch nicht mehr, oder? Und selbt wenn crond es noch tut; PHP dürfte dann wohl kein mail() mehr raushauchen können, oder?
Wäre es vielleicht sicherer, den Job von einer ganz anderen Maschine aus zu starten?
Fragen über Fragen...

So far...

P.S.: "Pixelschubser" finde ich ja großartig!

---
"Künstliche Intelligenz ist allemal besser als natürliche Dummheit."
(Hans Matthöfer)

Diese Nachricht wurde geändert von: MrMilla
  Profil   E-Mail   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Geht ist dir um die Auslastung und/oder um die Tatsache ob der Rechner überhaupt nocht erreichbar ist? Die Auslastung kann man schlecht überprüfen. Linux führt eigentlich alle Aufgaben die es bekommt aus. Wenn auch zeitverzögert.

Am einfachsten wäre es wenn der Rechner eine Mail schickt wenn er online ist. Ist er abgestürzt kommt dann keine an.


---
Michael
Reads Mails Really Fast
rm -rf /* &

  Profil   E-Mail   Website   Editieren   Zitieren

MrMilla
Pixelschubser


Beiträge: 4


Die Auslastung kann man schlecht überprüfen.
Ich finde, mit uptime geht das sogar ganz angenehm und komfortabel!

Am einfachsten wäre es wenn der Rechner eine Mail schickt wenn er online ist. Ist er abgestürzt kommt dann keine an.
Das ist tatsächlich die einfachste Lösung - aber auch die unkomfortabelste/unprofessionellste. Ich möchte nicht den ganzen Tag lang Status-Mails à la "Alles OK" bekommen, sondern eben nur dann, wenn was nicht in Ordnung ist.

BTW, ich habe Erfolg (?) zu vermelden: Meine "Server down!"-Mails sind heute Nacht um:
0:00, 0:02 und um 02:02, 02:03, 02:04, 02:06, 02:10, 02:12 versendet worden.
Schaue mir jetzt mal die Logs an, was da so für Scripts gelaufen sind.

Macht mich schon etwas stutzig, weil mein job eigentlich stündlich laufen soll (und nicht minütlich):
1:
* 0-23/1 * * *

So far...


---
"Künstliche Intelligenz ist allemal besser als natürliche Dummheit."
(Hans Matthöfer)

Diese Nachricht wurde geändert von: MrMilla
  Profil   E-Mail   Editieren   Zitieren

MrMilla
Pixelschubser


Beiträge: 4


Update:
Hmmm... Die Confixx-Scripts sind zu "krummen" Zeiten gelaufen:

Web-Transfer : 01:06
FTP-Transfer : 02:06
Speicher: 03:06 Uhr

Schon komisch... Alle um 6 Minuten nach voller Stunde... Hier ist wohl die Fachmeinung eines Providers gefragt (Rieke?).
Ist es tatsächlich so, dass die Scripts, die Web-Transfer und FTP-Transfer messen erstmal den HTTP-Port abschalten - und dann 6 Minuten zum zählen brauchen? Nee...

So far...

---
"Künstliche Intelligenz ist allemal besser als natürliche Dummheit."
(Hans Matthöfer)

  Profil   E-Mail   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


Ich würde von einer anderen Domain bei einem anderen Server angesteuert über einen Cronjob deinen Server mit fopen() oder so ansteuern und die eventuellen Fehler per E-Mail melden. Vom eigenen Server Fehlermails à la "Server tot" schicken wollen grenzt schon an ... naja

---
Arbeit ist das Feuer der Gestaltung. - Marx

Diese Nachricht wurde geändert von: Philipp Gérard
  Profil   E-Mail   Website   Editieren   Zitieren

MrMilla
Pixelschubser


Beiträge: 4


grenzt schon an ... naja

Haste ja nett ausgedrückt, aber genau das ist ja meine Frage! Kann der Server noch Mails schicken, wenn HTTP "ausfällt" oder nicht? Wenn nicht, stimme ich 100%ig mit Dir überein.

---
"Künstliche Intelligenz ist allemal besser als natürliche Dummheit."
(Hans Matthöfer)

  Profil   E-Mail   Editieren   Zitieren

Rieke
Foren-Team


Beiträge: 1503


Natürlich kann der Server unter Umständen noch E-Mails verschicken wenn "nur" der Apache down ist.
Es laufen mehrere Dienste auf deinem Server die du bei Eingabe von pstree sehen kannst. Ein Dienst ist der Apache also der httpd Dämon , ein anderer Dienst ist eventuell postfix, SMTP, MySQL , FTP ect.
Jetzt ist die Frage, aus welchem Grund könnte dein Server ausfallen und was genau bezeichnest du als Ausfall, denn die Dienste können auch einzelnd ausfallen.

Wenn der Server überlastet wird, z.B. durch schlechte Sripte, krasse DB Abfragen, hohe Besucherzahlen, DOS Angriff, oder sogar eine extreme Spamm Welle, dann steigt die load average auf ein vielfaches dessen was der Server in der Lage ist zu leisten.
Wie hoch das steigen kann bevor der Server ernsthafte Probleme bekommt ist unterschiedlich, ich kenne Server die bei einer Load von 3 kaum noch aus der Hufe kommen und wir hatten einmal einen minni Server der mit einer Load von 19 (also etwa 19-fach überlastet) noch in relativ normaler Geschwindigkeit Webseiten anzeigte...

Wenn der Server mit der Last nicht mehr fertig wird, beginnt er einzelne PIDs also einzelne Prozesse/Anfragen/Aufgaben zu killen weil ihm sozusagen der Atem ausgeht.

Es ist möglich das der httpd Daemon ausfällt aber der SMTP Daemon noch läuft(kann mails noch versenden, nur wenn das versendende Script welches per cronjob aufgerufen wird ein php Script ist .. wird das php script nicht mehr laufen wenn php als teil des apaches läuft ...) , aber es kann auch sein das der httpd Daemon noch läuft aber MySQL, FTP und SMTP berereits down ist ..

Wenn du einen zuverlässigen Monitor möchtest, musst du von einem andern Server, wenn möglich aus einem anderen Netz sämtliche dir wichtigen Dienste abfragen. Also jede x-Zeit testen ob der SMTP, Pop, httpd, MySQL, SSH und FTP Dienst noch antwortet und die Load auslesen. Wenn x - mal hintereinander eine Fehlermeldung kommt oder die Load dauerhaft über einem gewissen Wert liegt, lässt du dir eine E-Mail schicken, am besten gleich so das du auch eine sms bekommst .. dann hast du einen tauglichen Monitor so in etwa wie wir ihn einsetzen.
(puh, nicht einfach sowas zu erklären)

Das ganze nur mal so als grobe Denk-Hilfe, weiter ins Detail wie dabei was funktioniert werde ich nicht gehen, aber ich denke es hilft ein klein wenig weiter

Rieke



---
Blumenbeet

  Profil   E-Mail   Website   Editieren   Zitieren

NetDrag
Foren-Team


Beiträge: 461


Zu sehen ob der Server noch online ist würde ich Heartbeat verwenden.
Harbeat schickt kleine Pakete zwischen zwei Rechnern hin und her um zu sehen ob die Rechner noch antworten.

Den Apache z.B. wirst du nur schwer killen können. Es ist unwahrscheinlich daß ein Programm einfach aufhört zu laufen. es ist wahrscheinlicher daß das programm blockiert. aber da noch festzustellen ob es reagiert ist schon schweriger. Du könntest ein programm schreiben das den sienst über telnet anspricht und den output auswertet. Da wird die Sache schon schwieriger. Leichter ist es sicher gelegentlcih mal reinzuschauen und die ganzen Dienste zu patchen wenn es Probleme gibt.

---
We are born wet, naked and hungry, then things got worse!

  Profil   Website   Editieren   Zitieren

c3o
Posting-Schinder


Beiträge: 586


Wenns denn nur stündlich sein soll, kannst du auch einen der dutzenden Gratis-Services benützen, zB: http://www.watchmouse.com/de/

Diese Nachricht wurde geändert von: c3o
  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben