Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby
Code

Erste Schritte mit New Relic in 30 Minuten

by
Length:LongLanguages:
This post is part of a series called Performance Monitoring With New Relic.
5 Reasons Why New Relic Is a Developer's Best Friend

German (Deutsch) translation by Alex Grigorovich (you can also view the original English article)

Ich erinnere mich, dass ich vor einigen Jahren an einer Rails-App gearbeitet habe und jemand hatte die Idee, diesen neuen Dienst zu benutzen, der damals entwickelt hat. Es war New Relic und sie versprachen, mehr Einblick in die Leistung der Rails-App zu geben, als Sie jemals zuvor bekommen konnten. Wir haben es ausprobiert und es war cool, und was noch wichtig ist, dass das Ruby-Webentwicklungs-Ökosystem wirklich brauchte.

Werbeinhalte

Dieser Inhalt wurde von New Relic in Auftrag gegeben und vom Tuts+ -Team geschrieben und/oder bearbeitet. Unser Ziel mit Werbeinhalten ist es, relevante und objektive Tutorials, Fallstudien und inspirierende Interviews zu veröffentlichen, die unseren Lesern einen echten pädagogischen Wert bieten und es uns ermöglichen, die Erstellung nützlicherer Inhalte zu finanzieren.

Wenn Sie jetzt schnell vorspulen, wird es Ihnen schwer fallen, eine Ruby-Webanwendung zu finden, in die New Relic nicht eingebunden ist. New Relic als Unternehmen bietet weiterhin Werkzeugs zur Überwachung Ihrer Ruby-Apps an, hat sich jedoch auch in eine Reihe anderer Sprachen wie Java, Python und sogar .Net verzweigt. Mit der Anzahl der von Ihnen bereitgestellten Funktionen steigt natürlich auch die Komplexität und der Umfang der Dokumentation. Es wird schwierig herauszufinden, wo Sie anfangen sollen, insbesondere wenn Sie noch kein Experte sind.

Heute denke ich, wir könnten zu New Relic zurückkehren und sehen, wie wir mit dem Service zur Überwachung einer Rails App beginnen können.


Eine Basic Rails App

Um New Relic verwenden zu können, müssen wir etwas überwachen. Richten wir also eine einfache Rails-App für 'Hello World' ein.

Die von uns erstellte App befindet sich unter ~/projects/tmp/newrelic und heißt newrelic_rails1. Ich gehe davon aus, dass Sie Rails bereits installiert haben:

Wir müssen nicht viel tun, um unsere 'Hello World'-App zu erstellen. Wir brauchen einen neuen Controller:

Jetzt brauchen wir nur noch eine Route, wir erhalten die Root-Route der Anwendung, um unseren Controller zu verwenden. Wir brauchen auch eine Ansicht mit den Worten "Hello World". Vor diesem Hintergrund sollte unsere config/route.rb folgendermaßen aussehen:

Unser Controller (app/controller/hello_controller.rb) lautet wie folgt:

Und unsere Ansicht (app/views/hello/index.html.erb) ähnelt:

Wir können jetzt unseren Entwicklungsserver starten:

Wenn wir curl localhost: 3000 einrollen, erhalten wir:

Alles funktioniert!


Hook in New Relic

Mit Ruby ist es sehr einfach. Wir fügen unserer Gemfile einen Edelstein hinzu, führen eine bundle install durch, legen eine Konfigurationsdatei im Konfigurationsordner ab und haben alles, was wir brauchen. Tatsächlich ist New Relic ziemlich gut darin, Sie durch dieses Theme zu führen. Sie müssen sich lediglich bei Ihrem Konto anmelden. Wenn Sie noch keinen New Relic-Agenten bereitgestellt haben, ist es ziemlich offensichtlich, was zu tun ist:

newrelic_start

Zuerst installieren wir den New Relic Agent Gem, indem wir ihn gemäß den Anweisungen zu unserer Gemfile hinzufügen:

newrelic_install_gem

Unsere Gemfile sieht jetzt so aus:

Wann immer wir der Gemfile etwas hinzufügen, müssen wir Folgendes ausführen:

