我已經安裝了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