Advertisement
  1. Code
  2. Web Development

Wie kann man New Relic mit PHP und WordPress benutzen?

by
Read Time:14 minsLanguages:
This post is part of a series called Performance Monitoring With New Relic.
Using New Relic to Monitor Your Android App
Optimizing Application Performance with New Relic for iOS
Sponsored Content

This sponsored post features a product relevant to our readers while meeting our editorial guidelines for being objective and educational.

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Wir haben bereits erläutert, wie New Relic für eine Rails-Anwendung eingerichtet wird, und viel Zeit damit verbracht, die Verwendung der New Relic-Benutzeroberfläche zu untersuchen. Und obwohl die Benutzeroberfläche unabhängig von der verwendeten Sprache und dem verwendeten Framework sehr ähnlich ist, kann die Einrichtung von New Relic radikal anders sein. Heute werden wir uns ansehen, wie eine PHP-Anwendung mit New Relic überwacht wird. Insbesondere werden wir eine grundlegende WordPress-Installation einrichten und einige Leistungsdaten dazu in den New Relic-Dashboards abrufen.

Das Einrichten von New Relic für Ruby ist sehr umweltunabhängig. Wir fügen einfach den Agenten-Edelstein zu unserer Anwendung hinzu. Unabhängig davon, wie wir unsere Anwendung bereitstellen (Passenger + Apache, Thin + Nginx usw.), erledigt der Edelstein den Rest der Arbeit, um sicherzustellen, dass wir unsere Leistungsmetriken erhalten. Bei der PHP-Version des Agenten ist die Umgebung viel wichtiger, da der Agent installiert ist und sich auf der Box befindet, auf der die Anwendung bereitgestellt wird, anstatt Teil einer bestimmten Anwendung zu sein.

Lassen Sie uns eine Sandbox einrichten, mit der wir spielen können (mithilfe einer EC2-Instanz) und eine grundlegende WordPress-Installation zum Laufen bringen.

Einrichten unserer Sandbox

Wir werden hier nicht zu sehr ins Detail gehen, da die meisten Dinge, die wir tun müssen, an anderer Stelle gut dokumentiert sind. Aber hier ist eine grundlegende Übersicht.

Wir müssen eine EC2-Instanz mit Ubuntu Server 12.04 LTS starten. Wenn Sie keine EC2-Instanz einrichten möchten, können Sie stattdessen einfach eine virtuelle Maschine mit VirtualBox (oder dem VM-Tool Ihrer Wahl) erstellen. Wenn Sie eine EC2-Instanz einrichten, müssen Sie Folgendes beachten:

  • Laden Sie Ihren Schlüssel herunter (wenn Sie während des Einrichtungsvorgangs einen neuen erstellt haben), damit Sie SSH in Ihre Instanz einbinden können
  • Fügen Sie jeder Sicherheitsgruppe, die Sie Ihrer Instanz geben, eine zusätzliche Regel hinzu, um HTTP-Verbindungen zur Instanz zuzulassen (damit wir später über den Browser auf unser WordPress-Blog zugreifen können).

Abgesehen davon sollte alles andere ziemlich einfach sein und Sie sollten eine laufende Instanz (oder virtuelle Maschine) haben, die für den nächsten Schritt bereit ist.

Wir müssen jetzt Apache, PHP und MySQL installieren. Mit Ubuntu Server sollte es einfach sein, die folgenden Befehle auszuführen:

Sie müssen LAMP in der Benutzeroberfläche auswählen und Ihr MySQL-Passwort eingeben, wenn Sie dazu aufgefordert werden (ich lasse es einfach leer, da es uns egal ist, ob diese Box in irgendeiner Weise sicher ist). Sobald die Installation abgeschlossen ist, können wir einige Befehle ausführen, um sicherzustellen, dass alles ohne Probleme installiert wird.

Überprüfen Sie zunächst, ob Apache installiert ist:

Zweitens überprüfen Sie, ob wir PHP haben:

Und dann überprüfen Sie, ob wir MySQL haben:

Möglicherweise müssen wir auch überprüfen, ob PHP in unserer Apache-Konfiguration tatsächlich aktiviert ist, aber da wir den lamp-server mithilfe von tasksel installiert haben, können wir ziemlich sicher sein, dass dies der Fall ist (und wir können immer ein schnelles phpinfo()-Skript ausführen, wenn wir dies wirklich möchten prüfen).

Wir können jetzt WordPress installieren. Bevor wir es tatsächlich herunterladen, müssen wir eine Datenbank dafür einrichten. Wir können einfach den Anweisungen aus dem Codex folgen:

