Komma igång med New Relic om 30 minuter

Jag kommer ihåg att arbeta på en Rails-app för några år sedan och någon flöt tanken på att använda den nya tjänsten som hade dykt upp på scenen. Det heter New Relic och de lovade att ge dig mer inblick i resultatet av din Rails app, än vad du någonsin kunde få förut. Vi gav det ett försök och det var imponerande, det var viktigare att det var något som Ruby webbutvecklingsekosystem verkligen behövde.

Sponsrat innehåll

Det här innehållet beställdes av New Relic och skrevs och / eller redigerades av Tuts + -laget. Vårt mål med sponsrat innehåll är att publicera relevanta och objektiva handledningar, fallstudier och inspirerande intervjuer som erbjuder genuint pedagogiskt värde till våra läsare och gör det möjligt för oss att finansiera skapandet av mer användbart innehåll.

Snabbspolning fram till nu och du skulle vara hårt pressad för att hitta en Ruby-webbapplikation som inte har New Relic ansluten. New Relic som ett företag har fortsatt att tillhandahålla verktyg för att övervaka dina Ruby-appar, men de har också förgrenat sig ut på ett antal andra språk som Java, Python och även .Net. Men självklart som antalet funktioner du ger växer gör det också komplexiteten och mängden dokumentation där ute. Det blir svårt att ta reda på var du ska börja, speciellt om du inte är expert än.

Idag trodde jag att vi kunde gå tillbaka till rötterna till New Relic och titta på hur vi kan komma igång med tjänsten för att övervaka en Rails applikation.


En Basic Rails App

För att kunna använda New Relic behöver vi något att övervaka, så låt oss skapa en grundläggande "Hello World" Rails-app.

Appen vi skapar kommer att leva under ~ / Projects / tmp / newrelic, och kommer att kallas newrelic_rails1. Jag antar att du redan har installerat Rails:

cd ~ / projekt / tmp / newrelic rails nya newrelic_rails1 cd newrelic_rails1

Det finns inte mycket för oss att göra för att skapa vår "Hello World" -app. Vi behöver en ny controller:

skenor g kontroller hej

Nu behöver vi bara en rutt, vi kommer att få ruttvägen för applikationen att använda vår controller. Vi behöver också en vy med orden "Hello World". Med tanke på allt detta, vårt config / routes.rb ska se så här ut:

NewrelicRails1 :: Application.routes.draw do root 'hej # index' slutet

Vår controller (app / styrenheten / hello_controller.rb), kommer att vara enligt följande:

klass HelloController> ApplicationController def index slutänden

Och vår åsikt (app / vyer / hello / index.html.erb), kommer att likna:

Hej världen!

Vi kan nu starta vår utvecklingsserver:

skenor s

När vi krulla localhost: 3000, vi får:

 ...  

Hej världen!

Allting fungerar!


Hooking in New Relic

Med Ruby är det väldigt enkelt. Vi lägger till en pärla i vår Gemfile, springa a buntinstallation, släpp en config-fil i config-mappen och vi har allt vi behöver. I själva verket är New Relic ganska bra att styra dig igenom detta. Allt du behöver göra är att logga in på ditt konto och om du inte har använt ett New Relic-agent innan är det ganska uppenbart vad du ska göra:

För det första installerar vi New Gem agent-pärlan genom att lägga till den till vår Gemfile, enligt instruktionerna:

Vår Gemfile kommer nu att se ut så här:

källa 'https://rubygems.org' pärla 'skenor', '4.0.0' pärla 'sqlite3' pärla 'sass-rails', '~> 4.0.0' pärla 'uglifier', '> = 1.3.0' pärla "kaffebarar", "~> 4.0.0" pärla "jquery-rails" pärla "turbolinks" pärla "jbuilder", "~> 1.2" grupp: doc gör pärla sdoc ", kräver: false end pärla 'newrelic_rpm '

När vi lägger till någonting i Gemfile vi måste springa:

buntinstallation

Vi behöver också en newrelic.yml, som du kan ladda ner från New Relic:

Det kommer att bli förkonfigurerade med din licensnyckel. Vi måste lägga den här filen under config / newrelic.yml.

