Débuter avec une nouvelle relique en 30 minutes

Je me souviens d'avoir travaillé sur une application Rails il y a quelques années et quelqu'un a lancé l'idée d'utiliser ce nouveau service qui était apparu sur les lieux. Il s’appelait New Relic et ils promettaient de vous donner plus d’informations sur les performances de votre application Rails, comme jamais auparavant. Nous avons essayé et c'était impressionnant. Plus important encore, cet écosystème de développement Web Ruby était vraiment nécessaire..

Contenu sponsorisé

Ce contenu a été commandé par New Relic et a été écrit et / ou édité par l'équipe de Tuts +. Notre objectif avec le contenu sponsorisé est de publier des tutoriels pertinents et objectifs, des études de cas et des interviews inspirantes qui offrent une véritable valeur éducative à nos lecteurs et nous permettent de financer la création de contenu plus utile..

Avance rapide jusqu'à maintenant et vous auriez du mal à trouver une application Web Ruby à laquelle New Relic n'est pas connectée. New Relic, en tant que société, continue de fournir des outils pour surveiller vos applications Ruby, mais ils ont également ouvert une branche. dans un certain nombre d'autres langages tels que Java, Python et même .Net. Mais, bien entendu, à mesure que le nombre de fonctionnalités que vous fournissez augmente, la complexité et la quantité de documentation disponibles augmentent également. Il devient difficile de savoir par où commencer, surtout si vous n'êtes pas encore expert.

Aujourd'hui, j'ai pensé que nous pourrions revenir aux racines de New Relic et voir comment nous pouvons utiliser le service pour surveiller une application Rails..


Une application Rails de base

Afin de pouvoir utiliser New Relic, nous avons besoin de quelque chose à surveiller. Configurez donc une application de base "Hello World" Rails..

L'application que nous créons vivra sous ~ / projets / tmp / newrelic, et sera appelé newrelic_rails1. Je suppose que vous avez déjà installé Rails:

cd ~ / projets / tmp / newrelic rails new newrelic_rails1 cd newrelic_rails1

Il n'y a pas grand chose à faire pour créer notre application 'Hello World'. Nous avons besoin d'un nouveau contrôleur:

rails g contrôleur bonjour

Maintenant que nous avons juste besoin d’une route, nous allons faire en sorte que la route racine de l’application utilise notre contrôleur. Nous avons également besoin d'une vue avec les mots «Hello World». Compte tenu de tout cela, notre config / routes.rb devrait ressembler à ceci:

NewrelicRails1 :: Application.routes.draw fait root 'bonjour # index' fin

Notre contrôleur (app / controller / hello_controller.rb), sera comme suit:

classe HelloController> ApplicationController def end end end

Et notre vue (app / views / hello / index.html.erb), sera similaire à:

Bonjour le monde!

Nous pouvons maintenant démarrer notre serveur de développement:

rails s

Quand on curl localhost: 3000, on a:

Bonjour le monde!

Tout fonctionne!


Accrocher dans une nouvelle relique

Avec Ruby c'est très simple. Nous ajoutons un petit bijou à notre Gemfile, courir un installation groupée, déposez un fichier de configuration dans le dossier de configuration et nous avons tout ce dont nous avons besoin. En fait, New Relic est très efficace pour vous guider. Il vous suffit de vous connecter à votre compte. Si vous n'avez pas déployé d'agent New Relic auparavant, vous devez absolument savoir quoi faire:

Tout d’abord, nous installons le bijou d’agent New Relic en l’ajoutant à notre Gemfile, selon les instructions:

Notre Gemfile va maintenant ressembler à ceci:

source 'https://rubygems.org' gem 'rails', '4.0.0' gem 'sqlite3' gem 'sass-rails', '~> 4.0.0' gem 'uglifier', '> = 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', groupe '~> 1.2': doc do gem 'sdoc', nécessite: fausse fin gem 'newrelic_rpm '

Chaque fois que nous ajoutons quelque chose à la Gemfile nous devons courir:

installation groupée