Ich werde unsere neue Installation myblog1 aufrufen (daher heißt die Datenbank auch myblog1). Wir müssen jetzt die folgenden Befehle ausführen, um unser Blog zum Laufen zu bringen (vergessen Sie nicht, bei Bedarf sudo zu verwenden):

Geben Sie nun Ihren Datenbanknamen, Benutzernamen und Ihr Passwort in die Konfigurationsdatei ein (der Hostname ist localhost, der standardmäßig vorhanden ist). An diesem Punkt sollten Sie in der Lage sein, zu Ihrem Browser zu wechseln, die richtige URL zu treffen (in meinem Fall http://ec2-107-20-122-116.compute-1.amazonaws.com/myblog1) und WordPress wird dies tun Sache (es könnte nicht schaden, Apache vor diesem Neustart des sudo apache2 service restart).

Unsere Sandbox ist jetzt fertig und wir können mit der Installation von New Relic beginnen.

New Relic installieren

Wie bereits erwähnt, befindet sich der PHP New Relic-Agent auf der Box. Daher ist es sinnvoll, ihn mit dem Paketmanager des Betriebssystems zu installieren (apt-get, da wir Ubuntu verwenden). Als erstes müssen Sie den New Relic-Repository-Schlüssel importieren:

Jetzt fügen wir das New Relic-Repository selbst zum System hinzu:

Zu diesem Zeitpunkt können wir Standard-apt-Befehle verwenden, um den Agenten zu installieren:

Dadurch wird das PHP-Agentenpaket aus dem Repository abgerufen und das Agenteninstallationsskript auf dem System abgelegt. Das Skript heißt newrelic-install und befindet sich in /usr/bin, sodass Sie es von überall aus ausführen können sollten. Das Skript hat auch einen leider etwas benannten Namen, da Sie damit New Relic sowohl installieren als auch von Ihrem System deinstallieren können. Um New Relic zu installieren, müssen wir Folgendes ausführen:

Das Skript ist interaktiv und fordert Sie auf, Ihren Lizenzschlüssel einzugeben. Sie finden dies, indem Sie die große rote Taste drücken, wenn Sie eine neue PHP-Anwendung in der New Relic-Benutzeroberfläche einrichten.

Wenn Sie mehr als eine PHP-Installation auf Ihrem System haben, werden Sie auch aufgefordert, die Installation auszuwählen, für die New Relic installiert werden soll (Sie können eine beliebige Anzahl von Installationen auswählen, einschließlich aller). Wenn Sie nur das eine PHP auf Ihrem System haben, verwendet das Skript nur dieses. Wenn Ihre PHP-Version älter als 5.2 ist, wird das Skript gerettet, da ältere Versionen nicht unterstützt werden.

Wenn alles gut geht, sollte folgende Meldung angezeigt werden:

Das Skript druckt dann einige zusätzliche Informationen für Sie aus, einschließlich des Speicherorts der Protokolldateien:

Sowie die Tatsache, dass Sie Ihren Webserver neu starten müssen (und PHP-FPM, wenn Sie es verwenden).

Wenn Sie Ihren Server neu starten und das Daemon-Protokoll beenden, sollte Folgendes angezeigt werden:

Etwas namens PHP-Anwendung berichtet. Dies ist etwas allgemein gehalten und sieht nicht wie unser WordPress-Blog aus, aber es ist ein guter Anfang. Dies bedeutet, dass alle Anwendungen auf Ihrem Webserver ausgeführt werden und als dieselbe Anwendung an New Relic gemeldet werden. Diese Anwendung hat den Standardnamen PHP-Anwendung .

In unserem Fall könnten wir, da wir nur eine Anwendung ausführen (unsere WordPress-Installation), tatsächlich in die New Relic-Benutzeroberfläche springen und angemessene Statistiken für unser Blog erhalten. Aber natürlich möchten wir unserem Blog einen besseren Namen geben und für alle Fälle möchten wir, dass unser Server mehr als eine Anwendung bedient. Wir wollen auch sehen, wie man Anwendungen voneinander trennt. Wir werden uns in Kürze ansehen, wie das geht, aber bevor wir das tun, wollen wir sehen, was einen PHP-Agenten eigentlich ausmacht.

Wie aussieht eine gesunde Installation? 

Der New Relic PHP-Agent besteht aus zwei Teilen. Die erste ist eine PHP-Erweiterung, ein gemeinsames Objekt namens newrelic.so. Wenn wir uns die Agentenkonfigurationsdatei ansehen:

Wir können es ganz oben sehen:

Dies ist die Sache, die tatsächlich die Statistiken von Ihren Anwendungen sammelt, aber sie sendet die Statistiken nicht an New Relic. Dies ist die Aufgabe des Proxy-Daemons.

Der Agentendämon ist ein Proxy zwischen der PHP-Erweiterung und den New Relic-Servern. Im Wesentlichen gibt die PHP-Erweiterung die gesammelten Daten an den Dämon weiter, und der Dämon führt beispielsweise Stapelversuche durch und ermittelt, wann sie an den Server gesendet werden sollen. Sie müssen immer sicherstellen, dass der Dämon ausgeführt wird, da sonst keine Daten an New Relic gesendet werden. Glücklicherweise versucht die PHP-Erweiterung bei jedem Neustart Ihres Servers standardmäßig zu erkennen, ob der Dämon ausgeführt wird, und startet ihn, falls dies nicht der Fall ist.

Ein laufender Proxy-Daemon verfügt über zwei Prozesse. Einer ist ein Überwachungsprozess und der zweite ist der Arbeiter. Der Worker kommuniziert tatsächlich mit den New Relic-Servern. Der Überwachungsprozess überwacht den Worker einfach und wenn der Worker aus irgendeinem Grund stirbt, wird ein neuer erstellt. Sie können den Dämon stoppen, indem Sie Folgendes ausführen:

Dadurch wird ein Abschaltsignal an den Überwachungsprozess gesendet. Der Überwachungsprozess beendet dann den Arbeitsprozess und fährt sich selbst herunter. Wenn Sie den Daemon jemals manuell beenden müssen, stellen Sie sicher, dass Sie den Überwachungsprozess zuerst beenden, bevor Sie den Worker beenden (andernfalls wird offensichtlich ein neuer Worker erzeugt).

Konfigurieren des Agenten (und des Proxy-Daemons)

Wir haben bereits die Konfigurationsdatei des New Relic PHP-Agenten /etc/php5/cli/conf.d/newrelic.ini gesehen. Sowohl der Agent als auch der Dämon werden mithilfe dieser Datei konfiguriert.

Diese Datei ist sehr gut dokumentiert, wobei alle Optionen und ihre Standardwerte aufgelistet sind. Lassen Sie uns über das Format dieser Datei sprechen. Der New Relic Ruby-Agent kann über YAML konfiguriert werden, ein bekanntes Format. Der PHP-Agent ist einfach eine Textdatei, aber wir brauchen ein bisschen Struktur. Jede Variable in der Datei hat einen von vier Typen (String, Boolean, Number, Duration). Zeichenfolge und Zahl sind selbsterklärend. Boolesche Werte können wahr true, ein oder 1, um Wahrhaftigkeit anzuzeigen, und false, aus oder 0, um Falschheit anzuzeigen. Die Dauer sind Zeichenfolgen mit einem bestimmten Format, z. B.: "1w3d23h10m" gibt eine Woche, drei Tage, 23 Stunden und zehn Minuten an. Die Werte für die Dauer können so genau wie Mikrosekunden sein.

Alle Variablen in der Datei haben auch einen 'Bereich'. Es gibt drei mögliche Bereiche: SYSTEM, PERDIR und SCRIPT. Variablen mit SYSTEM-Gültigkeitsbereich können nur in der globalen Konfigurationsdatei festgelegt werden. Variablen mit einem PERDIR-Bereich können in der globalen Konfigurationsdatei festgelegt und auch pro Verzeichnis überschrieben werden. Variablen mit Skriptbereich können global pro Verzeichnis sein und auch programmgesteuert überschrieben werden.

Die häufigste Konfigurationsvariable ist beispielsweise `newrelic.appname`. Diese Variable ist ein String-Typ und hat den Standardwert PHP-Anwendung (jetzt wissen wir, warum wir diesen Wert in der Protokolldatei gesehen haben, nachdem wir den Agenten installiert und den Server neu gestartet haben). Der Umfang dieser Variablen ist PERDIR, wodurch wir eine Vorstellung davon bekommen, wie der Anwendungsname für unser WordPress-Blog überschrieben werden kann.

Es gibt viele andere Variablen, die Dinge steuern, wie den Speicherort der Protokolldateien, ob SQL-Abfragen aufgezeichnet werden oder nicht, die Protokollstufe der Protokollausgabe und so weiter. Ich empfehle Ihnen, die Datei newrelic.ini zu studieren, um sich mit den Optionen vertraut zu machen.

Konfigurieren einer separaten Anwendung für unseren WordPress-Blog

Wir möchten eine separate Anwendung in der New Relic-Benutzeroberfläche für unseren WordPress-Blog sehen. Lassen Sie uns also sehen, wie wir dies erreichen können. Ihre Optionen für die Konfiguration pro Verzeichnis sind je nach Stapel unterschiedlich. Wenn Sie PHP-FPM verwenden, sind die Schritte anders als bei Verwendung von Nginx. In unserem Fall haben wir zwei Möglichkeiten, da wir gerade Apache ausführen.

Wenn wir einen virtuellen Host für unsere Anwendung haben, können wir zunächst einen IfModule-Block in unseren virtuellen Hostblock einfügen und dort den Namen der Anwendung ändern:

Ich habe jedoch keinen speziellen virtuellen Host nur für das Blog. Die andere Option ist die Verwendung einer .htaccess-Datei. Stellen Sie sicher, dass Sie tatsächlich .htaccess-Dateien zulassen, indem Sie Folgendes auf Ihrem virtuellen Haupthost speichern:

Wir können jetzt eine .htaccess-Datei in das oberste Verzeichnis unseres Blogs stellen und Folgendes darin ablegen:

Das Format ist genau das gleiche, als würde ich es in den IfModule-Block einfügen. Jetzt müssen wir nur noch unseren Server abprallen lassen. Wenn wir die Daemon-Protokolle beim Neustart des Servers beenden, wird Folgendes angezeigt:

Die PHP-Anwendung ist noch da, aber jetzt hat sie einen Freund, der unser WordPress-Blog ist. Und hier ist es in der Benutzeroberfläche:

Wir erhalten jetzt Metriken, wenn wir unseren Blog durchsuchen, sowohl für das Front-End als auch für die Administrationsoberfläche. Da New Relic WordPress sofort unterstützt, sollten die Metriken sinnvoll aufgeteilt werden (wenn ein Framework nicht unterstützt wird, werden die Metriken in der Regel zusammengefasst).

Agent und Daemon aktualisieren

New Relic ist eine komplexe Software und es ist gut, sie auf dem neuesten Stand zu halten, da Fehler regelmäßig behoben und neue Funktionen hinzugefügt werden. Da wir alles mit apt-get installiert haben, ist es einfach, die Dinge auf dem neuesten Stand zu halten. Wir machen einfach das Gleiche wie bei der Installation:

Wenn wir kein anderes PHP auf dem System installiert haben, müssen wir jetzt einfach unseren Server neu starten und sind auf dem neuesten Stand. Wenn es ein neues PHP gibt, müssen wir möglicherweise das Skript newrelic-install erneut ausführen.

All dies hat nur eine Einschränkung. In bestimmten Situationen führen Sie den New Relic-Proxy-Daemon möglicherweise getrennt vom Agenten aus. Dies bedeutet, dass beim Neustart des Servers der Daemon nicht automatisch gestartet wird, wenn einer nicht ausgeführt wird (dies wird als externer Daemon-Modus bezeichnet). Es kann mehrere Gründe geben, warum Sie dies tun möchten. Beispielsweise möchten Sie möglicherweise, dass ein anderer Benutzer den Daemon-Prozess besitzt, sodass die Protokolle nur für diesen Benutzer sichtbar sind. In dieser Situation müssen Sie daran denken, sowohl den Server als auch den Proxy-Daemon neu zu starten. Wenn Sie dies nicht tun, werden in den Protokollen Fehler angezeigt, die nicht mit dem Protokoll übereinstimmen.

Abschluss

Wie Sie sehen, unterscheidet sich die Einrichtung von New Relic für eine PHP-Anwendung stark von der Einrichtung für Ruby. Ihre eigentliche Anwendung berücksichtigt den Prozess nicht einmal, während die Umgebung, in der Sie sie bereitstellen, von zentraler Bedeutung ist. Glücklicherweise bedeutet dies, dass der Prozess zum Einrichten von New Relic genau der gleiche ist, wenn Sie ein unterstütztes PHP-Framework verwenden. Neben WordPress werden die meisten gängigen PHP-Frameworks unterstützt, darunter Cake, Symphony und Laravel (Version 4 und höher). Es ist auch möglich, New Relic mit einem nicht unterstützten Framework zu verwenden, aber Sie müssen ernsthafte Anstrengungen unternehmen, damit die Metriken einen Sinn ergeben.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.