Ode*_*rth 16 memory ruby-on-rails heroku
我安装了oink gem来监控rails应用程序的内存使用情况.为了查看oink报告,我需要在终端中运行此命令:
oink --threshold=75 /log/*
Run Code Online (Sandbox Code Playgroud)
当我在我的机器上运行它时,它会显示开发环境的报告.问题是我更感兴趣的是看到我的生产环境的报告.我的应用程序托管在heroku上,有没有办法为heroku的生产环境运行oink的终端命令?
谢谢
小智 31
我正在研究heroku这样做:
您必须将log_level更改为要显示的oink日志的信息:
heroku config:add LOG_LEVEL=info
Run Code Online (Sandbox Code Playgroud)
使用自定义stdout记录器将oink中间件添加到production.rb
config.middleware.use( Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT))
Run Code Online (Sandbox Code Playgroud)
如果要解析日志,请将它们拖到本地文件中,然后删除heroku的前缀并仅过滤到oink行.
heroku logs --tail > log/production.log
cat log/production.log | cut -c 46- | grep 'Oink\|Memory\|Instantiation' > log/production-oink.log
Run Code Online (Sandbox Code Playgroud)
然后在新的本地日志上运行oink
oink --threshold=0 log/production-oink.log
Run Code Online (Sandbox Code Playgroud)
您还可以从logentries或paperclip下载日志
hia*_*ttp 16
不幸的是我还没有发表评论但是如果其他人有这个问题,那么自Gabe Coyne(超级有用)以上的回答后,似乎有些事情发生了变化.我不需要更改我的heroku log_level,所以要开始生成日志,你可以使用这样的初始化器config/initializers/oink.rb
:
YourApp::Application.middleware.use( Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT))
Run Code Online (Sandbox Code Playgroud)
production.rb
如果您只想生产oink日志,请将该行放入.然后,您需要将日志放入本地日志文件中,也在前面的答案中提到:
heroku logs n500 --app app_name > log/production.log
Run Code Online (Sandbox Code Playgroud)
或者您可以从Papertrail或您最喜欢的日志存档中获取它们.本地日志需要更新为oink期望的格式,但我发现这grep 'Oink|Memory|Instantiation'
不起作用,因为该字符串似乎已从日志中删除,所以我使用了这个:
cat log/production.log | cut -c 46- | grep 'rails\[' > log/production-oink.log
Run Code Online (Sandbox Code Playgroud)
然后你可以使用oink --threshold=0 log/production-oink.log
它,它会工作.
吸引我的唯一另一件事就是要切割的前面字符的数量.虽然cut -c 39-
似乎以前工作过,但我不得不使用cut -c 46-
.显然这会有所不同,所以如果它不明显,你只是试图让原始日志中的行看起来像这样:
2013-07-19T18:47:09.494475+00:00 app[web.1]: Jul 19 18:47:09 24ab5d5s-g46c-2d44-dss2-233sdfa99852wd rails[5]: Oink Action: welcome#about
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
Jul 19 18:47:09 24ab5d5s-g46c-2d44-dss2-233sdfa99852wd rails[5]: Oink Action: welcome#about
Run Code Online (Sandbox Code Playgroud)
拆下前部.希望这可以帮助!
如果您使用从Papertrail下载的日志存档,则可以使用此单行格式化输出格式:
cat log/production.log | cut -f 10- | grep 'rails\[' > log/production-oink.log
Run Code Online (Sandbox Code Playgroud)