Vid denna tidpunkt om vi körde vår ansökan i scenografi eller produktionsläge skulle vi redan få data i vårt nya relikonto. Så låt oss göra det:

RAILS_ENV = produktionsskenor s

Den här gången när vi curl localhost: 3000, vi får:

   NewrelicRails1       

Hej världen!

Det finns en massa JavaScript som har infogats i våra sidor, så att New Relic kan övervaka webbläsartid. Det här är ett sätt att vi kan berätta att vår New Relic-integration fungerar. Men det är inte det enda sättet, skapar New Relic också en loggfil:

% cat log / newrelic_agent.log Loggfil skapad den 2013-09-22 16:23:13 +1000 av logger.rb / 36483 [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Starta New Relic Agent i "Production" miljö. [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: För att förhindra att agent startas lägger du till en NEWRELIC_ENABLE = falsk miljövariabel eller ändrar avsnittet "produktion" av din newrelic.yml. [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Läs konfiguration från config / newrelic.yml [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Aktivera begäran Sampler. [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Miljö: 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: Ansökan: Min ansökan [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera ActiveRecord 4 instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera Net instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera Uppskjuten Rack instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera Rails 4 Controller instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera Rails 4 visa instrumentation [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installera Rails4 Felinstrumentering [09/22/13 16:23:13 +1000 skorks-envato ( 12424)] INFO: Färdig instrumentering [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Göra uppskjutet beroendeavkänning före rackstart [0 9/22/13 16:23:16 +1000 skorks-envato (12424)] INFO: Rapportering till: https://rpm.newrelic.com/accounts/303380/applications/2507356

Vi kan också kolla vårt New Relic-konto för att se till att en ny applikation har dykt upp för övervakning:

Det finns dock några saker som inte är så trevliga:

  • Vår ansökan heter "My Application"
  • Vi accepterade alla standardkonfigurationsvärden, vilket kanske inte passar vår app
  • Vi var tvungna att starta vår server i produktionsläge (vilket bara är möjligt eftersom det är en helt ny app som inte är beroende av någon extern infrastruktur)

Så låt oss titta på vårt newrelic.yml filen lite mer detaljerad för att se hur vi kan övervaka vår appprestanda precis som vi vill ha det.


Dykning till ny relikskonfiguration

Först och främst är New Relic-konfigurationsfilen mycket väl kommenterad och jag uppmuntrar dig att läsa kommentarerna för de olika konfigurationsparametrarna för att förstå vad alla gör.

För det andra är New Relic-konfigurationen miljömedveten och konfigurationen för alla miljöer definieras i den newrelic.yml fil, det här ligner mycket på hur Rails database.yml fil fungerar. Vi definierar en massa gemensamma konfigurationsvärden och överstyrar sedan de relevanta i de specifika miljöblocken, t ex:

Vanlig: & default_settings license_key: ''app_name: My Application monitor_mode: true ... utveckling: <<: *default_settings monitor_mode: false test: <<: *default_settings monitor_mode: false production: <<: *default_settings monitor_mode: true staging: <<: *default_settings monitor_mode: true

Vi kan omedelbart börja se hur vi kan fixa några av de punkter som vi höjde ovanför. Om vi ​​inte vill starta vår app i produktionsläge när vi anpassar vår konfiguration är allt vi behöver göra det möjligt att övervaka i utvecklingsläget (vi måste komma ihåg att stänga av det när vi är nöjda med vår konfiguration eftersom vi inte vill att utvecklingsdata klotter upp vårt New Relic-konto).

utveckling: <<: *default_settings monitor_mode: true

Vi bör också åsidosätta vårt programnamn för varje miljö som vi har för att se till att de övervakas separat och ansökningsnamnet är meningsfullt:

 Vanlig: & default_settings license_key: ''app_name: newrelic_rails1 monitor_mode: true ... utveckling: <<: *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)

Med just dessa konfigurations tweaks, när vi startar vår server i utvecklingsläge och curl localhost: 3000:

Vi följer nu vår applikation i utvecklingsläge och vårt appnamn är vad vi förväntar oss. Om din ansökan säger att den inte tar emot några data, ge den en minut, det tar lite tid för att data ska börja komma igenom.

Det näst mest intressanta (och ofta det mest förvirrande) konfigurationsvärdet är Apdex T-värdet. Till skillnad från de flesta andra konfigurationsparametrar lever det här värdet inte i newrelic.yml filen, men finns istället i inställningarna för programmet inom New Relic:

Om du vill tweak ditt Apdex T-värde måste du göra det här, men vad är den här parametern och vad är det rätta värdet att lägga in det? Tja, New Relic förklarar det på följande sätt:

Ditt programs Apdex T-värde är inställt på 0,5 sekunder. Det betyder att förfrågningar som svarar på mindre än 0,5 sekunder är tillfredsställande, svarar mellan 0,5 sekunder och 2,0 sekunder tolererar (t), och svar på mer än 2,0 sekunder är frustrerande (f).

I huvudsak använder New Relic Apdex-värdet för att mäta din ansökans hälsa vad gäller prestanda, så om flera av de begäranden som övervakas av New Relic tar längre tid än ditt Apdex-värde, kommer New Relic att överväga att din ansökan ska fungera dåligt och om du har ställt in varningar kommer du att meddela om det. I grund och botten måste du räkna ut hur snabbt du vill att varje serverförfrågan ska uppfyllas av din ansökan, så om du är okej med en backend-begäran om två sekunder kan du ställa in ditt Apdex-värde till 2,0, men om du behöver en svaret ska returneras inom 100 ms då bör du ställa in ditt Apdex-värde till 0,1.

Om du har en ny applikation kan du ställa in Apdex-värdet till den prestanda du önskar från din ansökan. Om din app är en befintlig, kan det hända att du har några mätvärden angående hur snabbt det ska / ska utföra, och du kan styras av det. Alla förfrågningar som servern uppfyller i mindre än Apdex T-värdet kommer att anses av New Relic vara bra. Alla förfrågningar uppfyllda inom Apdex * 4 sekunder kommer att anses tolerera (dvs användare kan tolerera det). Alla svar som tar längre tid än Apdex * 4 kommer att betraktas som frustrerande (frustrerade användare tenderar inte att hålla fast). Så sätt ditt Apdex T-värde på ett sådant sätt att du faktiskt får användbar information utifrån det, det verkliga värdet beror på din domän och vad du vill uppnå (vad gäller prestanda), det finns inget rätt eller fel svar.

Vi ställer in vårt Apdex T-värde till 100ms (0,1), eftersom allt vi har är en "Hello World" -app, och det ska kunna återge ett svar mycket snabbt (även i utvecklingsläge).


Ännu mer ny relikskonfiguration

Det var lite roligt att det mesta av konfigurationen kommer från newrelic.yml fil men Apdex T-värdet finns i programinställningarna, så New Relic låter dig nu flytta alla konfigurationsvärden från YAML-filen till New Relic:

Fördelen med detta är att du inte behöver omfördela varje gång du vill anpassa dina konfigurationsvärden, så det är definitivt något värt att överväga. Vi kommer att hålla fast vid YAML-filen för nu.

Så vad är några av de andra användbara New Relic-parametrarna vi borde veta om?

Tja, det finns en uppsättning parametrar som hanterar loggfilen New Relic Agent:

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

Dessa har förnuftiga standardvärden, men om vi vill att loggfilen ska gå till en viss plats eller om vi vill se mer eller mindre information i filen, kan vi enkelt styra det här. Eftersom vi just skapar New Relic ställer vi in ​​loggnivån till debug, för att se till att vi inte saknar någon viktig information (när vi distribuerar kanske vi vill ställa in den varna, eller ens fel).

Vi får nu en mängd information i loggfilen, som (om den läses noggrant) kan ge oss mycket insikter om hur New Relic fungerar:

% cat log / newrelic_agent.log

[09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Starta New Relic Agent i "utveckling" miljö. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: För att förhindra att agent startas lägger du till en NEWRELIC_ENABLE = falsk miljövariabel eller ändrar avsnittet "utveckling" av din newrelic.yml. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Läs konfiguration från config / newrelic.yml [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Inte i Rake-miljö så hoppa över blacklisted_rake_tasks check: oinitialiserad konstant Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Uppdatering config (add) från NewRelic :: Agent :: Configuration: : YamlSource. Resultat: [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: ... [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Inte i Rake-miljö så hoppa över blacklisted_rake_tasks check: oinitialiserad konstant Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Uppdatering config (add) från NewRelic :: Agent :: Configuration :: ManualSource. Resultat: [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: ... [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Inte i Rake miljö så hoppar blacklisted_rake_tasks check: oinitialiserad konstant Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Installerad New Relic Browser Monitoring middleware [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Installerad New Relic Agent Hooks middleware [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Agent är konfigurerad att använda SSL [09/22 / 13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Använda JSON marshaller [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Transaktionsspårningsgränsen är 2,0 sekunder. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Ignorerar fel av typen 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925 )] DEBUG: Ignorerar fel av typen 'Sinatra :: NotFound' [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Fel kommer att skickas till New Relic-tjänsten. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Ignorerar fel av typen 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925 )] DEBUG: Ignorera fel av typen 'Sinatra :: NotFound' [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: RequestSampler max_samples set to 1200 [09/22/13 17:23 : 39 +1000 skorks-envato (12925)] DEBUG: Återställ RequestSampler [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Aktivera Request Sampler. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Miljö: utveckling [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Dispatcher: webrick [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Ansökan: newrelic_rails1 (Utveckling) [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport lyckades inte hämta värdet för "Plugin List": odefinierad metod "plugins" för # [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport misslyckades med att hämta värdet för "JRuby version": oinitialiserad konstant NewRelic :: EnvironmentReport :: JRUBY_VERSION [09/22/13 17: 23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport misslyckades med att hämta värdet för "Java VM version": oinitialiserad konstant NewRelic :: EnvironmentReport :: ENV_JAVA [09/22/13 17:23:39 +1000 skorks- envato (12925)] DEBUG: EnvironmentReport ignorerar värdet för "Rails threadsafe" som kom tillbaka falsey: nil [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Skapa Ruby Agent-arbetstråd. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Skapa ny relikgänga: Worker Loop [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG : New Relic Ruby Agent 3.6.7.152 Initialiserad: pid = 12925 [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Anslutningsprocess till New Relic: korg / skenor [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Inte i Rake miljö så hoppar blacklisted_rake_tasks check: oinitialiserad konstant Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Skapat netto / http handtag till collector.newrelic.com:443 [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Skicka förfrågan till 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: Installera ActiveRecord 4 instrumentation [09/22/13 17:23:39 +1000 skorks-envato ( 12925)] INFO: Installera Nätinstrument [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO : Installera uppskjuten Rack instrumentation [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installera Rails 4 Controller instrumentation [09/22/13 17:23:39 +1000 skorks-envato (12925 )] INFO: Installera Rails4 visa instrumentation [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installera Rails4 Felinstrumentering [09/22/13 17:23:39 +1000 skorks- envato (12925)] INFO: Färdig instrumentering [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Registrerad NewRelic :: Agent :: Samplers :: CpuSampler för sampling av skörd. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Registrerad NewRelic :: Agent :: Samplers :: MemorySampler för sampling av skörd. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Samplers :: ObjectSampler stöds inte på denna plattform. [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Samplers :: DelayedJobSampler stöds inte på denna plattform. [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Göra uppskjutet beroendeavkänning före rackstart [09/22/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: Okomprimerad innehåll återvänt [09/22/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: Skapad netto / http handtag till collector-1.newrelic.com:443 [09/22/13 17: 23:40 +1000 skorks-envato (12925)] DEBUG: Skicka förfrågan till collector-1.newrelic.com:443/agent_listener/12/1f69cbd2a641bde79bdb5eb4c86a0ab32360e1f8/connect?marshal_format=json [09/22/13 17:23:42 + 1000 skorks-envato (12925)] DEBUG: Komprimerat innehåll returnerat [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Server tillhandahållen config: ... [09/22/13 17: 23:42 +1000 skorks-envato (12925)] DEBUG: Inte i Rake-miljö så hoppa över blacklisted_rake_tasks check: oinitialiserad konstant Rake [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Uppdatering config (lägg till) från NewRelic :: Agent :: Configuration :: ServerSource. Resultat: [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: ... [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Ledningar Up Cross Application Tracing till händelser efter avslutad konfiguration [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Ansluten till New Relic Service på collector-1.newrelic.com [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Agent Run = 575257565. [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Anslutningsdata = ... [ 09/22/13 17:23:42 +1000 skorks-envato (12925)] INFO: Rapportering till: 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: Browser timing static footer:" om (! NREUMQ.f) NREUMQ.f = function () \ nNREUMQ.push [\ "ladda \", nytt 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; \ nNREUMQ.a = window.onload; window.onload = NREUMQ.f; \ n; \ n "[09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Real User Monitoring använder JSONP-protokollet [09/22/13 17:23 : 42 +1000 skorks-envato (12925)] DEBUG: Rapportering av prestandadata var 60: e sekund. [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Running worker loop [09/22 / 13 17:23:50 +1000 skorks-envato (12925)] DEBUG: Försök att sätta in RUM-rubrik i början av huvudet.

Till exempel kan vi se det:

  • Vi kan stänga av övervakning även om den är påslagen i konfigurationsfilen genom att ange en miljövariabel NEWRELIC_ENABLE = false
  • Vi kan se att New Relic sätter in en massa Rack middleware
  • Vi använder Webrick som vår server, vilket är uppenbarligen i utvecklingsläge, men i produktion skulle det vara bra att bekräfta att New Relic känner igen servern som vi använder
  • New Relic skickar data till collector.newrelic.com:443
  • New Relic skickar data var 60: e sekund
  • Verklig användarövervakning sker via JSONP

Mycket användbar information när du försöker lista ut hur sakerna hänger ihop.

De flesta av de andra konfigurationsparametrarna är ganska självförklarande t.ex.

browser_monitoring: auto_instrument: true capture_params: false

Den enda andra som kanske är medveten om är:

transaction_tracer: transaction_threshold: apdex_f

Transaktionsspåraren fångar detaljerad information om förfrågningar som tar för lång tid. Transaktionsgränsen är normalt en multipel (x4) av Apdex-värdet, men det är ofta användbart att skilja dessa värden från varandra. Du kanske är nöjd med ett Apdex-poäng på en sekund, men du kanske vill fånga detaljerad information om förfrågningar som tar 1,5 sekunder eller längre (i stället för de fyra sekunder eller längre som skulle hända som standard). Så du kan ställa in denna parameter separat:

transaction_tracer: transaction_threshold: 1.5

New Relic Developer Mode

Ett av de konfigurationsvärden du kanske har märkt var:

developer_mode: true

Detta bör endast kopplas till under utveckling (om alls). I utvecklingsläge lagrar New Relic-agent prestandata om de senaste 100 förfrågningarna i minnet. Du kan när som helst titta på dessa data genom att slå på / newrelic slutpunkt för din löpande applikation:

Jag använder knappt någonsin det, men det är där om du behöver det.


Underrättelse om nytt relikvation av implementeringar

När du jobbar med din ansökans prestanda är det alltid bra att veta om en viss implementering har haft en positiv eller negativ effekt på prestanda. För detta ändamål kan du meddela New Relic varje gång du utför en implementering. På så sätt om prestanda försämras eller förbättras kan du se vilken utplacering som var skyldig. New Relic ger Capistrano krokar för att göra detta, men jag föredrar kommandoraden sätt:

% newrelic deployments -a 'newrelic_rails1 (Development)' -e 'utveckling' -u 'skorks' -r 'abc123' Inspelad utplacering till 'newrelic_rails1 (Development)' (2013-09-22 18:19:13 +1000)

Det viktigaste är att korrekt ange programnamnet som konfigurerat i newrelic.yml fil.

Vi kommer att få snygga linjer på relevanta New Relic-grafer för att ange när en utplacering inträffade.


Slutsats

Nu vet du mycket om hur New Relic fungerar och hur man börjar använda det för att övervaka en Rails-applikation. Men att konfigurera saker ordentligt är bara hälften av slaget, vilken typ av statistik kommer New Relic faktiskt att fånga för dig? Och hur kan du använda dem för att förbättra prestandan i din ansökan? Vi kommer att titta på några av dessa i en efterföljande artikel. För tillfället, gå till att konfigurera New Relic för din Rails applikation (du får en gratis T-shirt) och om du har några frågor glöm inte att lämna en kommentar.