我已经安装了oink gem来监视我的rails应用程序的内存使用情况。 为了看到哼报告中,我需要运行在终端命令:当我在我的机器上运行它,它显示了开发环境报告与heroku一起使用oink gem
oink --threshold=75 /log/*
。 事情是,我更感兴趣的是看到我的生产环境报告。 我的应用程序托管在heroku上,有没有一种方法可以运行orack的heroku生产环境的终端命令?
感谢
我已经安装了oink gem来监视我的rails应用程序的内存使用情况。 为了看到哼报告中,我需要运行在终端命令:当我在我的机器上运行它,它显示了开发环境报告与heroku一起使用oink gem
oink --threshold=75 /log/*
。 事情是,我更感兴趣的是看到我的生产环境报告。 我的应用程序托管在heroku上,有没有一种方法可以运行orack的heroku生产环境的终端命令?
感谢
为了运行oink
命令,您需要设置您的heroku日志耗尽。例如,我将我的heroku日志排空到本地linux rsyslog服务器上。
这是真的,但是即使您导出您的日志,我还没有找到一种方法让他们成为有效的“符合hodel 3000的记录器”格式。这是Oink工作的要求。有任何想法吗? – jalagrange
我得到了哼在Heroku工作这样做:
你有你的LOG_LEVEL改变信息的哼日志显示:
heroku config:add LOG_LEVEL=info
添加哼中间件自定义到production.rb标准输出记录
config.middleware.use(Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT))
当你想你的日志,尾巴把它解析到本地文件,然后删除Heroku的前缀和过滤,仅在哼线。
heroku logs --tail > log/production.log
cat log/production.log | cut -c 46- | grep 'Oink\|Memory\|Instantiation' > log/production-oink.log
然后在您的新的本地日志运行哼
oink --threshold=0 log/production-oink.log
你也可以从logentries下载日志或回形针
似乎缺少像'Oink \ | Instantiation \ | Memory'这样的管道字符上的转义。然而,仍然没有为我处理oink内容,不知道是否切割正确的东西。 – brunoghisi
更改为剪切-c 46-为我工作。 – johnnymire
需要:cat filename.log |切-c 46- | grep'Oink \ | Memory \ | Instantiation' –
相反的切换记录器Hodel3000Compliant你也可以稍微修改您的Heroku的日志以vim为例,通过使用以下命令:
:%s/2013-01-25T/Jan 25/
:%s/+00:00//
:%s/app\[web.1\]/rails\[1\]/
:%s/app\[web.2\]/rails\[2\]/
级你原来的Heroku的日志像那些:
2013-01-25T15:05:58+00:00 app[web.1]: Oink Action: tools#some_tool
2013-01-25T15:05:58+00:00 app[web.1]: Memory usage: 303444 | PID: 2
2013-01-25T15:05:58+00:00 app[web.1]: Oink Log Entry Complete
成为:
Jan 25 15:05:58 rails[1]: Oink Action: tools#some_tool
Jan 25 15:05:58 rails[1]: Memory usage: 303444 | PID: 2
Jan 25 15:05:58 rails[1]: Oink Log Entry Complete
和哼喜欢他们;)当然首先缩小,其中可能出现的问题在日志中发生利用的NewRelic的时间。
UPDATE:
另一组VIM的命令来修复Papertrail日志哼:
:%s/\v^\d+\t//
:%s/2013-01-27T/Jan 27/
并进入第一线,用CTRL-V,以纪念那剩下几个其他列,然后键入G以将这些列选择到文件末尾。使用'左'/'右'箭头在选择中进行调整,然后按'c'将其删除。
不幸的是,我不能评论,但万一有其他人有这个问题,自Gabe Coyne(超级有用)回答上面有几件事情似乎已经改变。我不需要改变我的Heroku LOG_LEVEL,所以开始生成日志,你可以只使用一个初始化config/initializers/oink.rb
像这样:
YourApp::Application.middleware.use(Oink::Middleware, :logger => Hodel3000CompliantLogger.new(STDOUT))
或者把该行production.rb
如果你只是想在生产哼日志。然后,你需要日志进入本地日志文件,在前面的回答中也提到:
heroku logs n500 --app app_name > log/production.log
或者你可以从Papertrail或你最喜欢的日志归档抓住他们。本地日志需要更新到哼期望的格式,但我发现grep 'Oink|Memory|Instantiation'
作为字符串似乎已经从日志中移除没有工作,所以我用这个代替:
cat log/production.log | cut -c 46- | grep 'rails\[' > log/production-oink.log
然后你可以使用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
看起来像这样:
Jul 19 18:47:09 24ab5d5s-g46c-2d44-dss2-233sdfa99852wd rails[5]: Oink Action: welcome#about
随着前部分删除。希望这可以帮助!
得到它与hiattp的答案工作,但需要添加 - 文本grep
。
cat log/production.log | cut -c 46- | grep 'rails\[' > log/production-oink.log
如果您正在使用从Papertrail下载的日志归档,您可以使用此一班轮格式化你的输出:
cat log/production.log | cut -f 10- | grep 'rails\[' > log/production-oink.log
你摸不着头脑?也卡住.. – jalagrange
还值得注意的是,多个dynos没有保证日志顺序,似乎搞砸了oink解析器。在使用2个dyno heroku应用程序oink的约100个请求中,仅解析7个请求。 – agmin