缓冲 nginx/varnish 访问日志记录到远程服务器

缓冲 nginx/varnish 访问日志记录到远程服务器

我需要一种方法来测量不同文件被访问的次数和时间。我的设置包括分布在世界各地的几台低容量服务器,这些服务器在 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);
 };

相关内容