Nginx
緩衝 nginx/varnish 訪問記錄到遠端伺服器
我需要一種方法來衡量不同文件被訪問的次數和時間。我的設置由分佈在世界各地的幾台低容量伺服器組成,它們在 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); };