Мне нужен способ измерить, сколько раз и когда обращались к разным файлам. Моя установка состоит из нескольких серверов малой мощности, разбросанных по всему миру, на которых Varnish работает за Nginx (для поддержки SSL). Фактически на серверах не хранится никакой контент, он загружается из центральной точки хранения и кэшируется в Varnish на срок до часа.
Мне нужно измерить, сколько раз в день осуществлялся доступ к любому данному файлу. Я подумал, что это должно быть довольно легко сделать с журналами доступа, но мне нужен какой-то способ агрегировать данные журнала в общую базу данных.
Я понятия не имею, как лучше всего это решить. Я могу написать сценарий агрегатора на PHP или Python, если это необходимо, и подумал об использовании этого в FIFO-файле или канале из Nginx, но не могу понять, как работать с ним удаленно.
Вы можете отправить файлы журнала на центральный сервер журнала с помощью syslog-ng.
На машинах Varnish сделайте примерно так:
source s_varnish {
file("/var/log/varnish.log" flags(no-parse) program_override("varnish"));
};
destination d_logserver {
tcp("123.456.789.012");
};
log {
source(s_varnish);
destination(d_logserver);
};
Где 123.456.789.012 - ваш центральный сервер журналов.
А на сервере журналов вы можете записать все журналы в один файл, если хотите, примерно так:
source s_all {
syslog(0.0.0.0);
};
destination d_all {
file("/var/log/all.log", create_dirs(yes));
}
log {
source(s_all);
destination(d_all);
};