Rails, ActiveSupport:: Уведомления - возвращают метрики в заголовках ответов

Я работаю над отслеживанием основных метрических данных для запросов, таких как, сколько времени было потрачено в БД, рендеринг JSON и т. Д.... для инструментов разработчика / анализа, чтобы мы могли найти и исправить медленный / плохой код.

У меня простой

ActiveSupport::Notifications.subscribe /process_action.action_controller/ do |*args|
  event = ActiveSupport::Notifications::Event.new(*args)
  Rails.logger.info event
end

где я могу отправить метрики в файл журнала (я думаю, именно так Rails 3+ уже генерирует файлы журналов).

Однако я также хотел бы вернуть некоторые метрики обратно в заголовок ответа, чтобы каждый запрос мог видеть, сколько времени потребовалось в БД по сравнению с генерацией представлений и т. Д.

Что касается "почему", я хочу сделать это потому, что безопасность моего приложения такова, что разработчики не имеют доступа к самим метрикам, поэтому использование заголовков ответов - это дешевый способ позволить разработчикам начать просмотр некоторых основных метрик, чтобы помочь им исправить медленный код. Я понимаю, что некоторые скажут мне, что это плохая практика, и я не согласен, но мне нужно сделать это сейчас.

Конкретная проблема заключается в том, что когда этот подписчик закончил, ответ, кажется, закончен, и я не могу добавить метрики в заголовки.

Я думаю, что after_filter в контроллере можно использовать для этого, но я борюсь с тем, как получить доступ к ActiveSupport::Notifications Событие, на которое я подписался... насколько я знаю, нет глобального / центрального местоположения, откуда я мог бы получить эти события.

Я прочитал руководства по API и Rails, и они мало помогли в этом вопросе.

Кто-нибудь знает, как получить доступ к подписанным событиям до отправки ответа клиенту, чтобы я мог прикрепить метрики к заголовкам?

0 ответов

Другие вопросы по тегам