2012-01-24 139 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 
相關問題