Erste Schritte mit New Relic in 30 Minuten

Ich erinnere mich, dass ich vor ein paar Jahren an einer Rails-App gearbeitet habe, und jemand kam auf die Idee, diesen neuen Service zu nutzen, der vor Ort aufgetaucht war. Sie hieß New Relic und versprach, Ihnen mehr Einblick in die Leistung Ihrer Rails-App zu geben, als Sie jemals zuvor bekommen konnten. Wir haben es ausprobiert und es war beeindruckend. Noch wichtiger war es, dass das Ruby-Webentwicklungs-Ökosystem wirklich benötigt wurde.

Gesponserter Inhalt

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

Schneller Vorlauf bis jetzt, und Sie werden kaum eine Ruby-Webanwendung finden können, an der New Relic nicht angeschlossen ist. New Relic hat als Unternehmen weiterhin Tools zur Überwachung Ihrer Ruby-Apps bereitgestellt, diese haben sich jedoch auch verzweigt in eine Reihe von anderen Sprachen wie Java, Python und sogar .Net. Mit der Anzahl der von Ihnen bereitgestellten Features steigt jedoch natürlich auch die Komplexität und der Umfang der Dokumentation. Es wird schwer zu verstehen, wo Sie anfangen sollen, insbesondere wenn Sie noch kein Experte sind.

Heute dachte ich, wir könnten zurück zu den Wurzeln von New Relic gehen und sehen, wie wir mit dem Service beginnen können, um eine Rails-Anwendung zu überwachen.


Eine Basic Rails App

Um New Relic verwenden zu können, müssen wir etwas überwachen. Lassen Sie uns also eine einfache 'Hello World' Rails-App einrichten.

Die App, die wir erstellen, wird unter leben ~ / projects / tmp / newrelic, und wird gerufen newrelic_rails1. Ich gehe davon aus, dass Sie bereits Rails installiert haben:

cd ~ / projects / tmp / newrelic tracks new newrelic_rails1 cd newrelic_rails1

Es gibt nicht viel zu tun, um unsere 'Hello World' App zu erstellen. Wir brauchen einen neuen Controller:

Schienen g Controller Hallo

Jetzt brauchen wir nur eine Route, wir bekommen die Wurzelroute der Anwendung, um unseren Controller zu verwenden. Wir brauchen auch eine Sicht mit den Worten "Hello World". Bei alledem unser config / routes.rb sollte so aussehen:

NewrelicRails1 :: Application.routes.draw do root 'hallo # index' end

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

Klasse HelloController> ApplicationController Def-Indexende

Und unsere Sicht (app / views / hallo / index.html.erb) wird ähnlich sein:

Hallo Welt!

Wir können jetzt unseren Entwicklungsserver starten:

Schienen s

Wenn wir uns krümmen localhost: 3000, wir bekommen:

Hallo Welt!

Alles funktioniert!


Ein neues Relikt einhaken

Mit Ruby ist das sehr einfach. Wir fügen einen Edelstein hinzu Gemfile, führe ein Bundle installieren, Legen Sie eine Konfigurationsdatei in den Konfigurationsordner und wir haben alles was wir brauchen. In der Tat ist New Relic ziemlich gut darin, Sie durch dieses Thema zu führen. Sie müssen sich lediglich bei Ihrem Konto anmelden. Wenn Sie noch keinen New Relic-Agenten bereitgestellt haben, ist es offensichtlich, was Sie tun müssen:

Zuerst installieren wir den New Relic-Agentenedel, indem wir ihn zu unserem hinzufügen Gemfile, gemäß den Anweisungen:

Unsere Gemfile sieht jetzt so aus:

Quelle 'https://rubygems.org' gem 'rail', '4.0.0' gem 'sqlite3' gem 'sass-Schienen', '~> 4.0.0' gem 'uglifier', '> = 1.3.0' gem 'coffee-schienen', '~> 4.0.0' gem 'jquery-schienen' gem 'turbolinks' gem 'jbuilder', '~> 1.2' gruppe: doc do gem 'sdoc', erfordern: false end gem 'newrelic_rpm '

Wann immer wir etwas hinzufügen Gemfile wir müssen rennen:

Bundle installieren

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

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

Wenn wir unsere Anwendung zu diesem Zeitpunkt im Staging- oder Produktionsmodus ausführen, würden wir bereits Daten in unserem New Relic-Konto erhalten. Also lass es uns tun:

RAILS_ENV = Produktionsschienen s

Diesmal als wir curl localhost: 3000, wir bekommen:

   NewrelicRails1       

