使用oink gem和heroku

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下载日志

  • 似乎错过了管道字符串上的转义,例如'Oink\| Instantiation\| Memory'.但是,仍然没有为我处理oink内容,不确定是否正在切割正确的东西. (4认同)
  • 需要:cat filename.log | 切-c 46- | grep'Oink\| Memory\| Instantiation' (2认同)

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)

拆下前部.希望这可以帮助!


jfr*_*prr 5

如果您使用从Papertrail下载的日志存档,则可以使用此单行格式化输出格式:

cat log/production.log | cut -f 10- | grep 'rails\[' > log/production-oink.log
Run Code Online (Sandbox Code Playgroud)


Joh*_*non -3

使用 New Relic - 正如您在其他问题中所回答的那样。