Nous avons aussi besoin d'un newrelic.yml, que vous pouvez télécharger depuis New Relic:

Il viendra préconfiguré avec votre clé de licence. Nous devons mettre ce fichier sous config / newrelic.yml.

À ce stade, si nous exécutions notre application en mode intermédiaire ou en mode production, nous aurions déjà des données dans notre compte New Relic. Alors faisons-le:

RAILS_ENV = rails de production s

Cette fois où nous curl localhost: 3000, on a:

   NewrelicRails1       

Bonjour le monde!

Un certain nombre de JavaScript ont été insérés dans nos pages afin que New Relic puisse surveiller la durée du navigateur. C’est une façon pour nous de dire que notre intégration New Relic fonctionne. Mais ce n’est pas le seul moyen, New Relic crée également un fichier journal:

% cat log / newrelic_agent.log Fichier journal créé le 2013-09-22 16:23:13 +1000 par logger.rb / 36483 [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFO: Démarrage de l'agent New Relic dans un environnement "de production". [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFORMATION: Pour empêcher le démarrage de l'agent, ajoutez une NEWRELIC_ENABLE = false, variable d'environnement ou modifiez la section "production" de votre newrelic.yml. [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFO: lecture de la configuration depuis config / newrelic.yml [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFORMATION: Activer l'échantillonneur de demandes. [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFO: Environnement: production [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFO: Répartiteur: webrick [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Application: Mon application [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation d'ActiveRecord 4 instrumentation [22/09/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation de l'instrumentation Net [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation Instrumentation en rack différée [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation de Rails 4 Instrumentation du contrôleur [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation de l'instrumentation d'affichage de Rails 4 [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Installation de l'instrumentation d'erreur Rails4 [09/22/13 16:23:13 +1000 skorks-envato ( 12424)] INFO: Instrumentation terminée [09/22/13 16:23:13 +1000 skorks-envato (12424)] INFO: Détection de dépendance différée avant le démarrage du rack [0 22/09/13 16:23:16 +1000 skorks-envato (12424)] INFO: en rapport avec: https://rpm.newrelic.com/accounts/303380/applications/2507356

Nous pouvons également consulter notre compte New Relic pour nous assurer qu'une nouvelle application est apparue pour la surveillance:

Il y a cependant quelques petites choses qui ne sont pas si gentilles:

  • Notre application s'appelle 'Mon application'
  • Nous avons accepté toutes les valeurs de configuration par défaut, ce qui peut ne pas convenir à notre application.
  • Nous avons dû lancer notre serveur en mode production (ce qui n’est possible que parce que c’est une toute nouvelle application qui ne repose sur aucune infrastructure externe)

Alors regardons notre newrelic.yml déposer un peu plus en détail pour voir comment nous pouvons surveiller les performances de notre application exactement comme nous le voulons.


Plonger dans la nouvelle configuration de relique

Tout d’abord, le fichier de configuration de New Relic est extrêmement bien commenté et je vous encourage à lire les commentaires relatifs aux divers paramètres de configuration pour comprendre ce qu’ils font tous..

Deuxièmement, la configuration de New Relic est sensible à l’environnement et la configuration de tous les environnements est définie dans newrelic.yml fichier, cela est très similaire à, comment les Rails database.yml fichier fonctionne. Nous définissons un ensemble de valeurs de configuration communes, puis nous remplaçons les valeurs pertinentes dans les blocs d’environnement spécifiques, par exemple:

common: & default_settings license_key: ''app_name: Mon application monitor_mode: true… développement: <<: *default_settings monitor_mode: false test: <<: *default_settings monitor_mode: false production: <<: *default_settings monitor_mode: true staging: <<: *default_settings monitor_mode: true

Nous pouvons immédiatement commencer à voir comment nous pouvons résoudre certains des points que nous avons soulevés ci-dessus. Si nous ne voulons pas que notre application soit lancée en mode production pendant que nous ajustons notre configuration, il nous suffit d'activer la surveillance en mode développement (nous devons nous rappeler de désactiver cette option lorsque nous serons satisfaits. notre configuration car nous ne voulons pas que les données de développement encombrent notre compte New Relic).

développement: <<: *default_settings monitor_mode: true

Nous devrions également remplacer le nom de notre application pour chaque environnement que nous avons, afin de nous assurer qu'ils sont surveillés séparément et que le nom de l'application est logique:

 common: & default_settings license_key: ''app_name: newrelic_rails1 monitor_mode: true… développement: <<: *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)

Avec juste ces réglages de configuration, lorsque nous démarrons notre serveur en mode de développement et curl localhost: 3000:

Nous surveillons maintenant notre application en mode de développement et le nom de notre application correspond à nos attentes. Si votre application dit ne pas recevoir de données, laissez-lui une minute, il faut un peu de temps pour que les données commencent à arriver..

La valeur de configuration suivante la plus intéressante (et souvent la plus déroutante) est la valeur Apdex T-value. Contrairement à la plupart des autres paramètres de configuration, cette valeur ne réside pas dans la newrelic.yml fichier, mais se trouve plutôt dans les paramètres de l'application dans New Relic:

Si vous souhaitez modifier votre valeur T Apdex, vous devez le faire ici, mais quel est ce paramètre et quelle est la bonne valeur à y mettre? Eh bien, New Relic l'explique de la manière suivante:

La valeur T Apdex de votre application est définie sur 0,5 seconde. Cela signifie que les demandes qui répondent en moins de 0,5 seconde sont satisfaisantes, que celles qui répondent entre 0,5 seconde et 2,0 secondes sont tolérantes (t) et que répondre dans plus de 2,0 secondes est frustrant (f).

New Relic utilise essentiellement la valeur Apdex pour évaluer la santé de votre application en termes de performances. Ainsi, si de nombreuses demandes surveillées par New Relic durent plus longtemps que votre valeur Apdex, New Relic considérera que votre application est en cours d'exécution. mal et si vous avez mis en place des alertes, vous en informerons. En gros, vous devez déterminer à quelle vitesse vous voulez que chaque demande de serveur soit traitée par votre application. Par conséquent, si vous êtes d'accord avec une requête backend prenant deux secondes, vous pouvez définir votre valeur Apdex sur 2.0, mais si vous avez besoin d'un réponse à renvoyer dans un délai de 100ms, vous devez définir votre valeur Apdex sur 0.1.

Si vous avez une nouvelle application, vous pouvez définir la valeur Apdex sur les performances souhaitées pour votre application. Si votre application est déjà existante, vous pouvez disposer de certaines mesures de la rapidité avec laquelle elle est / devrait être performante, et vous pouvez être guidé par cela. Toutes les demandes qui sont remplies par le serveur en dessous de la valeur Apdex seront considérées par New Relic comme correctes. Toutes les demandes traitées dans Apdex * 4 secondes seront considérées comme tolérantes (c.-à-d. Que les utilisateurs peuvent le tolérer). Toutes les réponses qui prennent plus de temps que Apdex * 4 seront considérées frustrantes (les utilisateurs frustrés n’ont pas tendance à rester en retrait). Donc, définissez votre valeur Apdex T de manière à obtenir des informations utiles; la valeur réelle dépend de votre domaine et de ce que vous souhaitez atteindre (en termes de performances), il n'y a pas de bonne ou de mauvaise réponse..

Nous définirons notre valeur Apdex T à 100 ms (0,1), car tout ce que nous avons est une application «Bonjour tout le monde», et il devrait pouvoir retourner une réponse très rapidement (même en mode développement)..


Encore plus de nouvelle configuration de relique

C'était un peu drôle que la majeure partie de la configuration vienne du newrelic.yml fichier, mais la valeur T Apdex se trouvant dans les paramètres de l'application. New Relic vous permet donc de déplacer toutes les valeurs de configuration du fichier YAML vers New Relic:

L'avantage de cela est que vous n'avez pas besoin de redéployer à chaque fois que vous souhaitez modifier vos valeurs de configuration, c'est donc certainement quelque chose qui mérite d'être considéré. Nous nous en tiendrons au fichier YAML pour l'instant.

Alors, quels sont certains des autres paramètres utiles de New Relic que nous devrions connaître?

Eh bien, il existe un ensemble de paramètres concernant le fichier journal de l'agent New Relic:

log_level: info log_file_log: 'log' nom_fichier_log: 'newrelic_agent.log'

Ceux-ci ont des valeurs par défaut raisonnables, mais si nous voulons que le fichier journal aille à un emplacement spécifique ou si nous voulons voir plus ou moins d'informations dans le fichier, nous pouvons facilement le contrôler. Comme nous sommes en train de configurer New Relic, nous allons définir le niveau de journalisation sur déboguer, pour nous assurer de ne manquer aucune information importante (lors du déploiement, nous pouvons vouloir le configurer prévenir, ou même Erreur).

Nous avons maintenant une mine d'informations dans le fichier journal, qui (si elles sont lues attentivement) peut nous donner de nombreuses informations sur le fonctionnement de New Relic:

% chat log / newrelic_agent.log

[22/09/13 17:23:39 +1000 skorks-envato (12925)] INFO: Démarrage de l'agent New Relic dans un environnement de "développement". [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: pour empêcher le démarrage de l'agent, ajoutez une NEWRELIC_ENABLE = false, variable d'environnement ou modifiez la section "développement" de votre newrelic.yml. [22/09/13 17:23:39 +1000 skorks-envato (12925)] INFORMATION: Lecture de la configuration depuis config / newrelic.yml [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Pas dans l'environnement Rake, donc saute la vérification blacklisted_rake_tasks: constante non initialisée Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Mise à jour de la configuration (ajouter) à partir de NewRelic :: Agent :: Configuration: : YamlSource. Résultats: [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: … [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Non dans l'environnement Rake, sautant blacklisted_rake_tasks check: constante non initialisée Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: mise à jour de la configuration (ajouter) à partir de NewRelic :: Agent :: Configuration :: Configuration :: ManualSource. Résultats: [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: … [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Non dans l'environnement Rake, sautant donc blacklisted_rake_tasks check: constante non initialisée Rake [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: installé le nouveau middleware de surveillance du navigateur Relic [09/22/13 17:23:39. +1000 skorks-envato (12925)] DEBUG: installé le nouveau middleware de hooks d'agent Relic [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: l'agent est configuré pour utiliser SSL [09/22 / 13 17:23:39 +1000 skorks-envato (12925)] DEBUG: utilisation de JSON marshaller [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: le seuil de suivi des transactions est de 2,0 secondes. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: en ignorant les erreurs de type 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925 )] DEBUG: Ignore les erreurs de type 'Sinatra :: NotFound' [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: les erreurs seront envoyées au service New Relic. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: en ignorant les erreurs de type 'ActionController :: RoutingError' [09/22/13 17:23:39 +1000 skorks-envato (12925 )] DEBUG: en ignorant les erreurs de type 'Sinatra :: NotFound' [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: RequestSampler max_samples défini sur 1200 [09/22/13 17:23 : 39 +1000 skorks-envato (12925)] DEBUG: réinitialisation de RequestSampler [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Activation de l'échantillonneur de demandes. [22/09/13 17:23:39 +1000 skorks-envato (12925)] INFO: Environnement: développement [22/09/13 17:23:39 +1000 skorks-envato (12925)] INFO: Répartiteur: webrick [22/09/13 17:23:39 +1000 skorks-envato (12925)] INFO: Application: newrelic_rails1 (Développement) [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport n'a pas pu récupérer la valeur de "Liste des plugins": méthode non définie 'plugins' pour # [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport n'a pas pu extraire la valeur de "JRuby version": constante non initialisée NewRelic :: EnvironmentReport :: JRUBY_VERSION [09/22/13 17: 23:39 +1000 skorks-envato (12925)] DEBUG: EnvironmentReport n'a pas pu extraire la valeur de "version de la machine virtuelle Java": constante non initialisée NewRelic :: EnvironmentReport :: ENV_JAVA [09/22/13 17:23:39 +1 000 skorks- envato (12925)] DEBUG: EnvironmentReport ignorant la valeur de "Rails threadsafe" qui est revenu falsey: nil [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: création du fil de travail de l'agent Ruby. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: création d'un nouveau fil de relique: boucle de travailleur [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG : New Relic Ruby Agent 3.6.7.152 initialisée: pid = 12925 [09/22/13 17:23:39 +1 000 skorks-envato (12925)] DEBUG: processus de connexion à une nouvelle relique: bin / rails [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Pas dans l'environnement de rake, sautant donc blacklisted_rake_tasks vérifier: constante non initialisée Rake [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Création du descripteur net / http sur collector.newrelic.com:443 [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: envoi d'une demande à collector.newrelic.com:443/agent_listener/12/. 1f69cbd2a641bde79bdb5c86a0ab32360e1f8 / get_redirect_host? Marshal_format = json [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installation d'ActiveRecord 4 instrumentation [09/22/13 17:25. 12925)] INFO: Installation de l'instrumentation sur le réseau [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO : Installation de l’instrumentation Rack différée [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installation de Rails 4 Instrumentation du contrôleur [09/22/13 17:23:39 +1000 skorks-envato (12925 )] INFO: Installation de Rails 4 voir l'instrumentation [09/22/13 17:23:39 +1000 skorks-envato (12925)] INFO: Installation de l'instrumentation d'erreur Rails4 [09/22/13 17:23:39 +1 000 skorks- envato (12925)] INFO: Instrumentation terminée [09/22/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Enregistré NewRelic :: Agent :: Samplers :: CpuSampler pour l'échantillonnage au moment de la récolte. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: Enregistré NewRelic :: Agent :: Samplers :: MemorySampler pour un échantillonnage du moment de la récolte. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Samplers :: ObjectSampler non pris en charge sur cette plate-forme. [22/09/13 17:23:39 +1000 skorks-envato (12925)] DEBUG: NewRelic :: Agent :: Samplers :: DelayedJobSampler non pris en charge sur cette plate-forme. [22/09/13 17:23:39 +1000 skorks-envato (12925)] INFO: Détection de dépendance différée avant le démarrage de Rack [09/22/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: contenu non compressé renvoyé [22/09/13 17:23:40 +1000 skorks-envato (12925)] DEBUG: créé un descripteur net / http pour collector-1.newrelic.com:443 [09/22/13 17: 23:40 +1000 skorks-envato (12925)] DEBUG: Envoi de la demande à collector-1.newrelic.com:443/agent_listener/12/1f69cbd2a641bde79bdb5c4a86ab0332e1f8/connect?marshal_format=json [09/22/13 17:25:02 1000 skorks-envato (12925)] DEBUG: contenu non compressé renvoyé [22/09/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: configuration fournie par le serveur: … [09/22/13 17: 23:42 +1000 skorks-envato (12925)] DEBUG: Pas dans l'environnement Rake, sautant donc blacklisted_rake_tasks vérifier: constante non initialisée Rake [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Mise à jour de la configuration (Ajouter) de NewRelic :: Agent :: Configuration :: ServerSource. Résultats: [22/09/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: … [22/09/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Câblage Traçage inter-applications vers les événements après la configuration terminée [09/22/13 17:23:42 +1 000 skorks-envato (12925)] DEBUG: connecté au nouveau service Relic à collector-1.newrelic.com [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Agent exécuté = 575257565. [22/09/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: Données de connexion = … [ 22/09/13 17:23:42 +1000 skorks-envato (12925)] INFO: Signaler à: https://rpm.newrelic.com/accounts/303380/applications/2507376 [09/22/13 17:23 : 42 +1000 skorks-envato (12925)] DEBUG: en-tête de navigation du navigateur: ""[22/09/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: pied de page statique du navigateur:" if (! NREUMQ.f) NREUMQ.f = function () \ nNREUMQ.push ( [\ "load \", new Date (). 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: La surveillance des utilisateurs réels utilise le protocole JSONP [09/22/13 17:23 : 42 +1000 skorks-envato (12925)] DEBUG: transmission de données de performances toutes les 60 secondes. [09/22/13 17:23:42 +1000 skorks-envato (12925)] DEBUG: exécution de la boucle de travail [09/22 / 13 17:23:50 +1000 skorks-envato (12925)] DEBUG: Tentative d'insérer l'en-tête RUM au début de la tête..

Par exemple, nous pouvons voir que:

  • Nous pouvons désactiver la surveillance, même si elle est activée dans le fichier de configuration, en définissant une variable d'environnement. NEWRELIC_ENABLE = false
  • Nous pouvons voir que New Relic insère un tas de middleware Rack
  • Nous utilisons Webrick comme serveur, qui est évidemment en mode développement, mais en production, il serait bon de confirmer que New Relic reconnaît le serveur que nous utilisons.
  • New Relic envoie des données à collector.newrelic.com:443
  • New Relic envoie des données toutes les 60 secondes
  • La surveillance des utilisateurs réels se fait via JSONP

Informations très utiles lorsque vous essayez de comprendre comment les choses se tiennent..

La plupart des autres paramètres de configuration sont assez explicites, par exemple:

browser_monitoring: auto_instrument: true capture_params: false

Le seul autre à être au courant est:

transaction_tracer: transaction_threshold: apdex_f

Le suivi de transaction capture des données détaillées sur les demandes qui prennent trop de temps. Le seuil de transaction est normalement un multiple (x4) de la valeur Apdex, mais il est souvent utile de séparer ces valeurs les unes des autres. Vous pouvez être satisfait d'un score Apdex d'une seconde, mais vous pouvez également capturer des données détaillées sur les demandes prenant 1,5 seconde ou plus (au lieu des quatre secondes ou plus qui se produiraient par défaut). Vous pouvez donc définir ce paramètre séparément:

transaction_tracer: transaction_threshold: 1.5

Le nouveau mode développeur Relic

L'une des valeurs de configuration que vous avez peut-être remarquées est la suivante:

developer_mode: true

Ceci ne devrait être activé que dans le développement (le cas échéant). En mode développement, l'agent New Relic stockera en mémoire les données de performance relatives aux 100 dernières demandes. Vous pouvez consulter ces données à tout moment en appuyant sur le bouton / newrelic point final de votre application en cours d'exécution:

Je ne l'utilise presque jamais, mais c'est là si vous en avez besoin.


Notification d'une nouvelle relique de déploiement

Lorsque vous travaillez sur les performances de votre application, il est toujours bon de savoir si un déploiement particulier a eu un effet positif ou négatif sur les performances. À cette fin, vous pouvez notifier New Relic chaque fois que vous effectuez un déploiement. Ainsi, si les performances se dégradent ou s'améliorent, vous pourrez voir quel déploiement a été fait. New Relic fournit des hooks Capistrano pour le faire, mais je préfère la méthode de ligne de commande:

% nouveaux déploiements -rel 'newrelic_rails1 (Développement)' -e 'développement' -u 'skorks' -r 'abc123' Déploiement enregistré dans 'newrelic_rails1 (Développement)' (2013-09-22 18:19:13 +1000)

L’important est de fournir correctement le nom de l’application tel que configuré dans newrelic.yml fichier.

Nous aurons de belles lignes sur les graphes pertinents de New Relic pour indiquer quand un déploiement a eu lieu.


Conclusion

Vous en savez maintenant beaucoup sur le fonctionnement de New Relic et sur la façon de commencer à l'utiliser pour surveiller une application Rails. Mais configurer les choses correctement n’est que la moitié de la bataille. Quels types de métriques New Relic va-t-elle capturer pour vous? Et comment pouvez-vous les utiliser pour améliorer les performances de votre application? Nous en examinerons certaines dans un article ultérieur. Pour l'instant, essayez de configurer New Relic pour votre application Rails (vous recevrez un t-shirt gratuit) et si vous avez des questions, n'oubliez pas de laisser un commentaire..