#varnish
#varnish
Вопрос:
Можно ли использовать Varnish для следующей задачи?
Представьте URL-адрес (например, /vote?poll-id=1amp;answer-id= 2), который запрашивается по прямым ссылкам, где мы показываем результаты опроса для выбранного идентификатора опроса.
Я хотел бы сохранить / извлечь / обработать все запрошенные URL-адреса (почти в режиме реального времени), чтобы сгенерировать эти результаты опроса.
Возможно ли получить эти URL-адреса в виде какого-то потока для дальнейшей обработки?
Причина, по которой используется Varnish, заключается в том, что я хотел бы уменьшить нагрузку на более медленную серверную службу, работающую в восходящем потоке. И потому, что некоторая задержка в отображении фактических результатов в порядке.
Ответ №1:
Varnish имеет встроенные журналы общей памяти. С ними можно ознакомиться с помощью различных инструментов.
Основными из них, которые могут быть полезны для вас, являются:
- varnishlog: подробное ведение журнала по каждому аспекту запроса, ответа и внутренней обработки
- varnishncsa: средство ведения журнала в стиле Apache / NCSA
Вы также можете использовать язык программирования VCL и регистрировать запросы из VCL в механизм операционной системы syslog
.
varnishlog
Следующая команда отобразит всю информацию о регистрации для URL-адресов, начинающихся с /vote
:
varnishlog -g request -q "ReqUrl ~ '^/vote'"
Вы можете отфильтровать нужные вам поля:
varnishlog -i requrl -i reqheader -g request -q "ReqUrl ~ '^/vote'"
Этот будет отображать только URL-адрес запроса и все заголовки запроса.
Вы также можете записать выходные данные в файл:
varnishlog -A -a -w /var/log/varnish/vsl_vote.log -i requrl -i reqheader -g request -q "ReqUrl ~ '^/vote'"
См http://varnish-cache.org/docs/6.5/reference/varnishlog .html, чтобы узнать больше о varnishlog
и http://varnish-cache.org/docs/6.5/reference/vsl-query.html чтобы узнать больше об этом vsl-query
языке.
varnishncsa
Если вы хотите вести журнал в стиле Apache, вы можете использовать следующую команду:
varnishncsa -g request -q "ReqUrl ~ '^/vote'"
Вы также можете записывать эти журналы в файл журнала:
varnishncsa -a -w /var/log/varnish/vote_access.log -g request -q "ReqUrl ~ '^/vote'"
Оба
varnishncsa
иvarnishlog
двоичные файлы могут быть демонизированы с помощью-D
параметра
См http://varnish-cache.org/docs/6.5/reference/varnishncsa.html чтобы узнать о нем больше varnishncsa
. В документах также есть раздел о включении пользовательских полей в ваш varnishncsa
вывод.
системный журнал из VCL
Если вы используете следующий фрагмент, вы можете регистрировать запросы на голосование в syslog
:
vcl 4.1;
import std;
sub vcl_recv {
if(req.url ~ "^/vote") {
std.syslog(6, "Vote request captured: " req.url);
}
}
Это шаблонный VCL, который нельзя просто скопировать / вставить таким образом. Пожалуйста, не забудьте добавить
import std;
в свой файл VCL и использоватьstd.syslog()
для входа в ваш локальный системный журнал.
См http://varnish-cache.org/docs/6.5/reference/vmod_std.html#void-syslog-int-priority-string-s чтобы узнать о нем больше std.syslog()
.