我需要一种方法来测量不同文件被访问的次数和时间。我的设置包括分布在世界各地的几台低容量服务器,这些服务器在 Nginx(用于 SSL 支持)后面运行 Varnish。服务器上实际上不存储任何内容,内容从中央存储点加载,并在 Varnish 中缓存长达一小时。
我需要测量每天访问某个文件的次数。我认为使用访问日志应该很容易做到这一点,但我需要某种方式将日志数据聚合到一个公共数据库中。
我不知道如何最好地解决这个问题。如果需要,我可以用 PHP 或 Python 编写一个聚合器脚本,并考虑过在 FIFO 文件或 Nginx 管道上使用它,但不知道如何远程操作它。
答案1
您可以使用 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);
};