Зарегистрируйте запросы API через кэш Лака

У меня есть Лак перед стандартным REST API. Запросы должны аутентифицироваться с заголовком X-маркера-доступа. Я теперь должен отслеживать запросы на каждый ресурс против маркера доступа, который использовался. Например, маркер abcd1234 запросил/items/xyz 10 раз.

Первоначально я просто собирался считать данные в приложении бэкенда (PHP), но затем реализованный Лак, конечно, прервет любые запросы после первого.

Каков был бы лучший способ отследить запросы по маркерам?

В данный момент я смотрю или читаю varnishlog/varnishncsa в отдельном потоке, или добавляю что-то как Redis VMOD и имею его, увеличивают счетчик на основе token:url.

Кто-либо сделал что-либо еще как это?

1
задан 21 March 2015 в 04:12
2 ответа

На мой взгляд, здесь есть три разумных варианта:

  1. Использование Пользовательская статистика Varnish . VCS является частью Varnish Plus и был специально разработан для решения таких задач, как тот, который вы описываете. Если вы используете Varnish Plus, это то, что вам нужно.

  2. Использование varnishog / varnishncsa вместе с некоторыми счетчиками сброса скриптов в некоторую внешнюю базу данных.

  3. Использование Redis или Memcached VMOD. По сравнению с вариантом (2) это добавит незначительные накладные расходы на каждый запрос, но вы сэкономите некоторые операции ввода-вывода и сможете избежать реализации / поддержки сценария. Я думаю, что это лучшая альтернатива, если нельзя использовать VCS.

1
ответ дан 3 December 2019 в 18:42

Я бы посоветовал вам разрешить varnish делать то, что он делает лучше всего, кэшировать, и позволить отслеживанию делать varnishog / ncsa

Добавляя Redis Vmod, вы усложняете свой vcl и если по каким-то причинам ваш Redis выйдет из строя, вы потеряете отслеживание.

Используя varnishlog / ncsa, вы можете построить свою логику отслеживания вне varnish, обрабатывать журнал в реальном времени, передавая процесс varnishlog, или сохранять журнал для последнего использовать.

2
ответ дан 3 December 2019 в 18:42

Теги

Похожие вопросы