Nginx

緩衝 nginx/varnish 訪問記錄到遠端伺服器

  • December 3, 2013

我需要一種方法來衡量不同文件被訪問的次數和時間。我的設置由分佈在世界各地的幾台低容量伺服器組成,它們在 Nginx 後面執行 Varnish(用於 SSL 支持)。伺服器上實際上沒有儲存任何內容,它是從中央儲存點載入並在 Varnish 中記憶體長達一個小時。

我需要的是測量每天訪問任何給定文件的次數。我認為使用訪問日誌應該很容易做到這一點,但我需要一些方法將日誌數據聚合到一個公共數據庫中。

我不知道如何最好地解決這個問題。如有必要,我可以在 PHP 或 Python 中編寫聚合器腳本,並考慮在 Nginx 的 FIFO 文件或管道上使用它,但無法弄清楚如何遠端工作。

您可以使用 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);
};

引用自:https://serverfault.com/questions/558873