Wir benötigen auch eine newrelic.yml, die Sie von New Relic herunterladen können:

newrelic_config_download

Es wird mit Ihrem Lizenzschlüssel vorkonfiguriert geliefert. Wir müssen diese Datei unter config/newrelic.yml ablegen.

Wenn wir unsere Anwendung zu diesem Zeitpunkt im Staging- oder Produktionsmodus ausführen, erhalten wir bereits Daten in unserem New Relic-Konto. Lassen Sie uns dies tun:

Dieses Mal, wenn wir curl localhost:3000 einrollen, erhalten wir:

Es wurde eine Reihe von JavaScript in unsere Seiten eingefügt, damit New Relic die Browserzeit überwachen kann. Auf diese Weise können wir feststellen, dass unsere New Relic-Integration funktioniert. Aber es ist nicht die einzige Möglichkeit, New Relic erstellt auch eine Protokolldatei:

Wir können auch unser New Relic-Konto überprüfen, um sicherzustellen, dass eine neue Anwendung zur Überwachung angezeigt wurde:

newrelic_monitored_application

Es gibt jedoch einige Dinge, die nicht so schön sind:

  • Unsere Bewerbung heißt "My Application".
  • Wir haben alle Standardkonfigurationswerte akzeptiert, die möglicherweise nicht zu unserer App passen
  • Wir mussten unseren Server im Produktionsmodus starten (was nur möglich ist, weil es sich um eine brandneue App handelt, die nicht auf einer externen Infrastruktur basiert).

Schauen wir uns also unsere Datei newrelic.yml etwas genauer an, um zu sehen, wie wir die Leistung unserer App genau so überwachen können, wie wir es möchten.


Untertauchen in die Konfiguration von New Relic

Zuerst ist die New Relic-Konfigurationsdatei sehr gut kommentiert, und ich empfehle Ihnen, die Kommentare zu den verschiedenen Konfigurationsparametern zu lesen, um zu verstehen, was sie alle tun.

Zweitens ist die New Relic-Konfiguration umweltbewusst, und die Konfiguration für alle Umgebungen ist in der einen Datei newrelic.yml definiert. Dies ist der Funktionsweise der Datei Rails database.yml sehr ähnlich. Wir definieren eine Reihe allgemeiner Konfigurationswerte und überschreiben dann die relevanten in den spezifischen Umgebungsblöcken, z.B.

Wir können sofort sehen, wie wir einige der oben genannten Punkte beheben können. Wenn wir unsere App nicht im Produktionsmodus starten müssen, während wir unsere Konfiguration optimieren, müssen wir nur die Überwachung im Entwicklungsmodus aktivieren (wir müssen daran denken, diese Option auszuschalten, wenn wir damit zufrieden sind unsere Konfiguration, da wir nicht möchten, dass Entwicklungsdaten unser New Relic-Konto überladen).

Wir sollten auch unseren Anwendungsnamen für jede Umgebung überschreiben, um sicherzustellen, dass sie separat überwacht werden und der Anwendungsname sinnvoll ist:

Mit nur diesen Konfigurationsänderungen, wenn wir unseren Server im Entwicklungsmodus starten und curl localhost:3000:

newrelic_monitor_development

Wir überwachen unsere Anwendung jetzt im Entwicklungsmodus und unser App-Name entspricht unseren Erwartungen. Wenn Ihre Anwendung angibt, dass keine Daten empfangen werden, geben Sie ihr eine Minute Zeit. Es dauert eine Weile, bis die Daten eingehen.

Noch eine interessante (und oft verwirrendste) Konfigurationswert ist der Apdex T-Wert. Im Gegensatz zu den meisten anderen Konfigurationsparametern befindet sich dieser Wert nicht in der Datei newrelic.yml, sondern in den Einstellungen für die Anwendung in New Relic:

newrelic_apdex

Wenn Sie Ihren Apdex T-Wert optimieren möchten, müssen Sie dies hier tun. Aber was ist dieser Parameter und welcher Wert ist der richtige, um ihn einzugeben? Nun, New Relic erklärt es folgendermaßen:

