2012-01-24 42 views
16

我已经安装了oink gem来监视我的rails应用程序的内存使用情况。 为了看到哼报告中,我需要运行在终端命令:当我在我的机器上运行它,它显示了开发环境报告与heroku一起使用oink gem

oink --threshold=75 /log/* 

。 事情是,我更感兴趣的是看到我的生产环境报告。 我的应用程序托管在heroku上,有没有一种方法可以运行orack的heroku生产环境的终端命令?

感谢

+0

你摸不着头脑?也卡住.. – jalagrange

+1

还值得注意的是,多个dynos没有保证日志顺序,似乎搞砸了oink解析器。在使用2个dyno heroku应用程序oink的约100个请求中,仅解析7个请求。 – agmin

回答

-3

使用New Relic的 - 作为回答您的其他问题。

+0

这不回答问题。请考虑使用这些回答的评论。 – Michael

2

为了运行oink命令,您需要设置您的heroku日志耗尽。例如,我将我的heroku日志排空到本地linux rsyslog服务器上。

+0

这是真的,但是即使您导出您的日志,我还没有找到一种方法让他们成为有效的“符合hodel 3000的记录器”格式。这是Oink工作的要求。有任何想法吗? – jalagrange

31

我得到了哼在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下载日志或回形针

+4

似乎缺少像'Oink \ | Instantiation \ | Memory'这样的管道字符上的转义。然而,仍然没有为我处理oink内容,不知道是否切割正确的东西。 – brunoghisi

+1

更改为剪切-c 46-为我工作。 – johnnymire

+2

需要:cat filename.log |切-c 46- | grep'Oink \ | Memory \ | Instantiation' –

2

相反的切换记录器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'将其删除。

16

不幸的是,我不能评论,但万一有其他人有这个问题,自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 

随着前部分删除。希望这可以帮助!

1

得到它与hiattp的答案工作,但需要添加 - 文本grep

cat log/production.log | cut -c 46- | grep 'rails\[' > log/production-oink.log 
5

如果您正在使用从Papertrail下载的日志归档,您可以使用此一班轮格式化你的输出:

cat log/production.log | cut -f 10- | grep 'rails\[' > log/production-oink.log 
相关问题