Monitoring PHP mit New Relic RPM
Ich merke gerade, dass ich noch gar nicht NewRelic vorgestellt habe. In PHP-Cloud-Diensten wie CloudControl oder PHPFog bekommt man direkt auch einen NewRelic-Account, sodass man es kostenlos nutzen und testen kann. Es ist eine Möglichkeit, die Performance von PHP-Scripten zu monitoren, also sowohl Webseiten als auch PHP-CLI-Aufrufe. Es werden neben der Ausführungszeit auch Speicherverbrauch, den Durchsatz (Requests pro Sekunde) und Datenbankqueries geloggt, PHP Errors werden zentral erfasst. Bei Problemen kann man via Email benachrichtig werden, und es werden auch Optimierungsempfehlungen und eine Skalierbarkeitsvorschau gegeben.
NewRelic lässt sich auch auf Produktivsystemen einsetzen, da es die Performance fast nicht beeinträchtigt, XDebug ist beispielsweise zur detaillierten Performance-Messung auf Produktivsystemen nicht geeignet, da es viel zu viel Performance kostet. Falls mehrere Webserver für eine Applikation zuständig sind können diese zusammengefasst werden. Aber auch andersrum ist es möglich, unterschiedliche Ordner auf einem Webserver voneinander zu trennen, sodass sie gesondert betrachtet werden können.
Die Installation ist denkbar einfach unter Linux: Eintrag in die apt-sources und danach apt-get install newrelic-php5
, schon ist die PHP-Erweiterung installiert und aktiviert. Diese Extension loggt die Daten in eine Datei, die von einem Dienst alle paar Sekunden gesammelt an die RPM-Server gesendet werden, wo man dann mit tollen Graphen und Listen alles fast in Echtzeit ansehen kann. Es können auch weitere Zugriffsaccounts angelegt werden, sodass mehrere Personen die Überwachung im Blick haben und analysieren können.
Ich werde wohl in einigen Projekten die Free Version nutzen, denn die anderen Versionen sind viel zu teuer, es reicht von 75 Dollar bis 200 Dollar pro Monat pro Server.
Hier noch einige Screenshots, auf denen man die unterschiedlichen Graphen sehen kann (das ist eine kleine Testinstallation von phpBB). Man kann sehr schnell mit einem Blick erkennen welche Scripte langsam sind, welche Datenbank-Queries am meisten Zeit brauchen, oder wenn ein Server aus dem Verbund schwächelt, und einiges mehr. Am besten selbst ausprobieren, die Lite-Version ist kostenlos.
Sieht ganz interessant aus. Hast du Infos wie sehr die Performance leidet?
Interessant wäre sicher auch ein solches System ohne 3rd-Party Server zu nutzen. Ein PHP-Monitor Piwik 😉
Ich werde mir das Ding sicher mal anschauen!
Norbert
4 Mai 11 at 15:16
@Norbert: Ich meine etwas von 3% gehört zu haben, also in den meisten Fällen 1-5ms, das fällt niemandem auf.
Wenn man „nur“ Error Events behandeln möchte, evtl. einen Blick auf APM werfen:
http://pecl.php.net/package/APM
Um Performance Daten zu sammeln und PHP zu monitoren, in der eigenen Umgebung, gibt es auch noch Pinba:
http://pinba.org/
Genauer angeschaut habe ich es mir noch nicht, aber ich bezweifle dass es genauso viel kann wie newrelic.
Michael Kliewe
4 Mai 11 at 15:41
sowas wäre als freies opensource produkt super
tim
4 Mai 11 at 16:10
Hat zwar nicht direkt was mit dem Thema zu tun, da PHP nicht unterstützt wird. Aber Requests und den Datenbankdurchsatz kann ich zum Beispiel auch mit HypericHQ Monitoren.
http://www.hyperic.com
Christian Kaps
6 Mai 11 at 09:11
Um den Server zu überwachen kann man natürlich auch Xymon (ehem. Hobbit) oder etwas ähnliches benutzen. Der PHP Aspekt ist die einzige Neuerung, die ich bei New Relic sehe.
Und der wichtigste Punkt. Die Statistiken sind hübsch. Das Auge administriert schließlich mit und da gewinnt xymon nicht gerade den Schönheitspreis, ebenso verhält es sich mit pinba.
Tims Vorschlag wäre sicher mal ein Gedanke wert 😀
Norbert
6 Mai 11 at 15:08
Application Monitoring mit NewRelic…
Nicht unbedingt neu, aber es muss auf meinem Blog unbedingt erwähnt werden: NewRelic. Dieser SaaS (Software-as-a-Service) Dienst ist auf den ersten Blick nur ein weiterer Monitoring Dienst, erst auf den zweiten Blick erkennt man seine unheimlichen Stär…
Samuel Klyk
19 Feb 12 at 13:08
Hm, hm, mich interessiert nur: was bringt das? Wenn ich mir mal den Breakdown angucke, in deinem Beispiel jetzt phpBB, sind das alles Infos, die eigentlich jedem Entwickler klar sind (index.php greift auf diverse Sachen zu, sessions-Tabelle wird immer benutzt, …). Bei Eigenentwicklungen weiß ich doch sowieso, wo viel Rechenzeit konsumiert wird. Und brauche ich einen externen Service, der mir eventuelle Programmierfehler oder Endlosschleifen demonstriert?
Würde mich freuen, wenn mir jemand die „ideale Anwendungssituation“ dieses Appmonitorings erläutert. Immerhin hat der Laden $20 Mio an VC eingesackt und der Subscriptionpreis ist ja alles andere als günstig.
huelder
27 Dez 12 at 00:53
@huelder: Also kurz gefasst ist deine Annahme
> Bei Eigenentwicklungen weiß ich doch sowieso, wo viel Rechenzeit konsumiert wird.
falsch, denn ab einer gewissen Komplexität wird es einfach unmöglich die Anwendung in jedem Szenario als Ganzes zu betrachten. Hinzu kommt, dass sich mit steigender Datenmenge und Komplexität auch einzelne Parameter ändern, wie man es ursprünglich nicht berücksichtigt hatte. Jetzt die gesamte Anwendung neu zu evaluieren käme einer Neuimplementierung gleich 😉
KingCrunch
6 Jan 13 at 13:42