Der Apdex T-Wert Ihrer App ist auf 0,5 Sekunden eingestellt. Das bedeutet, dass Anfragen, die in weniger als 0,5 Sekunden antworten, zufriedenstellend sind, Antworten zwischen 0,5 Sekunden und 2,0 Sekunden tolerieren (t) und Antworten in mehr als 2,0 Sekunden frustrierend sind (f).

New Relic verwendet den Apdex-Wert, um den Zustand Ihrer Anwendung in Bezug auf die Leistung zu messen. Wenn also viele der von New Relic überwachten Anforderungen länger dauern als Ihr Apdex-Wert, betrachtet New Relic Ihre Anwendung als leistungsfähig schlecht und wenn Sie Warnungen eingerichtet haben, werden Sie darüber informiert. Grundsätzlich müssen Sie herausfinden, wie schnell jede Serveranforderung von Ihrer Anwendung erfüllt werden soll. Wenn Sie also mit einer Backend-Anfrage, die zwei Sekunden dauert, einverstanden sind, können Sie Ihren Apdex-Wert auf 2,0 setzen, aber wenn Sie einen benötigen Wenn die Antwort innerhalb von 100 ms zurückgegeben wird, sollten Sie Ihren Apdex-Wert auf 0,1 setzen.

Wenn Sie eine neue Anwendung haben, können Sie den Apdex-Wert auf die Leistung einstellen, die Sie von Ihrer Anwendung erwarten. Wenn Ihre App bereits vorhanden ist, haben Sie möglicherweise einige Kennzahlen dazu, wie schnell sie ausgeführt wird/werden soll, und Sie können sich davon leiten lassen. Alle Anforderungen, die vom Server mit weniger als dem Apdex T-Wert erfüllt werden, werden von New Relic als in Ordnung angesehen. Alle Anfragen, die innerhalb von Apdex * 4 Sekunden erfüllt werden, gelten als tolerierend (d. H. Benutzer können dies tolerieren). Alle Antworten, die länger als Apdex * 4 dauern, werden als frustrierend angesehen (frustrierte Benutzer neigen nicht dazu, dabei zu bleiben). Stellen Sie Ihren Apdex T-Wert so ein, dass Sie tatsächlich nützliche Informationen daraus erhalten. Der tatsächliche Wert hängt von Ihrer Domain ab und davon, was Sie erreichen möchten (in Bezug auf die Leistung). Es gibt keine richtige oder falsche Antwort.

Wir werden unseren Apdex T-Wert auf 100 ms (0,1) setzen, da wir nur eine 'Hello World'-App haben und diese sehr schnell (auch im Entwicklungsmodus) eine Antwort zurückgeben kann.


Noch mehr neue Reliktkonfiguration

Es war ein bisschen komisch, dass der größte Teil der Konfiguration aus der Datei newrelic.yml stammt, aber der Apdex-T-Wert befindet sich in den Anwendungseinstellungen, sodass Sie mit New Relic jetzt alle Konfigurationswerte aus der YAML-Datei in New Relic verschieben können:

newrelic_move_configuration

Dies hat den Vorteil, dass Sie nicht jedes Mal eine erneute Bereitstellung durchführen müssen, wenn Sie Ihre Konfigurationswerte optimieren möchten. Daher ist dies definitiv eine Überlegung wert. Wir bleiben vorerst bei der YAML-Datei.

Also, was sind einige der anderen nützlichen New Relic-Parameter, die wir kennen sollten?

Nun, es gibt eine Reihe von Parametern, die sich mit der New Relic Agent-Protokolldatei befassen:

Diese haben sinnvolle Standardeinstellungen, aber wenn die Protokolldatei an einen bestimmten Ort verschoben werden soll oder wenn mehr oder weniger Informationen in der Datei angezeigt werden sollen, können wir dies problemlos steuern. Da wir gerade New Relic einrichten, setzen wir die Protokollebene auf Debug, um sicherzustellen, dass keine wichtigen Informationen übersehen werden (bei der Bereitstellung möchten wir sie möglicherweise auf Warnung oder sogar auf Fehler einstellen).

