2012-05-30 5 views
3

Что было бы лучшим способом для сбора показателей по всем HTTP-запросам, сделанным в фляжном приложении.Как собрать показатели производительности в приложении для фляшек?

Вещи, которые я хотел бы измерить являются:

  • Задержка - время для каждого запроса.
  • Rate - Количество запросов в минуту и ​​т.д.
  • Нет неудачи - Если произошел сбой, сколько и т.д.

Также я хочу запросы группы к переменному пути, как один. Например, все запросы к маршруту '/ resource /' должны измеряться для метрики с именем RESOURCE, а не по отдельности для каждого ресурса.

Я планирую сделать это в настоящее время, написав декоратор. Недостатком является то, что мне нужно добавить декоратор для каждого метода. Существуют ли способы, с помощью которых Flask может предоставить мне крючки для их автоматического измерения.

+2

Это не то, что вы должны делать на уровне приложения, но на уровне веб-сервера. И нет, встроенный веб-сервер не то, что вы должны использовать в производстве. – ThiefMaster

+0

Я хочу сделать это на уровне рамки (колба/wsgi). Я не использую встроенный веб-сервер. – sheki

+0

@ThiefMaster собирает метрики в приложении и экспортирует их в Prometheus - это допустимое решение. WSGI-сервер или прокси не имеют всей информации, которая имеет значение, вы не можете сегментировать пользователей, собирать бизнес-показатели, разделить скорость по представлениям (только по разбору URL-адресов) и т. д. Существует много преимуществ для этого подхода. – analytik

ответ

5

Ознакомьтесь с документацией для декораторов flask.Flask.before_request и flask.Flask.teardown_request. Вам нужно что-то простое и быстро, чтобы отправить ваши показатели - выйдите graphite и scales для примера подходящего бэкэнд.

После того, как у вас есть сводный конец записи в журнале, это простой вопрос регистрации двух функций, выполняемых до и после каждого запроса.

1

Отъезд New-Relic. Он поддерживает колбу и даст вам необходимые вам меры (и многое другое).

Смежные вопросы