Wir haben bereits zuvor beschrieben, wie Sie New Relic für eine Rails-App einrichten, und haben viel Zeit darauf verwendet, die Verwendung der New Relic-Benutzeroberfläche zu untersuchen. Und obwohl sich die Benutzeroberfläche unabhängig von der Sprache und dem Rahmen, die Sie verwenden, sehr ähnlich ist, kann die Einrichtung von New Relic radikal anders sein. Heute werden wir untersuchen, wie eine PHP-Anwendung mit New Relic überwacht wird. Genauer gesagt werden wir eine grundlegende WordPress-Installation einrichten und in den New Relic-Dashboards einige Leistungsdaten dazu erhalten.
Die Einrichtung eines neuen 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 App implementieren (Passenger + Apache, Thin + Nginx usw.), erledigt der Edelstein den Rest der Arbeit, um sicherzustellen, dass wir unsere Leistungsmesswerte erhalten. Mit der PHP-Version des Agenten ist die Umgebung viel wichtiger, da der Agent installiert ist und sich auf der Box befindet, in der die Anwendung bereitgestellt wird, anstatt Teil einer bestimmten App zu sein.
Lassen Sie uns eine Sandbox einrichten, mit der wir (mit einer EC2-Instanz) spielen und eine grundlegende WordPress-Installation installieren können.
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 einfach eine virtuelle Maschine erstellen, stattdessen VirtualBox (oder Ihr bevorzugtes VM-Tool). Wenn Sie eine EC2-Instanz einrichten, müssen Sie Folgendes beachten:
Abgesehen davon sollte alles andere einfach sein und Sie sollten mit einer laufenden Instanz (oder virtuellen Maschine) enden, 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:
sudo apt-get install tasksel Sudo tasksel install lamp-server installieren
Sie müssen LAMP in der Benutzeroberfläche auswählen. Außerdem müssen Sie Ihr MySQL-Kennwort eingeben, wenn Sie dazu aufgefordert werden (ich lasse es einfach leer, da wir uns nicht für die Sicherheit dieser Box interessieren). Sobald die Installation abgeschlossen ist, können wir einige Befehle ausführen, um sicherzustellen, dass alles problemlos installiert wird.
Überprüfen Sie zunächst, ob Apache installiert ist:
ubuntu @ ip-10-145-246-196: ~ $ apache2 -V Serverversion: Apache / 2.2.22 (Ubuntu) Server erstellt: Jul 12 2013 13:37:10 Servermodul Magic Number: 20051115: 30 Server geladen: APR 1.4.6, APR-Util 1.3.12 Kompiliert mit: APR 1.4.6, APR-Util 1.3.12 Architektur: 64-Bit-Server-MPM: Prefork-Thread: nein gegabelt: ja (variable Prozessanzahl)…
Zweitens prüfen Sie, ob wir PHP haben:
ubuntu @ ip-10-145-246-196: ~ $ php -i phpinfo () PHP-Version => 5.3.10-1ubuntu3.10 System => Linux ip-10-145-246-196 3.2.0-58- virtuell # 88-Ubuntu SMP Di 3. Dez 17:58:13 UTC 2013 x86_64 Erstellungsdatum => 28. Februar 2014 23:13:16 Server API => Unterstützung des virtuellen Verzeichnisses für die Befehlszeilenschnittstelle => Deaktiviert den Pfad der Konfigurationsdatei (php.ini) => / etc / php5 / cli Geladene Konfigurationsdatei => /etc/php5/cli/php.ini…
Und dann prüfen, ob wir MySQL haben:
ubuntu @ ip-10-145-246-196: ~ $ mysql --version mysql Ver 14.14 Distrib 5.5.35 für debian-linux-gnu (x86_64) unter Verwendung von readline 6.2
Möglicherweise müssen wir auch überprüfen, ob PHP in unserer Apache-Konfiguration tatsächlich aktiviert ist, aber da wir installiert haben Lampenserver
mit tasksel
Wir können ziemlich sicher sein, dass dies der Fall ist (und wir können immer schnell vorgehen phpinfo ()
Skript, wenn wir wirklich prüfen wollen).
Wir können jetzt WordPress installieren. Bevor wir es tatsächlich herunterladen, müssen wir dafür eine Datenbank einrichten. Wir können einfach den Anweisungen des Codex folgen:
ubuntu @ ip-10-145-246-196: ~ $ mysql Willkommen beim MySQL-Monitor. Befehle enden mit; oder \ g. Ihre MySQL-Verbindungs-ID lautet 103 Server-Version: 5.5.35-0ubuntu0.12.04.2 (Ubuntu) Geben Sie 'help;' ein. oder '\ h' um Hilfe. Geben Sie '\ c' ein, um die aktuelle Eingabeanweisung zu löschen. mysql> CREATE DATABASE myblog1; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) Mysql> GRANT ALL PRIVILEGES ON myblog1. * TO "myblog1_user" @ "localhost" IDENTIFIED BY "abc123"; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) Mysql> FLUSH PRIVILEGES; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) Mysql> EXIT Bye
Ich werde unsere neue Installation anrufen meinblog1
(so wird auch die Datenbank dafür benannt meinblog1
). Wir müssen jetzt die folgenden Befehle ausführen, um unseren Blog zum Laufen zu bringen (vergiss das nicht) Sudo
wenn nötig):
cd / var / www wget http://wordpress.org/latest.tar.gz tar -xzvf latest.tar.gz mv wordpress myblog1 cd myblog1 mv wp-config-sample.php wp-config.php
Geben Sie nun Ihren Datenbanknamen, Ihren Benutzernamen und Ihr Kennwort in die Konfigurationsdatei ein (der Hostname ist localhost
was ist standardmäßig da). An diesem Punkt sollten Sie in der Lage sein, zu Ihrem Browser zu gelangen, und klicken Sie auf die richtige URL (in meinem Fall) http://ec2-107-20-122-116.compute-1.amazonaws.com/myblog1
) und WordPress wird seine Sache tun (es kann nicht schaden, Apache neu zu starten, bevor Sie dies tun sudo apache2 service neu starten
).
Unsere Sandbox ist nun fertig und wir können mit der Installation von New Relic beginnen.
Wie bereits erwähnt, befindet sich der PHP New Relic-Agent auf der Box. Daher ist es sinnvoll, dass Sie ihn mit dem Paketmanager des Betriebssystems installieren können (apt-get
da wir Ubuntu verwenden). Als erstes müssen Sie den Repository-Schlüssel New Relic importieren:
wget -O - https://download.newrelic.com/548C16BF.gpg | sudo apt-key hinzufügen -
Jetzt fügen wir das New Relic-Repository selbst dem System hinzu:
sudo sh -c 'echo "deb http://apt.newrelic.com/debian/ newrelic nicht frei"> /etc/apt/sources.list.d/newrelic.list'
An dieser Stelle können wir Standard verwenden geeignet
Befehle zum Installieren des Agenten:
sudo apt-get Update Sudo apt-get installieren Sie newrelic-php5
Dadurch wird das PHP-Agentenpaket aus dem Repository abgerufen und das Agenteninstallationsskript auf dem System abgelegt. Das Skript wird aufgerufen newrelic-install
und es lebt in / usr / bin
, Sie sollten also von überall her laufen können. Das Skript hat auch einen unglücklichen Namen, da Sie New Relic sowohl von Ihrem System installieren als auch deinstallieren können. Um New Relic zu installieren, müssen wir Folgendes ausführen:
newrelic-install installieren
Das Skript ist interaktiv und fordert Sie zur Eingabe Ihres Lizenzschlüssels auf. Sie finden das durch Drücken der Taste großer roter Knopf wenn Sie eine neue PHP-Anwendung in der New Relic-Benutzeroberfläche einrichten.
Wenn auf Ihrem System mehr als eine PHP-Installation installiert ist, werden Sie auch gefragt, für welche Installation New Relic installiert werden soll (Sie können eine beliebige Anzahl von Installationen auswählen, einschließlich aller Installationen). Wenn Sie nur ein PHP auf Ihrem System haben, verwendet das Skript nur dieses. Wenn Ihre PHP-Version älter als 5.2 ist, muss das Skript retten, da ältere Versionen nicht unterstützt werden.
Wenn alles gut geht, sollten Sie die folgende Meldung sehen:
New Relic ist jetzt auf Ihrem System installiert. Herzliche Glückwünsche!
Das Skript druckt dann einige zusätzliche Informationen für Sie aus, einschließlich des Speicherorts der Protokolldateien:
/var/log/newrelic/newrelic-daemon.log /var/log/newrelic/php_agent.log
Sowie die Tatsache, dass Sie Ihren Webserver neu starten müssen (und PHP-FPM, wenn Sie ihn verwenden).
Wenn Sie Ihren Server neu starten und das Daemon-Protokoll abschließen, sollten Sie etwa Folgendes sehen:
ubuntu @ ip-10-145-246-196: / var / www / myblog1 $ cat /var/log/newrelic/newrelic-daemon.log 2014-03-23 05: 30: 41.063 (2008 / main) Warnung: aktuell Dateilimit von 1024 ist zu niedrig - Versuch, es zu erhöhen 2014-03-23 05: 30: 41.064 (2008 / main) Info: Dateilimit auf 2048 erhöht 2014-03-23 05: 30: 41.064 (2008 / main) Info : New Relic 4.6 (Release Build 40 - "quetzalcoatlus" - "e3d29c5a2e5dc1ee455e831d589ecf5e18c7d6f0") [worker = 1 listen = "/ tmp / .newrelic.sock" pid = 2008 ppid = 0 euid = 0 euid = 0 backtrace = no os = "Linux" rel = "3.2.0-58-virtual" mach = "x86_64" ver = "# 88-Ubuntu SMP Di 3. Dezember 17" node = "ip-10-145-246-196" startup = agent] 2014-03-23 05: 30: 41.069 (2008 / main) Info: RPM-Konfiguration: proto = "https" collector = "collector.newrelic.com" proxy = "none" certfile = "/ etc / ssl /certs/ca-certificates.crt "certdir =" / etc / ssl / certs "2014-03-23 05: 35: 14.928 (2008 / Connector) info: ['PHP Application'] 'Bericht an: https: // rpm.newrelic.com/accounts/232928/applications/3262356 '
Etwas namens PHP-Anwendung berichtet. Das ist etwas generisch und sieht absolut nicht wie unser WordPress-Blog aus, aber es ist ein guter Anfang. Dies bedeutet, dass alle Anwendungen auf Ihrem Webserver als dieselbe Anwendung an New Relic ausgeführt werden. Diese Anwendung hat einen Standardnamen von PHP-Anwendung.
Da wir in unserem Fall nur eine Anwendung ausführen (unsere WordPress-Installation), könnten wir tatsächlich in die New Relic-Benutzeroberfläche springen und vernünftige Statistiken für unseren Blog erhalten. Natürlich möchten wir unserem Blog einen besseren Namen geben und für den Fall, dass unser Server mehr als eine Anwendung bereitstellt. Wir möchten auch sehen, wie man Apps voneinander trennt. Wir werden in Kürze schauen, wie das geht, aber bevor wir das tun, wollen wir sehen, was einen PHP-Agenten ausmacht.
Der PHP-Agent von New Relic besteht aus zwei Teilen. Die erste ist eine PHP-Erweiterung. Sie wird als Shared Object bezeichnet newrelic.so
. Wenn wir uns die Agentenkonfigurationsdatei ansehen:
/etc/php5/cli/conf.d/newrelic.ini
Wir können es ganz oben sehen:
; Diese Datei enthält die verschiedenen Einstellungen für den New Relic PHP-Agenten. Dort ; Es gibt viele Optionen, die alle unter der folgenden URL ausführlich beschrieben werden:; https://newrelic.com/docs/php/php-agent-phpini-settings; ; Wenn Sie einen vollständigen Pfad zur Erweiterung verwenden, isolieren Sie sich von der; Erweiterungsverzeichnis ändern, wenn Sie PHP-Installationen oder -Versionen ändern. ; Wenn Sie keinen absoluten Pfad verwenden, muss die Datei in der; installiert sein. Erweiterungsverzeichnis der aktiven Konfiguration. extension = "newrelic.so"
Dies ist die Sache, die die Statistiken tatsächlich von Ihren Apps abruft, aber sie sendet die Statistiken nicht an New Relic. Dies ist die Aufgabe des Proxy-Daemons.
Der Agent-Daemon 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 erledigt die Daten und stellt fest, wann er an den Server gesendet wird. Sie müssen immer sicherstellen, dass der Daemon läuft, andernfalls werden keine Daten an New Relic gesendet. Glücklicherweise versucht die PHP-Erweiterung standardmäßig, wenn Sie Ihren Server neu starten, zu ermitteln, ob der Daemon läuft, und startet ihn, falls dies nicht der Fall ist.
Ein laufender Proxy-Daemon hat 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 einfach den Worker, und wenn der Worker stirbt, aus welchem Grund auch immer, entsteht ein neuer. Sie können den Dämon stoppen, indem Sie Folgendes ausführen:
/etc/init.d/newrelic-daemon stop
Dadurch wird ein Abschaltsignal an den Überwachungsprozess gesendet. Der Überwachungsprozess bricht dann den Arbeitsprozess ab und fährt dann selbst herunter. Wenn Sie den Dämon jemals manuell beenden müssen, stellen Sie sicher, dass Sie den Überwachungsprozess zuerst beenden, bevor Sie den Arbeiter töten (andernfalls wird ein neuer Arbeiter erzeugt - offensichtlich)..
Die Konfigurationsdatei für den neuen Relic PHP-Agenten wurde bereits angezeigt /etc/php5/cli/conf.d/newrelic.ini
. Sowohl der Agent als auch der Daemon werden mit dieser Datei konfiguriert.
Diese Datei ist mit allen Optionen und ihren Standardwerten sehr gut dokumentiert. Sprechen wir über das Format dieser Datei. Der New Relic Ruby-Agent kann über YAML, ein bekanntes Format, konfiguriert werden. Der PHP-Agent ist einfach eine Textdatei, aber wir brauchen etwas Struktur. Jede Variable in der Datei hat einen von vier Typen (String, Boolean, Number, Duration). String und Nummer sind selbsterklärend, boolesche Werte können sein wahr
, auf oder 1
um Wahrhaftigkeit anzuzeigen und falsch
, von für 0
Falschheit anzeigen. Dauer sind Zeichenfolgen mit einem bestimmten Format, zum Beispiel: 1w3d23h10m
gibt eine Woche, drei Tage, 23 Stunden und zehn Minuten an. Die Werte für die Dauer können so klein sein wie Mikrosekunden.
Alle Variablen in der Datei haben auch einen 'Gültigkeitsbereich'. Es gibt drei mögliche Bereiche: SYSTEM, PERDIR und SCRIPT. Variablen mit dem Gültigkeitsbereich SYSTEM 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 Skriptumfang können global sein, pro Verzeichnis und können auch programmgesteuert überschrieben werden.
Die häufigste Konfigurationsvariable ist beispielsweise 'newrelic.appname'
. Diese Variable ist ein String-Typ und hat einen Standardwert von 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 Gültigkeitsbereich dieser Variablen ist PERDIR. Dies gibt uns eine Vorstellung davon, wie der Anwendungsname für unseren WordPress-Blog überschrieben werden kann.
Es gibt viele andere Variablen, die beispielsweise den Speicherort der Protokolldateien, die Aufzeichnung von SQL-Abfragen, den Protokollierungsgrad der Protokollausgabe usw. steuern. Ich ermutige dich, das zu studieren newrelic.ini
Datei, um sich mit den Optionen vertraut zu machen.
Wir möchten eine separate App in der New Relic-Benutzeroberfläche für unseren WordPress-Blog anzeigen. Sehen wir uns also an, wie wir das schaffen können. Ihre Optionen für die Konfiguration pro Verzeichnis unterscheiden sich je nach Stack. Wenn Sie PHP-FPM verwenden, unterscheiden sich die Schritte von denen bei Verwendung von Nginx. In unserem Fall haben wir zwei Möglichkeiten, da wir Apache direkt ausführen.
Erstens, wenn wir einen virtuellen Host für unsere App haben, können wir einen einfügen IfModule
Blockieren Sie in unserem virtuellen Hostblock und ändern Sie dort den Namen der App:
…php_value newrelic.appname "Mein Blog 1" …
Aber ich habe keinen speziellen virtuellen Host nur für den Blog. Die andere Möglichkeit ist die Verwendung eines .htaccess
Datei. Stellen Sie sicher, dass Sie tatsächlich zulassen .htaccess
Dateien, indem Sie Folgendes auf Ihren virtuellen Haupthost ausgeben:
Optionen Indizes FollowSymLinks MultiViews AllowOverride All Order erlauben, alle zulassen
Wir können jetzt eine setzen .htaccess
Datei im obersten Verzeichnis unseres Blogs und fügen Sie Folgendes ein:
php_value newrelic.appname "Mein Blog 1"
Das Format ist genau dasselbe, als würde ich es in die IfModule
Block. Jetzt müssen wir nur noch unseren Server abprallen. Wenn wir die Daemon-Protokolle beim Neustart des Servers beenden, sehen wir Folgendes:
ubuntu @ ip-10-145-246-196: / var / www / myblog1 $ cat /var/log/newrelic/newrelic-daemon.log 2014-03-23 05: 30: 41.063 (2008 / main) Warnung: aktuell Dateilimit von 1024 ist zu niedrig - Versuch, es zu erhöhen 2014-03-23 05: 30: 41.064 (2008 / main) Info: Dateilimit auf 2048 erhöht 2014-03-23 05: 30: 41.064 (2008 / main) Info : New Relic 4.6 (Release Build 40 - "quetzalcoatlus" - "e3d29c5a2e5dc1ee455e831d589ecf5e18c7d6f0") [worker = 1 listen = "/ tmp / .newrelic.sock" pid = 2008 ppid = 0 euid = 0 euid = 0 eid = 0 backtrace = no os = "Linux" rel = "3.2.0-58-virtual" mach = "x86_64" ver = "# 88-Ubuntu SMP Di 3. Dezember 17" node = "ip-10-145-246-196" startup = agent] 2014-03-23 05: 30: 41.069 (2008 / main) Info: RPM-Konfiguration: proto = "https" collector = "collector.newrelic.com" /certs/ca-certificates.crt "certdir =" / etc / ssl / certs "2014-03-23 05: 35: 14.928 (2008 / Connector) info: ['PHP Application'] 'Bericht an: https: // rpm.newrelic.com/accounts/232928/applications/3262356 '2014-03-23 06: 07: 58.768 (2008 / Connector) i nfo: ['Mein Blog 1'] 'Berichterstattung an: https://rpm.newrelic.com/accounts/232928/applications/3262424'
Das PHP-Anwendung ist immer noch da, aber jetzt hat es einen Freund, der unser WordPress-Blog ist. Und hier ist es in der Benutzeroberfläche:
Beim Durchsuchen unseres Blogs erhalten wir nun Metriken, sowohl für das Frontend 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, neigen die Metriken dazu, zusammenzuwachsen)..
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 haben wir alles mit installiert apt-get,
Dinge auf dem neuesten Stand zu halten ist einfach. Wir machen einfach das Gleiche wie wir es installiert haben:
apt-get Update apt-get install newrelic-php5
Wenn wir kein weiteres PHP auf dem System installiert haben, müssen wir unseren Server jetzt einfach neu starten, und wir sind auf dem neuesten Stand. Wenn es ein neues PHP gibt, müssen wir das möglicherweise erneut ausführen newrelic-install
Skript.
Es gibt nur einen Vorbehalt für all das. In bestimmten Situationen führen Sie den New Relic-Proxy-Dämon möglicherweise getrennt vom Agenten aus. Dies bedeutet, dass der Neustart des Servers den Dämon nicht automatisch startet, wenn er nicht ausgeführt wird (dies wird als externer Dämonmodus bezeichnet). Es gibt mehrere Gründe, warum Sie dies tun möchten. Beispielsweise möchten Sie, 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 in den Protokollen angezeigt.
Wie Sie sehen, unterscheidet sich das Einrichten von New Relic für eine PHP-Anwendung sehr stark von der Einrichtung für Ruby. Ihre eigentliche Anwendung hat keinen Einfluss auf den Prozess, während die Umgebung, in der Sie implementiert werden, eine zentrale Rolle spielt. Glücklicherweise bedeutet dies, dass wenn Sie ein unterstütztes PHP-Framework verwenden, der Prozess zum Einrichten von New Relic genau der gleiche ist. Neben WordPress werden die meisten gängigen PHP-Frameworks unterstützt, einschließlich Cake, Symphony und Laravel (Version 4 und höher). Es ist auch möglich, New Relic mit einem nicht unterstützten Framework zu verwenden. Sie müssen jedoch erhebliche Anstrengungen unternehmen, um die Metriken sinnvoll zu machen.