Newrelic via Heroku不';虽然preload_app=true,但无法从运行在Unicorn中的Ruby实例接收数据
我正在heroku上运行一个带有grape(无rails)的ruby应用程序,并且正在使用new relic插件。该应用程序由unicorn提供。如上所述,我将此选项集成到配置中。以下是我的设置:Newrelic via Heroku不';虽然preload_app=true,但无法从运行在Unicorn中的Ruby实例接收数据,ruby,heroku,unicorn,newrelic,grape,Ruby,Heroku,Unicorn,Newrelic,Grape,我正在heroku上运行一个带有grape(无rails)的ruby应用程序,并且正在使用new relic插件。该应用程序由unicorn提供。如上所述,我将此选项集成到配置中。以下是我的设置: unicorn.rb: worker_processes 3 preload_app true timeout 30 config.ru: if ENV['RACK_ENV'] == 'production' require 'newrelic_rpm' end heroku上的环境设置为生产
unicorn.rb:
worker_processes 3
preload_app true
timeout 30
config.ru:
if ENV['RACK_ENV'] == 'production'
require 'newrelic_rpm'
end
heroku上的环境设置为生产环境,因此应正确包含该文件。此外,heroku日志文件表明new relic代理已成功启动:
2013-04-08T10:47:47+00:00 heroku[deployhooks]: Notified New Relic about the deploy
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Reading configuration from config/newrelic.yml
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Environment: production
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Dispatcher: unicorn
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Application: mobile-v1-ruby
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Connecting workers after forking.
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Installing Net instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Installing Unicorn instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Detected Unicorn, please see additional documentation: https://newrelic.com/docs/troubleshooting/im-using-unicorn-and-i-dont-see-any-data
2013-04-08T10:47:49+00:00 app[web.1]: ** [NewRelic][04/08/13 10:47:49 +0000 eea5ecfd-86be-4b88-8b2a-6b7564aa9943 (2)] INFO : Finished instrumentation
2013-04-08T10:47:49+00:00 app[web.1]: Hey there - I started in environment: production
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.798057 #2] INFO -- : listening on addr=0.0.0.0:58224 fd=9
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.798299 #2] INFO -- : worker=0 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.809140 #2] INFO -- : worker=1 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.812632 #5] INFO -- : worker=0 spawned pid=5
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.816144 #2] INFO -- : worker=2 spawning...
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.819594 #5] INFO -- : worker=0 ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.821252 #9] INFO -- : worker=1 spawned pid=9
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.823869 #2] INFO -- : master process ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.826441 #9] INFO -- : worker=1 ready
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.831072 #13] INFO -- : worker=2 spawned pid=13
2013-04-08T10:47:49+00:00 app[web.1]: I, [2013-04-08T10:47:49.836053 #13] INFO -- : worker=2 ready
2013-04-08T10:47:50+00:00 heroku[web.1]: State changed from starting to up
对我来说,一切似乎都很好。但在new relic上,我只收到部署通知。有人有主意吗
非常感谢。New Relic(目前)没有葡萄自动检测功能,所以您可能不得不这样做。它应该只是一个包含在Grape::API类中的问题:
class My::API < Grape::API
include NewRelic::Agent::Instrumentation::Rack
# ...
end
class My::API
对于更深入的细节,这是一个很好的开始。我现在能够解决它。谢谢你们的帮助,伙计们!它使用开发者模式,grape请求显示,以及数据库请求通过mongoid发送到mongodb 猜猜看:最糟糕的问题之一是我的条件加载中的字符串比较:
if ENV['RACK_ENV'] == "production"
=的quals似乎不起作用。我把它改为.eql?()方法,再加上一些用newrelic仪器重新加载的东西,现在一切都神奇地工作了:D真棒
if ENV['RACK_ENV'].eql?("production")
以下是我的工作设置:
Gemfile
gem "newrelic-grape"
gem "newrelic_moped"
gem "newrelic_rpm"
config.ru
run MyApp.new
if ENV["NEW_RELIC_ENABLE"].eql?("true")
if ENV["RACK_ENV"].eql?("development")
puts "Loading NewRelic in developer mode ..."
require "new_relic/rack/developer_mode"
use NewRelic::Rack::DeveloperMode
end
if !ENV["RACK_ENV"].eql?("test")
NewRelic::Agent.manual_start
DependencyDetection.detect!
end
end
如果正确定义了RACK_ENV,则在开发者模式下加载new relic。否则,它会定期启动,除非处于测试模式
这里最大的问题是缺少命令NewRelic::Agent.manual_start和DependencyDetection.detect强>
如果启用了new relic,api.rb类现在包括机架检测
api.rb
if !ENV['RACK_ENV'].eql?("test") && ENV['NEW_RELIC_ENABLE'].eql?("true")
include NewRelic::Agent::Instrumentation::Rack
end
我还发现有一个gem,它的自述文件引用了一个,看起来它正好描述了你想要的东西。非常感谢。我试试看,然后再报告!