2012-01-24 2 views
16

Я установил драгоценный камень для мониторинга использования памяти моего приложения для рельсов. Для того чтобы увидеть хрю отчет мне нужно запустить эту команду в терминале:Использование драгоценного камня oink с heroku

oink --threshold=75 /log/* 

Когда я запускаю его на моей машине он показывает отчет для среды разработки. Дело в том, что меня больше интересует просмотр отчета для моей производственной среды. Мое приложение размещено на геройку, есть ли способ, которым я мог бы запускать команды терминала oink для производственной среды герою?

Благодаря

+0

ли вы это цифра? также застрял .. – jalagrange

+1

Стоит также отметить, что с несколькими динамиками нет гарантированного порядка ведения журнала, который, похоже, испортит синтаксический анализатор. Из ~ 100 запросов с 2-мя динозаврами gekku appink обрабатывает только 7 запросов. – agmin

ответ

-3

использовать новый Relic - а ответы в вашем другом вопросе.

+0

Это не отвечает на вопрос. Пожалуйста, подумайте об использовании комментариев для таких ответов. – Michael

2

Чтобы запустить команду oink, вам необходимо установить слив для журналов heroku. Например, у меня есть журналы моего героя, стекающие на локальный сервер rsyslog linux.

+0

Это правда, однако, даже если вы экспортируете свои журналы, я не нашел способ, чтобы они были в действительном формате «hodel 3000 compliant logger». Что необходимо для работы Oink. Есть идеи? – jalagrange

31

Я получил хрю работает на Heroku делает это:

Вы должны изменить LOG_LEVEL к информации Для Хрю журналы, чтобы показать:

heroku config:add LOG_LEVEL=info 

Добавить хрю связующее ПО production.rb с обычаем STDOUT регистратор

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 или PAPERCLIP

+4

Кажется, что не хватало выхода на трубке, как «Oink \ | Instantiation \ | Memory». Тем не менее, я все еще не обрабатываю контент oink, но не уверен, что разрезал нужные вещи. – brunoghisi

+1

Смена на режущее -c 46- работала для меня. – johnnymire

+2

Нужно: cat filename.log | cut -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 
Смежные вопросы