Ich verwende New Relic seit ungefähr anderthalb Jahren in einer Produktionsumgebung + Entwicklungsumgebung und habe Wissen gesammelt, daher möchte ich es gerne teilen. Zu den hier beschriebenen Funktionen gehört die kostenpflichtige Version.
Detaillierte Erklärung: Überwachung und Leistungsverbesserung mit NewRelic-Teil 1 Detaillierte Erklärung: Überwachung und Leistungsverbesserung mit NewRelic-Teil 2
NewRelic ist ein Tool, mit dem der Status von Servern oder Anwendungen überwacht und deren Leistung verbessert werden kann. Es gibt verschiedene vorhandene Überwachungstools wie Zabbix, Ganglien, Nagios und Munin, aber ich denke, New Relic ist aufgrund seiner Benutzerfreundlichkeit überlegen. Nach der Installation verfügen Sie über alle Metriken, die Sie zum Ausführen Ihrer Anwendung auf dem Server benötigen. Bei vorhandenen Überwachungstools müssen Benutzer, die sie installieren, die erforderlichen Metriken definieren und konfigurieren und in einigen Fällen Skripts schreiben. In dieser Hinsicht verfügt New Relic über eine sehr umfangreiche Standardmetrik und ist so angeordnet, dass sie einfach angezeigt werden kann. In vielen Fällen ist dies ohne zusätzliche Einstellungen ausreichend. Es gibt viele Plug-Ins, die einfach installiert werden können, auch wenn sie nicht in den vorhandenen Metriken enthalten sind.
In diesem Artikel möchte ich jede Fallstudie anhand der Funktionen, die jeder in New Relic kennt, und der detaillierten Funktionen der kostenpflichtigen Version vorstellen.
Wir entwickeln einen Anwendungsserver für Smartphone-Spiele. Unten finden Sie ein Umgebungsdiagramm der Anwendung, die Metriken mit New Relic verwendet.
Und es ist eine sehr allgemeine Konfiguration
Beginnen wir nun mit der Fallstudie zum Serveringenieur: sunny:
Ich denke, viele Leute werden es dir sagen. Es ist zu grob, um es zu verstehen. Definieren wir zunächst das Problem. Welche API ist langsam? Wann bist du zu spät gekommen? Ist es nur in bestimmten Fällen langsam? Was ist mit anderen Benutzern? Es gibt viele, aber ich werde genau sagen, was falsch ist. Als Ergebnis wurden die folgenden Probleme gefunden.
Jetzt, da es ziemlich spezifisch ist, werfen wir einen Blick auf New Relic. Wählen Sie die Anwendung in APPS aus und drücken Sie dann auf das Element Transaktionen. Wenn Sie "Langsamste durchschnittliche Antwortzeit" auswählen, werden die APIs angezeigt, die in der Reihenfolge der Antwortzeit langsamer sind. (Hinweis: Insgesamt ist es langsam, aber ich habe den Server vor der Leistungsverbesserung noch nicht optimiert ...)
Wenn Sie dort auf Gacha klicken, sehen Sie die folgende Seite auf der rechten Seite.
Auf dieser Seite sehen Sie Folgendes.
Bei der Suche nach einem Engpass durch Kombinieren des Inhalts der Problemdefinition und des Quellcodes waren die folgenden Punkte Probleme.
Durch die oben genannten Maßnahmen wurde die API schneller und die Antwortzeit wurde kein Problem. Auf diese Weise trägt New Relic zur Verbesserung der Leistung bei, indem die Anzahl der SQL-Probleme für jede API, die Anzahl der an Redis ausgegebenen Abfragen und die Ausführungszeit von Python-Code ermittelt werden.
Hierbei ist jedoch zu beachten, dass die durchschnittliche Zeit genau die Zeit ist, die benötigt wurde. Wenn also die Server-CPU voll ist, kann der Python-Code nicht verarbeitet werden und die Codezeit ist lang.
Es scheint ein Fall zu sein, ein MySQL-Element in NewRelic zu erklären, aber es kann passieren. Wenn die Anzahl der Benutzer zunimmt, beträgt die CPU des App-Servers etwa 50%, und es scheint, dass es kein Problem gibt. Wenn sich jedoch etwas verlangsamt, kann dies an MySQL oder Redis liegen.
Wenn ich mir nicht sicher bin, schaue ich mir die grundlegende Übersicht an
Es scheint, dass MySQL langsam ist. Wählen Sie in diesem Fall im linken Bereich Datenbanken aus und sehen Sie sich vorerst die folgenden Elemente an. (Hinweis: Es ist ein anderes Mal, nur eine Einführung)
Da die Antwortzeit für jede Abfrage bekannt ist, ist es offensichtlich, dass die Abfrage langsam ist. Ein häufiger Fall in diesem Fall ist ein Muster, das schnell war, wenn der Datenverlauf niedrig war, aber verlangsamt wurde, wenn der Datenverlauf hoch war. In einigen Fällen haben Sie möglicherweise vergessen, den Index einzufügen, oder Sie benötigen den Verlauf überhaupt nicht. Korrigieren Sie dies. Wenn Sie auf jede Abfrage klicken, wird auch angezeigt, welche API diese Abfrage ausgibt. Dies hilft Ihnen bei der Verbesserung.
Dieses Element kann nur abfrageweise angezeigt werden. Wenn Sie jedoch die Metriken des MySQL-Servers selbst anzeigen möchten, wird das MySQL-Plugin empfohlen. (Hinweis: Es ist ein anderes Mal, nur eine Einführung)
http://newrelic.com/plugins/new-relic-platform-team/52
Nach der Installation sehen Sie die folgenden Elemente.
Manchmal möchten Sie wissen, welcher Prozess die CPU belegt, aber die Standardmetriken in der AWS-Konsole sagen es Ihnen überhaupt nicht. Selbst in einem solchen Fall kann New Relic mit dem standardmäßig installierten Agenten erstellt werden.
Wählen Sie im oberen Bereich SERVERS aus. Wählen Sie im linken Bereich Prozesse aus, um zu sehen, welche Prozesse die meiste CPU verwenden.
Sie können den Zeitpunkt der Bereitstellung markieren, indem Sie ein Ereignis an die Web-API von NewRelic senden.
Ich bin mir nicht sicher, aber es ist eine Geschichte, dass New Relic nur auf dem Produktionsserver installiert wurde. New Relic ist nur wirksam, wenn es während des Entwicklungszeitraums auf dem Entwicklungsserver installiert wird. Ein gängiges Muster ist, dass sich die Leistung in der Produktion verschlechtert, selbst wenn es in der Entwicklung schnell arbeitet. Ich weiß nicht, dass SQL-Abfragen langsam sind, da die Entwicklungsumgebung nicht überlastet ist. Stellen Sie in einem solchen Fall New Relic in die Entwicklungsumgebung und überwachen Sie die Anzahl der SQL-Probleme für jede API. Natürlich können Sie für jede Version einen Auslastungstest durchführen, der jedoch in vielen Fällen hinsichtlich Kosten und Zeit nicht realistisch ist. Es kostet ein wenig monatlich, aber ich denke, Sie können genug bezahlen.
Bisher haben wir die grundlegende Verwendung von New Relic für jeden Fall zusammengefasst. Das nächste Mal werde ich Key Transactions, X-Ray, vorstellen, eine nützliche Funktion von New Relic, die ich kürzlich gelernt habe.
Recommended Posts