2012-10-03 59 views
12

我想讓Varnish記錄請求。我發現命令varnishlog -a -w /var/log/varnish.log,但它不記錄任何東西。如何設置清漆日誌?

然後我發現,默認情況下,Varnish不寫入日誌。但是,我無法找到日誌記錄的配置選項。

+1

注意當使用版本<3.0.3的varnishlog -w時,每次清漆重新啓動後必須重新啓動。 – Doomsday

回答

22

如果要在NCSA Common Log Format中記錄HTTP請求,則需要使用varnishncsa。在CentOS/RedHat上,Varnish RPM軟件包包含一個varnishncsa初始化腳本,您可以使用該腳本開始記錄。默認情況下,它會記錄到logfile="/var/log/varnish/varnishncsa.log"

此外,如果您希望通過一次Varnish安裝來提供多個不同的主機,您還需要在日誌中包含主機名。這可以通過以下設置在/etc/sysconfig/varnishncsa

DAEMON_OPTS="$DAEMON_OPTS -F '%{Host}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"'" 

請注意,由安舒的鏈接描述的方法只記錄那些通過光油傳遞到後端服務器的要求來完成。 緩存命中請求永遠不會被記錄在(Varnish 5.0之前 - 見下文)。因此,以這種方式收集的HTTPD日誌不能用於統計分析。

更新:正如@VikrantPogula所提到的,自Varnish 5.0開始,所有的客戶端請求都被記錄 - 包括緩存命中。這是默認行爲,可以使用-c開關明確打開。

+20

在Ubuntu上實際啓用日誌記錄: 編輯'/等/默認/ varnishncsa' 取消註釋'#VARNISHNCSA_ENABLED = 1' 運行'須藤服務varnishncsa restart' – George

+0

我不能使用-f選項'/ etc/default/varnishncsa'(Ubuntu 14.04),可能是因爲shell以奇怪的方式處理引號。當我嘗試通過'sudo service varnishncsa restart'重新啓動服務時,會顯示清漆的使用選項,但服務未啓動。看起來像一個未解決的bug,請參閱:http:// giantdorks。org/alain/workaround-for-broken-varnishncsa-logging-due-to-shell-mishandling-of-spaces-in-log_format-variables/and https://bugs.debian.org/cgi-bin/bugreport.cgi ?bug = 657449 – Hirnhamster

3

迴應Ketola的回答,您可以通過傳遞-c標誌來讓varnishncsa記錄緩存命中請求。這將允許您使用HTTPD日誌來分析統計信息。

例子:varnishncsa -c -a -w ~/varnish.log會寫高速緩存命中請求違約NCSA格式文件

6

指標清漆是一種常見的區域,人們掙扎。

獲得一些關閉請求指標相對容易,但隨着時間的推移整體跟蹤通常涉及使用varnishncsa。這裏是一個guide on Varnish installation包括指標設置

+0

謝謝:)''''''''''' –

1

因爲我在這裏登陸和建議的固定沒有幫助:

我varnishncsa.log是空的,運行進程。

原來,我必須指定日誌格式(任何格式)。

由於這種見解本身並沒有解決我的初始化腳本,我使用this strategy來修復它。