Назад | Перейти на главную страницу

Ведение журнала Varnish Cache в MongoDB

Я хочу передать журнал Varnish в MongoDB для создания отчетов в реальном времени.

Можно ли это настроить непосредственно в Varnish или в официальном Varnish-Agent (https://github.com/varnish/varnish-agent) быть использован или какой другой агент или скрипт?

Я также подумал о регистрации статистики в mongoDB, поскольку он имеет режим записи «выстрелил и забыл» в качестве режима записи по умолчанию, и он не блокирует запросы, но никогда не продвигается к нему.

Я вижу 3 возможных решения:

  1. Доступного vmod mongoDB пока нет (https://www.varnish-cache.org/vmods), и это может стать толчком для одного.

  2. Используйте mongoDB C lib (http://www.mongodb.org/display/DOCS/C+Language+Center) и напишите встроенный C внутри вашего VCL, используя функции времени выполнения (VRT_GetHdr и т. д.).

  3. Если вы собираетесь сохранить небольшую статистику в виде посещений страниц и кодов ошибок, вы можете проанализировать журнал из varnishncsa с помощью скрипта python и сохранить информацию в mongoDB для последующего использования (сопоставить и уменьшить). Но это ограничено общим форматом журнала Apache (там не так много информации).

Вы действительно не хотите, чтобы это было сделано в Varnish. Вы хотите, чтобы что-то вроде varnishncsa говорило напрямую с mongodb. Таким образом, если Mongo замедляет доставку страницы, это не замедляется. В настоящее время мы обдумываем идею создания программы varnishlogjson для вывода (части) журнала varnishlog в формате JSON для вставки в hadoop, но, возможно, Mongo также сможет использовать JSON.

Я решил использовать скрипт PHP, выполнив команду varnishstat -1 через SSH. Я основал это на этом проекте https://github.com/redsnapper8t8/pyvarnish