[PYTHON] Detaillierte Erklärung Überwachung und Leistungsverbesserung mit NewRelic-Teil 1

Überblick

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

Was ist New Relic?

overview.png

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.

Voraussetzung Umgebung

Wir entwickeln einen Anwendungsserver für Smartphone-Spiele. Unten finden Sie ein Umgebungsdiagramm der Anwendung, die Metriken mit New Relic verwendet.

server.png

Und es ist eine sehr allgemeine Konfiguration

Beginnen wir nun mit der Fallstudie zum Serveringenieur: sunny:

Fall 1: Die Anwendung ist langsam, kann aber nicht schneller sein?

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 ...)

gacha_transaction.png

Wenn Sie dort auf Gacha klicken, sehen Sie die folgende Seite auf der rechten Seite.

gacha_select2.png

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.

Fall 2: MySQL scheint langsam zu sein, aber was ist die Ursache?

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

mysql_slow.png

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)

databases.png

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.

plugin_1.png plugin_2.png plugin_3.png

Fall 3: Die CPU ist voll, aber was passiert?

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.

servers_1.png servers_2.png

Fall 4: Ich möchte wissen, wann ich bereitgestellt habe

Sie können den Zeitpunkt der Bereitstellung markieren, indem Sie ein Ereignis an die Web-API von NewRelic senden.

deploy.png

Fall 5: Nach der Freigabe

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.

Fazit

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

Detaillierte Erklärung Überwachung und Leistungsverbesserung mit NewRelic-Part 2
Detaillierte Erklärung Überwachung und Leistungsverbesserung mit NewRelic-Teil 1
Detaillierte Erklärung Leistungsverbesserung mit NewRelic-Part 3
Mit Monitoring gewinnen
Bemühungen zur Leistungsverbesserung