Hallo Welt!

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 die Integration von New Relic funktioniert. Es ist jedoch nicht der einzige Weg, New Relic erstellt auch eine Protokolldatei:

% cat log / newrelic_agent.log Protokolldatei, erstellt am 2013-09-22 16:23:13 +1000 von logger.rb / 36483 [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Starten des New Relic-Agenten in der "Produktionsumgebung". [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Um das Starten des Agenten zu verhindern, fügen Sie eine Umgebungsvariable NEWRELIC_ENABLE = false hinzu oder ändern Sie den Abschnitt "production" Ihrer neuenrelic.yml. [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Konfiguration aus config / newrelic.yml lesen [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Aktivieren des Anforderungs-Samplers. [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Umgebung: Produktion [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Dispatcher: webrick [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Anwendung: Meine Anwendung [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installieren von ActiveRecord 4 instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation der Net-Instrumentierung [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation verzögerte Rack-Instrumentierung [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation von Rails 4-Controller-Instrumentierung [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation von Rails 4-Instrumentation anzeigen [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation von Rails4-Fehlerinstrumentierung [09/22/13 16:23:13 +1000 skorks-envato ( 12424)] INFO: Beendete Instrumentierung [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Ausführen einer verzögerten Abhängigkeitserkennung vor dem Start des Racks [0 22.09.13 16:23:16 +1000 skorks-envato (12424)] INFO: Berichterstattung an: https://rpm.newrelic.com/accounts/303380/applications/2507356

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

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

  • Unsere Anwendung heißt "Meine Bewerbung".
  • 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 keine externe Infrastruktur benötigt).

Schauen wir uns unsere an newrelic.yml Datei etwas detaillierter, um zu sehen, wie wir die App-Leistung genau so überwachen können, wie wir es wollen.


Eintauchen in die neue Relic-Konfiguration

Zuallererst ist die New Relic-Konfigurationsdatei äußerst gut kommentiert. Ich empfehle Ihnen, die Kommentare zu den verschiedenen Konfigurationsparametern zu lesen, um zu verstehen, was alle von ihnen tun.

Zweitens ist die Konfiguration von New Relic von der Umgebung abhängig, und die Konfiguration für alle Umgebungen ist in einer davon definiert newrelic.yml Datei, das ist sehr ähnlich, wie die Rails Datenbank.yml Datei funktioniert. Wir definieren eine Reihe allgemeiner Konfigurationswerte und überschreiben dann die relevanten Werte in den spezifischen Umgebungsblöcken, z.

common: & default_settings license_key: ''app_name: Meine Anwendung monitor_mode: true… Entwicklung: <<: *default_settings monitor_mode: false test: <<: *default_settings monitor_mode: false production: <<: *default_settings monitor_mode: true staging: <<: *default_settings monitor_mode: true

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

Entwicklung: <<: *default_settings monitor_mode: true

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

 common: & default_settings license_key: ''app_name: newrelic_rails1 monitor_mode: true… Entwicklung: <<: *default_settings monitor_mode: true app_name: newrelic_rails1 (Development) test: <<: *default_settings monitor_mode: false app_name: newrelic_rails1 (Test) production: <<: *default_settings monitor_mode: true app_name: newrelic_rails1 (Production) staging: <<: *default_settings monitor_mode: true app_name: newrelic_rails1 (Staging)

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

Wir überwachen jetzt unsere Anwendung im Entwicklungsmodus und unseren Namen erwarten wir. Wenn Ihre Anwendung angibt, dass keine Daten empfangen werden, geben Sie ihnen eine Minute. Es dauert eine Weile, bis die Daten durchkommen.

Der nächst interessanteste (und oft der verwirrendste) Konfigurationswert ist der Apdex-T-Wert. Im Gegensatz zu den meisten anderen Konfigurationsparametern lebt dieser Wert nicht im newrelic.yml Datei, sondern wird stattdessen in den Einstellungen für die Anwendung in New Relic gefunden:

Wenn Sie Ihren Apdex-T-Wert anpassen möchten, müssen Sie dies hier tun, aber was ist dieser Parameter und was ist der richtige Wert, um ihn einzugeben? Nun, New Relic erklärt es auf folgende Weise:

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

Im Wesentlichen verwendet New Relic den Apdex-Wert, um den Status Ihrer Anwendung in Bezug auf die Leistung zu ermitteln. Wenn also viele der von New Relic überwachten Anforderungen länger dauern als Ihr Apdex-Wert, wird New Relic Ihre Anwendung als leistungsfähig betrachten schlecht und wenn Sie Warnmeldungen 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-Anforderung in zwei Sekunden zufrieden sind, können Sie den Apdex-Wert auf 2,0 setzen Antwort innerhalb von 100 ms zurückgegeben werden, dann sollten Sie Ihren Apdex-Wert auf 0,1 setzen.

Wenn Sie eine neue Anwendung haben, können Sie den Apdex-Wert auf die von Ihrer Anwendung gewünschte Leistung einstellen. Wenn es sich bei Ihrer App um eine bestehende App handelt, verfügen Sie möglicherweise über einige Kennzahlen, wie schnell sie abschneiden soll / soll, und Sie können sich danach orientieren. Alle Anforderungen, die vom Server unter dem Apdex-T-Wert ausgeführt werden, werden von New Relic als gut angesehen. Alle Anforderungen, die innerhalb von Apdex * 4 Sekunden erfüllt werden, werden als tolerierend betrachtet (d. H. Benutzer können dies tolerieren). Alle Antworten, die länger als Apdex * 4 dauern, werden als frustrierend betrachtet (frustrierte Benutzer neigen nicht dazu, sich zu verhalten). Stellen Sie also Ihren Apdex-T-Wert so ein, dass Sie tatsächlich nützliche Informationen erhalten. Der tatsächliche Wert hängt von Ihrer Domäne ab und davon, was Sie erreichen möchten (in Bezug auf die Leistung). Es gibt keine richtige oder falsche Antwort.

Wir setzen unseren Apdex-T-Wert auf 100 ms (0,1), da wir nur eine 'Hello World'-App haben, und es sollte in der Lage sein, eine Antwort sehr schnell zurückzugeben (selbst im Entwicklungsmodus)..


Noch mehr neue Relic-Konfiguration

Es war ein bisschen komisch, dass der Großteil der Konfiguration von der newrelic.yml Datei, aber der Apdex-T-Wert befindet sich in den Anwendungseinstellungen. In New Relic können Sie nun alle Konfigurationswerte aus der YAML-Datei in New Relic verschieben:

Dies hat den Vorteil, dass Sie nicht jedes Mal neu implementieren müssen, wenn Sie Ihre Konfigurationswerte anpassen möchten. Dies ist definitiv eine Überlegung wert. Wir werden fürs Erste bei der YAML-Datei bleiben.

Was sind einige der anderen nützlichen New Relic-Parameter, über die wir wissen sollten?

Nun, es gibt eine Reihe von Parametern, die sich auf die Protokolldatei des New Relic-Agenten beziehen:

log_level: info log_file_path: 'log' Protokolldateiname: 'newrelic_agent.log'

Diese haben vernünftige Standardwerte, 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 leicht steuern. Da wir gerade New Relic einrichten, werden wir die Protokollebene auf einstellen debuggen, um sicherzustellen, dass wir keine wichtigen Informationen verpassen (wenn wir sie einsetzen, möchten wir sie möglicherweise auf einstellen.) warnen, oder auch Error).

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:

% cat log / newrelic_agent.log

[09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Starten des New Relic-Agenten in der "Entwicklungsumgebung". [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Um das Starten des Agenten zu verhindern, fügen Sie eine Umgebungsvariable NEWRELIC_ENABLE = false hinzu oder ändern Sie den Abschnitt "development" Ihrer neuenrelic.yml. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Konfiguration aus config / newrelic.yml lesen [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Nicht in Rake-Umgebung, also Blacklisted_rake_tasks überspringen: Nicht initialisierter konstanter Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Aktualisieren von config (add) von NewRelic :: Agent :: Configuration: : YamlSource. Ergebnisse: [09/22/13 17:23:39 +1000 Eiskunstlauf (12925)] DEBUG: … [09/22/13 17:23:39 +1000 Eiskunstlauf (12925)] DEBUG: Nicht in der Rake-Umgebung also Blacklisted_rake_tasks überspringen: Nicht initialisierter konstanter Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Aktualisieren der Konfiguration (Hinzufügen) von NewRelic :: Agent :: Configuration :: ManualSource. Ergebnisse: [09/22/13 17:23:39 +1000 Eiskunstlauf (12925)] DEBUG: … [09/22/13 17:23:39 +1000 Eiskunstlauf (12925)] DEBUG: Nicht in der Rake-Umgebung also Blacklisted_rake_tasks überspringen: Nicht initialisierter konstanter Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Neue Relic Browser Monitoring-Middleware [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Neue Relic Agent Hooks-Middleware installiert [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Agent ist für die Verwendung von SSL konfiguriert [09/22 / 13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Verwendung von JSON-Marshaller [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Die Ablaufverfolgungsschwelle der Transaktion beträgt 2,0 Sekunden. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Ignorieren von Fehlern des Typs 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925) )] DEBUG: Ignorieren von Fehlern des Typs 'Sinatra :: NotFound' [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Fehler werden an den New Relic-Dienst gesendet. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Ignorieren von Fehlern des Typs 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925) )] DEBUG: Ignorieren von Fehlern des Typs 'Sinatra :: NotFound' [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: RequestSampler max_samples auf 1200 gesetzt [09/22/13 17:23 : 39 +1000 skorks-envato (12925)] DEBUG: Zurücksetzen von RequestSampler [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Aktivieren des Anforderungs-Samplers. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Umgebung: Entwicklung [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Dispatcher: webrick [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Anwendung: newrelic_rails1 (Entwicklung) [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport konnte den Wert für "Plugin-Liste" nicht abrufen: Undefinierte Methode 'Plugins' für # [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport konnte den Wert für "JRuby-Version" nicht abrufen: nicht initialisierte Konstante NewRelic :: EnvironmentReport :: JRUBY_VERSION [09/22/13 17: 23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport konnte den Wert für "Java VM-Version" nicht abrufen: nicht initialisierte Konstante NewRelic :: EnvironmentReport :: ENV_JAVA [09/22/13 17:23:39 +1000 skorks- envato (12925)] DEBUG: EnvironmentReport ignoriert den Wert für "Rails threadsafe". Falsey: nil [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Erstellen eines Ruby Agent-Worker-Threads. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Erstellen eines neuen Relic-Threads: Worker Loop [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG : New Relic Ruby Agent 3.6.7.152 Initialisiert: pid = 12925 [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Verbindungsvorgang an neues Relic: bin / rail [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Nicht in Rake-Umgebung, also Blacklisted_rake_tasks überspringen: Nicht initialisierter konstanter Rake [09/22/13 17:23:39 +1000 Skorks-envato (12925)] DEBUG: Net / http-Handle für collector.newrelic.com:443 erstellt [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Anforderung an collector.newrelic.com:443/agent_listener/12/ 1f69cbd2a641bde79bdb5eb4c86a0ab32360e1f8 / get_redirect_host? Marshal_format = json [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installieren von ActiveRecord 4 instrumentation [09/22/13 17:23:39 +1000 (10) 12925)] INFO: Installation der Net-Instrumentation [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO : Installation der verzögerten Rack-Instrumentierung [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installation der Rails 4-Controller-Instrumentierung [09/22/13 17:23:39 +1000 skorks-envato (12925) )] INFO: Installation von Rails 4-Instrumentation anzeigen [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installation von Rails4-Fehlerinstrumentierung [09/22/13 17:23:39 +1000 skorks- envato (12925)] INFO: Beendete Instrumentierung [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Registrierter NewRelic :: Agent :: Sampler :: CpuSampler für die Erntezeit. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Registrierter NewRelic :: Agent :: Sampler :: MemorySampler für die Erntezeit. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Samplers :: ObjectSampler wird auf dieser Plattform nicht unterstützt. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Sampler :: DelayedJobSampler wird auf dieser Plattform nicht unterstützt. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Ausführen einer verzögerten Abhängigkeitserkennung vor dem Start des Racks [09/22/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: Nicht komprimierter Inhalt zurückgegeben [09/22/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: Erstelltes net / http-Handle für collector-1.newrelic.com:443 [09/22/13 17: 23:40 +1000 skorks-envato (12925)] DEBUG: Anforderung an Collector-1.newrelic.com:443/agent_listener/12/1f69cbd2a641bde79bdb5eb4c86a0ab32360e1f8/connect?marshal_format=json [09/22/13 17:23:42 + 1000 skorks-envato (12925)] DEBUG: Nicht komprimierter Inhalt wurde zurückgegeben [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Vom Server bereitgestellte Konfiguration: … [09/22/13 17: 23:42 +1000 skorks-envato (12925)] DEBUG: Nicht in Rake-Umgebung, also Blacklisted_rake_tasks überspringen: Nicht initialisierter konstanter Rake [09/22/13 17:23:42 +1000 Skorks-Envato (12925)] DEBUG: Aktualisieren der Konfiguration (hinzufügen) aus NewRelic :: Agent :: Configuration :: ServerSource. Ergebnisse: [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: … [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Verkabelung Anwendungsübergreifende Verfolgung von Ereignissen nach Abschluss der Konfiguration [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Verbunden mit New Relic Service unter collector-1.newrelic.com [22.09.13 17:23:42 +1000 Skorks-Envato (12925)] DEBUG: Agent Run = 575257565. [22.09.13 17:23:42 +1000 Skorks-Envato (12925)] DEBUG: Verbindungsdaten = … [ 09/22/13 17:23:42 +1000 skorks-envato (12925)] INFO: Berichterstattung an: https://rpm.newrelic.com/accounts/303380/applications/2507376 [09/22/13 17:23 : 42 +1000 skorks-envato (12925)] DEBUG: Browser-Timing-Header: ""[09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: statische Fußzeile des Browsers:" if (! NREUMQ.f) NREUMQ.f = function () \ nNREUMQ.push ( [\ "load", neues Datum (). getTime ()]); \ nvar e = document.createElement (\ "script \"); \ ne.type = \ "text / javascript \"; \ ne.src = ((\ "http: \" === document.location.protocol)? \ "http: \": \ "https: \") + \ "//" + \ n \ "js-agent.newrelic .com / nr-100.js \ "; \ ndocument.body.appendChild (e); \ nif (NREUMQ.a) NREUMQ.a (); \ n; \ nN \ NREUMQ.a = window.onload; window.onload = NREUMQ.f; \ n; \ n "[09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Echte Benutzerüberwachung verwendet das JSONP-Protokoll [09/22/13 17:23 : 42 +1000 skorks-envato (12925)] DEBUG: Leistungsdaten werden alle 60 Sekunden gemeldet. [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Ausführen einer Worker-Schleife [09/22 / 13 17:23:50 +1000 skorks-envato (12925)] DEBUG: Versuch, RUM-Header am Kopfanfang einzufügen.

Zum Beispiel können wir das sehen:

  • Wir können die Überwachung auch ausschalten, wenn sie in der Konfigurationsdatei eingeschaltet ist, indem Sie eine Umgebungsvariable setzen NEWRELIC_ENABLE = false
  • 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 wäre 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
  • Echte Benutzerüberwachung erfolgt über JSONP

Sehr nützliche Informationen, wenn Sie herausfinden wollen, wie die Dinge zusammen hängen.

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

browser_monitoring: auto_instrument: true capture_params: false

Die einzige andere, die Sie möglicherweise beachten sollten:

transaction_tracer: transaction_threshold: apdex_f

Der Transaction Tracer erfasst detaillierte Daten zu Anforderungen, die zu lange dauern. Der Transaktionsschwellenwert ist normalerweise ein Vielfaches (x4) des Apdex-Werts, es ist jedoch oft nützlich, diese Werte voneinander zu trennen. Sie können mit einer Apdex-Bewertung von einer Sekunde zufrieden sein, aber Sie möchten 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:

transaction_tracer: transaction_threshold: 1.5

Der neue Relic-Entwicklermodus

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

developer_mode: wahr

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

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


Benachrichtigung eines neuen Relikts über Bereitstellungen

Wann immer Sie an der Leistung Ihrer Anwendung arbeiten, ist es immer gut zu wissen, ob eine bestimmte Bereitstellung die Leistung positiv oder negativ beeinflusst 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 Täter war. New Relic bietet dazu Capistrano-Hooks, aber ich bevorzuge die Befehlszeile:

% newrelic-Bereitstellungen -a 'newrelic_rails1 (Entwicklung)' -e 'Entwicklung' -u 'Skorks' -r 'abc123' Aufgenommene Bereitstellung für 'newrelic_rails1 (Entwicklung)' (2013-09-22 18:19:13 +1000)

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

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


Fazit

Sie wissen jetzt viel darüber, wie New Relic funktioniert und wie Sie es einsetzen können, um eine Rails-Anwendung zu überwachen. Die richtige Konfiguration der Dinge ist jedoch nur die halbe Miete. Welche Art von Kennzahlen wird New Relic tatsächlich für Sie erfassen? Und wie können Sie sie verwenden, um die Leistung Ihrer Anwendung zu verbessern? Einige davon werden wir in einem nachfolgenden Artikel betrachten. Versuchen Sie zunächst, New Relic für Ihre Rails-Anwendung zu konfigurieren (Sie erhalten ein kostenloses T-Shirt). Wenn Sie Fragen haben, vergessen Sie nicht, einen Kommentar zu hinterlassen.