newrelic_rpm,rails gem showing no route in development
Asked Answered
G

3

10

i need to check the performance of my rails application. i installed newrelic_rpm. In environment.rb , the following added:

config.gem "newrelic_rpm"

then, in browser i gave:

http://localhost:3000/newrelic

then, it shows the error message as below:

Routing Error No route matches "/newrelic" with {:method=>:get}

Can you please help me to solve this..

Thanks in advance...

Gallonage answered 25/3, 2011 at 11:56 Comment(0)
P
15

I'm guessing my issue is related to running thin (and other processes) through foreman in development. I added the following to get the routing and monitoring working:

config/environments/development.rb

require 'new_relic/rack/developer_mode'
config.middleware.use NewRelic::Rack::DeveloperMode
ENV['NEWRELIC_ENABLE'] = 'true'

Setting ENV['NEWRELIC_ENABLE'] = 'true' may monitor stuff when you would rather it didn't (rake tasks etc...)

Plumy answered 15/12, 2011 at 4:16 Comment(1)
Thanks for this. Monitoring wasn't working for me at first with the first 2 links in my config.ru, then I added the last line to my development environment and all is well nowJessjessa
B
6

Developer Mode has been removed from newrelic_rpm as of early 2017:

https://github.com/newrelic/rpm/commit/ec8e2ee17dd6f5801b9bf1793b8be048d9a9242c

If you still want to use it, you must install an older version of the rubygem, e.g.:

gem 'newrelic_rpm', '4.0.0.332'
Binni answered 24/8, 2017 at 23:57 Comment(0)
A
2

I had the same issue on Rails 3.0.5, after upgrading from newrelic_rpm 2.13.4 -> 2.14.0

I followed information from here:
http://support.newrelic.com/discussions/support/5547-cant-access-developer-mode

... I added the following at the top of the file my $RAILS_ROOT/config.ru file

require 'new_relic/rack_app'
use NewRelic::Rack::DeveloperMode

I am expecting this issue to be fixed in a later release of newpreic_rpm

I've also notice a change in the newrelic.yaml file format that should be in the config directory. You can download this from your newrelic account homepage (account > deploy > ruby) after creating an account (there is a basic free version).

Basically, it looks like:

