Erweitertes Monitoring: Wie php richtig mitloggen?

TribunM

Erfahrenes Mitglied
Hallo,

also ich habe eine Nachfrage bezüglich den Möglichkeiten für ein erweitertes Monitoring.
Was empfehlt ihr da? Also im konkreten möchte ich mitloggen wenn eine Seite z.b. abbricht, weil ein Fehler aufgetreten ist oder wenn eine Antwort von einem Script einfach ausfällt.

Wird das vom Apache vielleicht sowieso mitgeloggt? Ziel ist, dass ich mitkriege wenn eben solche Fehler auftreten und ich dann reagieren kann. Ich kann mir zwar z.b. eine E-mail schicken lassen, wenn ein Ergebnis falsch ist, aber wenn es eben ausbleibt weil die Seite nicht richtig läd oder abbricht bekomme ich logischerweise nix.

Wie kann man das abfangen und welche Möglichkeiten gibt es so?

Vielen Dank für eure Tipps.
 
Grundsätzlich hängt die Art des Loggings (konkrete Implementierung) natürlich davon ab, wie du deine Seite gebaut hast. Sprich prozedural oder eher in OOP.

Da PHP als Webserver-Modul läuft und kontext-bezogen ist, gilt der Aufruf als beendet, wenn der Apache oder welcher Webserver auch immer das Ergebnis der Parser entgegen genommen hat. Danach kann PHP nichts mehr mitbekommen. Sollte klar sein. Auch der Apache/$anderer_webserver wird das nicht mitloggen, da im Regelfall nicht gebraucht.

Wie man das mit dem Ergebnis machen könnte, wäre durch die folgende Idee beschrieben: Merke dir, wann die Anfrage abgeschickt wurde (z.B in einer DB). Wenn die Bestätigung durch den Benutzer rein kommt, kannst du die Anfrage als erledigt markieren. Minütlich/$belieber_zeitrahmen prüfst du mittels Cronjob/Geplanter Task/anderer zeitgesteuerter Dienst, ob seit längerer Zeit Anfragen (durch den Benutzer) unbeantwortet liegen geblieben sind. Wenn ja, E-Mail raus oder beliebige andere Reaktionen.

Kurz gesagt: Für dein Vorhaben gibt es kein Rezept, nach dem man vorgehen könnte. Wenn du etwas klarer in der Fragestellung bist, kann man dir vllt. helfen. So ist es eine Glas-Kugel-Aufgabe.
 
Nein du beschreibst das schon richtig. Die Idee mit Cron ist mir auch schon gekommen, aber dachte das geht über den Apache. Also müsste ich das dann so machen. Ich schreibe den Request in die Datenbank. Kommt der Resonse, schreibe ich den auch dort rein. Kommt keiner, so wird ein Fehler aufgetreten sein. Klingt erstmal logisch :)

Die Requests schreibe ich bereits in die Datenbank und die Responses auch. Mir fehlt also im Grunde genommen noch die "Monitoringschicht". Die löse ich dann also nach deiner Meinung über SQL anstatt über Apache.

Also schicke ich entweder nen Cron oder nen SQL Ereignis die den Response überprüft. Ja so könnte ich mir das vorstellen. So ne Abfrage dürfte nicht viel Ressourcen benötigen?
 
ne denke programmtechnisch ist das einfach. Eher vom Konzept mehr Aufwand, was überprüft wird, wie das geschieht und natürlich was dann passieren soll. Aber vom Aufbau her ist mir das schon fast klar. Werde dann am Anfang der Seite eine Abfrage Start und am Ende eine mit Ende und den Parametern machen. Kommt da unten nix oder etwas falsch an, kann man das ja mit verarbeiten und an so einen Monitoringdienst schicken lassen.

Hast du vielleicht eine Empfehlung welcher da gut ist und evtl. nicht viel oder sogar gar nichts kostet?
 
Ne Zend und ich wir sind nicht die besten Freunde ;)
Was hältst du von so Online Services wie z.B. http://www.paessler.com?

Da gibt es ja noch zig andere. Vielleicht kann Jemand auch noch andere empfehlen, aber hört sich nicht schlecht an.
 
Du musst folgendes machen:
log_errors einschalten und error_reporting auf E_ALL | E_STRICT setzen (PHP 5.2) bzw. E_ALL (PHP5.3). Dann tauchen die alle im error.log des Apache auf. Beides lässt sich per php.ini einstellen oder zur Laufzeit mittels
PHP:
ini_set('log_errors', 'On');
error_reporting(E_ALL | E_STRICT);
 
Ich weiß nicht, was dir ein Netzwerk-Monitor bringen soll, bei einem Server, der im Internet steht. Ich denke mal, du würfelst hier ein paar Sachen durcheinander.

Was du willst, ist ein App-Server, der Profiling-Features anbietet. Zend ist der einzige mir bekannte, der das für PHP kann. Vielleicht bekommst du ja PHP auf einem JBoss zu laufen (Witz!) ;-)
 
Hm naja der Netwerkmonitor bringt mir soviel, indem ich ihn auch sagen kann führe Abrage X aus und prüfe nach Y. Dann je nachdem was Y beinhaltet kann ich Mails vershicken oder Alarm ausgeben etc. Dachte das wäre nicht schlecht, wenn man das mit SQL löst halt.
 
Zurück