У меня есть Лак перед стандартным REST API. Запросы должны аутентифицироваться с заголовком X-маркера-доступа. Я теперь должен отслеживать запросы на каждый ресурс против маркера доступа, который использовался. Например, маркер abcd1234 запросил/items/xyz 10 раз.
Первоначально я просто собирался считать данные в приложении бэкенда (PHP), но затем реализованный Лак, конечно, прервет любые запросы после первого.
Каков был бы лучший способ отследить запросы по маркерам?
В данный момент я смотрю или читаю varnishlog/varnishncsa в отдельном потоке, или добавляю что-то как Redis VMOD и имею его, увеличивают счетчик на основе token:url.
Кто-либо сделал что-либо еще как это?
На мой взгляд, здесь есть три разумных варианта:
Использование Пользовательская статистика Varnish . VCS является частью Varnish Plus и был специально разработан для решения таких задач, как тот, который вы описываете. Если вы используете Varnish Plus, это то, что вам нужно.
Использование varnishog / varnishncsa вместе с некоторыми счетчиками сброса скриптов в некоторую внешнюю базу данных.
Использование Redis или Memcached VMOD. По сравнению с вариантом (2) это добавит незначительные накладные расходы на каждый запрос, но вы сэкономите некоторые операции ввода-вывода и сможете избежать реализации / поддержки сценария. Я думаю, что это лучшая альтернатива, если нельзя использовать VCS.
Я бы посоветовал вам разрешить varnish делать то, что он делает лучше всего, кэшировать, и позволить отслеживанию делать varnishog / ncsa
Добавляя Redis Vmod, вы усложняете свой vcl и если по каким-то причинам ваш Redis выйдет из строя, вы потеряете отслеживание.
Используя varnishlog / ncsa, вы можете построить свою логику отслеживания вне varnish, обрабатывать журнал в реальном времени, передавая процесс varnishlog, или сохранять журнал для последнего использовать.