4 votes

Comment envoyer manuellement des exceptions à NewRelic (Ruby) ?

Comment puis-je envoyer des exceptions sauvées à NewRelic ?

J'ai un fichier de test rpm.rb :

require 'newrelic_rpm'
NewRelic::Agent.manual_start
begin
  "2" + 3
rescue TypeError => e
  puts "whoa !"
  NewRelic::Agent.agent.error_collector.notice_error( e )
end

Je commence par :

NEWRELIC_ENABLE=true ruby rpm.rb

Le contenu du fichier log/newrelic_agent.log :

[05/14/13 ... (87691)] INFO : Reading configuration from config/newrelic.yml
[05/14/13 ... (87691)] INFO : Environment: development
[05/14/13 ... (87691)] WARN : No dispatcher detected.
[05/14/13 ... (87691)] INFO : Application: xxx (Development)
[05/14/13 ... (87691)] INFO : Installing Net instrumentation
[05/14/13 ... (87691)] INFO : Audit log enabled at '.../log/newrelic_audit.log'
[05/14/13 ... (87691)] INFO : Finished instrumentation
[05/14/13 ... (87691)] INFO : Reading configuration from config/newrelic.yml
[05/14/13 ... (87691)] INFO : Starting Agent shutdown

Le contenu de log/newrelic_audit.log

[2013-05-14 ... (87691)] : REQUEST: collector.newrelic.com:443/agent_listener/12/74901a11b7ff1a69aba11d1797830c8c1af41d56/get_redirect_host?marshal_format=json
[2013-05-14 ... (87691)] : REQUEST BODY: []

Rien n'est rapporté à NewRelic, pourquoi ?

J'ai déjà vu ça : Y a-t-il un moyen de pousser l'erreur NewRelic manuellement ?

0voto

Zhomart Points 533

Vous devez définir monitor_mode: true dans config/newrelic.yml

development:
  <<: *default_settings
  # Turn off communication to New Relic service in development mode (also
  # 'enabled').
  # NOTE: for initial evaluation purposes, you may want to temporarily
  # turn the agent on in development mode.
  monitor_mode: true

  # Rails Only - when running in Developer Mode, the New Relic Agent will
  # present performance information on the last 100 transactions you have
  # executed since starting the mongrel.
  # NOTE: There is substantial overhead when running in developer mode.
  # Do not use for production or load testing.
  developer_mode: true

0voto

Augy Points 62

Je viens de passer une heure à essayer de tester cela depuis la console de production. Voici ce qui a finalement permis de le faire fonctionner :

  1. Assurez-vous que monitor_mode: true est défini dans newrelic.yml pour l'environnement approprié.

  2. Assurez-vous de lancer la console rails avec NEW_RELIC_AGENT_ENABLED=true NEWRELIC_ENABLE=true rails c

  3. Assurez-vous d'utiliser l'appel de la méthode public-api NewRelic::Agent.notice_error(exception)

Naturellement, .notice_error fonctionnera comme prévu lorsqu'il sera appelé à partir d'un processus non-console comme le serveur web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X