Troubleshooting
No Data
APM
Not seeing any data?
Using Heroku? View our Heroku-specific troubleshooting instructions.
1. Is there a log/scout_apm.log
file?
Yes:
Examine the log file for error messages:
tail -n1000 log/scout_apm.log | grep "Starting monitoring" -A20
See something noteworthy? Proceed to to the last step (#step 7). Otherwise, continue to step 2.
No:
The gem was never initialized by the application.
Ensure that the scout_apm
gem is not restricted to a specific group
in your Gemfile
. For example, the configuration below would prevent scout_apm
from loading in a staging
environment:
group :production do
gem 'unicorn'
gem 'scout_apm'
end
Jump to the last step (#step 7) if scout_apm
is correctly configured in your Gemfile
.
2. Set log_level: debug
in your scout_apm.yml file, or SCOUT_LOG_LEVEL=debug
if using environment variable, and restart your application.
Examine the log file for error messages:
tail -n1000 log/scout_apm.log
3. Was the **scout_apm**
gem deployed with your application?
bundle list scout_apm
4. Did you download the config file, placing it in **config/scout_apm.yml**
?
5. Did you restart the app and let it run for a while?
6. Are you sure the application has processed any requests?
tail -n1000 log/production.log | grep "Processing"
7. Using Unicorn?
Add the preload_app true
directive to your Unicorn config file. Read more in the Unicorn docs.
8. Oops! Still not seeing any data? Check out the GitHub issues and send us an email with the following:
- Set
log_level: debug
in scout_apm.yml (SCOUT_LOG_LEVEL=debug
if using environment variables) - The last 1000 lines of your
log/scout_apm.log
file, if the file exists:
tail -n1000 log/scout_apm.log
. - Your application’s gems
bundle list
. - Rails version
- Application Server (examples: Passenger, Thin, etc.)
- Web Server (examples: Apache, Nginx, etc.)
We typically respond within a couple of hours during the business day.
Errors
One thing to note is that by default we don’t collect errors for ActiveRecord::RecordNotFound
as well as ActionController::RoutingError
.
To collect these error types you will need to set errors_ignored_exceptions
to an empty array:
SCOUT_ERRORS_IGNORED_EXCEPTIONS=[]
Significant time spent in “Controller” or “Job”
When viewing a transaction trace, you may see time spent in the “controller” or “job” layers. This is time that falls outside of Scout’s default instrumentation.
There are two options for gathering additional instrumentation:
- Custom Instrumentation - use our API to instrument pieces of code that are potential bottlenecks.
- Auto Instruments - Auto Instruments breaks down time spent within the controller layer. Note that Auto Instruments does not instrument background jobs.
Missing memory metrics
Memory allocation metrics require the following:
- Ruby version 2.1+
scout_apm
version 2.0+
If the above requirements are not met, Scout continues to function but does not report allocation-related metrics.
StackLevelTooDeep error
StackLevelTooDeep Error:
If you experience a StackLevelTooDeep error, make sure the scout_apm
gem is listed in the Gemfile above the conflicting gem.
Fixes the StackLevelTooDeep Error:
gem 'scout_apm'
gem 'newrelic_rpm'
Causes StackLevelTooDeep Error:
gem 'newrelic_rpm'
gem 'scout_apm'
SimpleCov Conflict
When auto instruments is enabled in the test environment (most likely being set in the defaults
section in your scout_apm.yml file), conflicts may arise with SimpleCov. To fix this issue, disable auto_instruments in the test environment in either your scout_apm.yml file or via environment variables.