Wir erhalten jetzt eine Fülle von Informationen in der Protokolldatei, die uns (wenn sie sorgfältig gelesen werden) viele Einblicke in die Funktionsweise von New Relic geben können:

Zum Beispiel können wir das sehen:

  • Wir können die Überwachung auch dann ausschalten, wenn sie in der Konfigurationsdatei aktiviert ist, indem wir eine Umgebungsvariable NEWRELIC_ENABLE=false setzen
  • Wir können sehen, dass New Relic eine Reihe von Rack-Middleware einfügt
  • Wir verwenden Webrick als unseren Server, der sich offensichtlich im Entwicklungsmodus befindet. In der Produktion ist es jedoch gut zu bestätigen, dass New Relic den von uns verwendeten Server erkennt
  • New Relic sendet Daten an collector.newrelic.com:443
  • New Relic sendet alle 60 Sekunden Daten
  • Die echte Benutzerüberwachung erfolgt über JSONP

Sehr nützliche Informationen, wenn Sie herausfinden möchten, wie die Dinge zusammenhängen.

Die meisten anderen Konfigurationsparameter sind ziemlich selbsterklärend, z.B.

Der einzige andere, der sich bewusst ist, ist:

Der Transaktions-Tracer erfasst detaillierte Daten zu Anforderungen, die zu lange dauern. Der Transaktionsschwellenwert ist ein Vielfaches (x4) des Apdex-Werts, aber es ist oft nützlich, diese Werte voneinander zu trennen. Möglicherweise sind Sie mit einer Apdex-Punktzahl von einer Sekunde zufrieden, möchten jedoch möglicherweise detaillierte Daten zu Anforderungen erfassen, die 1,5 Sekunden oder länger dauern (anstelle der standardmäßig vier Sekunden oder länger). Sie können diesen Parameter also separat einstellen:


Der New Relic-Entwicklermodus

Einer der Konfigurationswerte, die Sie möglicherweise bemerkt haben, war:

Dies sollte nur in der Entwicklung (wenn überhaupt) eingeschaltet werden. Im Entwicklungsmodus speichert der New Relic-Agent Leistungsdaten zu den letzten 100 Anforderungen im Speicher. Sie können diese Daten jederzeit anzeigen, indem Sie auf den Endpunkt /newrelic Ihrer laufenden Anwendung klicken:

newrelic_developer_mode

Ich benutze es kaum, aber es ist da, wenn Sie es brauchen.


Benachrichtigen eines neuen Relikts von Bereitstellungen

Wenn Sie an der Leistung Ihrer Anwendung arbeiten, ist es immer gut zu wissen, ob sich eine bestimmte Bereitstellung positiv oder negativ auf die Leistung ausgewirkt hat. Zu diesem Zweck können Sie New Relic jedes Mal benachrichtigen, wenn Sie eine Bereitstellung durchführen. Auf diese Weise können Sie bei einer Verschlechterung oder Verbesserung der Leistung feststellen, welche Bereitstellung der Schuldige war. New Relic bietet Capistrano-Hooks, um dies zu tun, aber ich bevorzuge die Befehlszeilenmethode:

Der Schlüssel ist, den Anwendungsnamen korrekt anzugeben, wie in der Datei newrelic.yml konfiguriert.

In den relevanten New Relic-Diagrammen werden schöne Linien angezeigt, die angeben, wann eine Bereitstellung stattgefunden hat.

newrelic_deployment

Schlussfolgerung

Sie wissen jetzt viel darüber, wie New Relic funktioniert und wie Sie damit eine Rails-Anwendung überwachen können. Aber die Dinge richtig zu konfigurieren ist nur die halbe Miete. Welche Art von Metriken wird New Relic tatsächlich für Sie erfassen? Und wie können Sie sie verwenden, um die Leistung Ihrer Anwendung zu verbessern? Wir werden einige davon in einem nachfolgenden Artikel betrachten. Probieren Sie New Relic für Ihre Rails App aus (Sie erhalten ein kostenloses T-Shirt). Wenn Sie Fragen haben, vergessen Sie nicht, einen Kommentar zu hinterlassen.

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