common: &default_settings

  license_key: '[ Your unique license key ]'

  app_name: My Application

  # When "true", the agent collects performance data about your 
  # application and reports this data to the NewRelic RPM service at 
  # newrelic.com. This global switch is normally overridden for each 
  # environment below. (formerly called 'enabled')
  monitor_mode: true

  # Developer mode should be off in every environment but
  # development as it has very high overhead in memory.
  developer_mode: false

  # The newrelic agent generates its own log file to keep its logging
  # information separate from that of your application.  Specify its
  # log level here.
  log_level: info

  # The newrelic agent communicates with the RPM service via http by
  # default.  If you want to communicate via https to increase
  # security, then turn on SSL by setting this value to true.  Note,
  # this will result in increased CPU overhead to perform the
  # encryption involved in SSL communication, but this work is done
  # asynchronously to the threads that process your application code,
  # so it should not impact response times.
  ssl: false

  # EXPERIMENTAL: enable verification of the SSL certificate sent by
  # the server. This setting has no effect unless SSL is enabled
  # above. This may block your application. Only enable it if the data
  # you send us needs end-to-end verified certificates.
  #
  # This means we cannot cache the DNS lookup, so each request to the
  # RPM service will perform a lookup. It also means that we cannot
  # use a non-blocking lookup, so in a worst case, if you have DNS
  # problems, your app may block indefinitely.
  # verify_certificate: true

  # Set your application's Apdex threshold value with the 'apdex_t'
  # setting, in seconds. The apdex_t value determines the buckets used
  # to compute your overall Apdex score. 
  # Requests that take less than apdex_t seconds to process will be
  # classified as Satisfying transactions; more than apdex_t seconds
  # as Tolerating transactions; and more than four times the apdex_t
  # value as Frustrating transactions. 
  # For more about the Apdex standard, see
  # http://support.newrelic.com/faqs/general/apdex

  apdex_t: 0.5

  # Proxy settings for connecting to the RPM server.
  #
  # If a proxy is used, the host setting is required.  Other settings
  # are optional.  Default port is 8080.
  #
  # proxy_host: hostname
  # proxy_port: 8080
  # proxy_user:
  # proxy_pass:


  # Tells transaction tracer and error collector (when enabled)
  # whether or not to capture HTTP params.  When true, frameworks can
  # exclude HTTP parameters from being captured.
  # Rails: the RoR filter_parameter_logging excludes parameters
  # Java: create a config setting called "ignored_params" and set it to
  #     a comma separated list of HTTP parameter names.
  #     ex: ignored_params: credit_card, ssn, password 
  capture_params: false


  # Transaction tracer captures deep information about slow
  # transactions and sends this to the RPM service once a
  # minute. Included in the transaction is the exact call sequence of
  # the transactions including any SQL statements issued.
  transaction_tracer:

    # Transaction tracer is enabled by default. Set this to false to
    # turn it off. This feature is only available at the Silver and
    # above product levels.
    enabled: true

    # Threshold in seconds for when to collect a transaction
    # trace. When the response time of a controller action exceeds
    # this threshold, a transaction trace will be recorded and sent to
    # RPM. Valid values are any float value, or (default) "apdex_f",
    # which will use the threshold for an dissatisfying Apdex
    # controller action - four times the Apdex T value.
    transaction_threshold: apdex_f

    # When transaction tracer is on, SQL statements can optionally be
    # recorded. The recorder has three modes, "off" which sends no
    # SQL, "raw" which sends the SQL statement in its original form,
    # and "obfuscated", which strips out numeric and string literals
    record_sql: obfuscated

    # Threshold in seconds for when to collect stack trace for a SQL
    # call. In other words, when SQL statements exceed this threshold,
    # then capture and send to RPM the current stack trace. This is
    # helpful for pinpointing where long SQL calls originate from
    stack_trace_threshold: 0.500

    # Determines whether the agent will capture query plans for slow
    # SQL queries.  Only supported in mysql and postgres.  Should be
    # set to false when using other adapters.
    # explain_enabled: true

    # Threshold for query execution time below which query plans will not 
    # not be captured.  Relevant only when `explain_enabled` is true.
    # explain_threshold: 0.5

  # Error collector captures information about uncaught exceptions and
  # sends them to RPM for viewing
  error_collector:

    # Error collector is enabled by default. Set this to false to turn
    # it off. This feature is only available at the Silver and above
    # product levels
    enabled: true

    # Rails Only - tells error collector whether or not to capture a 
    # source snippet around the place of the error when errors are View 
    # related.
    capture_source: true    

    # To stop specific errors from reporting to RPM, set this property
    # to comma separated values.  Default is to ignore routing errors
    # which are how 404's get triggered.
    #
    ignore_errors: ActionController::RoutingError

  # (Advanced) Uncomment this to ensure the cpu and memory samplers
  # won't run.  Useful when you are using the agent to monitor an
  # external resource
  # disable_samplers: true

  # If you aren't interested in visibility in these areas, you can
  # disable the instrumentation to reduce overhead.
  #
  # disable_view_instrumentation: true
  # disable_activerecord_instrumentation: true
  # disable_memcache_instrumentation: true
  # disable_dj: true

  # Certain types of instrumentation such as GC stats will not work if 
  # you are running multi-threaded.  Please let us know.
  # multi_threaded = false

# Application Environments
# ------------------------------------------
# Environment specific settings are in this section.
# For Rails applications, RAILS_ENV is used to determine the environment
# For Java applications, pass -Dnewrelic.environment <environment> to set
# the environment

# NOTE if your application has other named environments, you should
# provide newrelic configuration settings for these environments here.

development:
  <<: *default_settings
  # Turn off communication to RPM 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: false

  # 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

  # Enable textmate links
  # textmate: true

test:
  <<: *default_settings
  # It almost never makes sense to turn on the agent when running
  # unit, functional or integration tests or the like.
  monitor_mode: false

# Turn on the agent in production for 24x7 monitoring.  NewRelic
# testing shows an average performance impact of < 5 ms per
# transaction, you you can leave this on all the time without
# incurring any user-visible performance degradation.
production:
  <<: *default_settings
  monitor_mode: true

# Many applications have a staging environment which behaves
# identically to production.  Support for that environment is provided
# here.  By default, the staging environment has the agent turned on.
staging:
  <<: *default_settings
  monitor_mode: true
  app_name: My Application (Staging)

Arris answered 31/3, 2011 at 1:11 Comment(2)
fixed the issue for me, though the dev mode still never sees any transactions. Does this count for putting it in the "middleware stack"?Geographer
On rails 3.1.3 you have to add the following lines to your config.ru (section "Developer Mode in Rack Applications" on newrelic.github.com/rpm): require 'new_relic/rack/developer_mode' use NewRelic::Rack::DeveloperModeAlexandria

© 2022 - 2024 — McMap. All rights reserved.