varnishncsa
仮想ホストによっては、ログを別々のファイルに分割する必要があります。
特定の仮想ホストをフィルタリングするために上書き設定を作成できることがわかります/etc/systemd/system/varnishncsa.service.d
。
Somedomain.confは次のとおりです。
[Service]
RuntimeDirectory=varnishncsa
Type=forking
User=varnishlog
Group=varnish
ExecStart=
ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain.com'" -D -a -w /var/log/varnish/somedomain.log -P /run/varnishncsa/varnishncsa.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'
ExecReload=/bin/kill -HUP $MAINPID
PrivateDevices=true
PrivateNetwork=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
PIDFile=/run/varnishncsa/varnishncsa.pid
しかし、各仮想ホストごとに別々のログファイルを生成するにはどうすればよいですか?
ドメイン固有のログをawstatsに入力したいと思います。
答え1
私が見た方法には2つのオプションがあります。 1は、すべてをファイルに書き込んでからvarnishlogを使用してログを解析し、興味のある仮想ホストのみを確認することです。このツールの詳細についてはこちらをご覧ください。https://varnish-cache.org/docs/trunk/reference/varnishlog.html。
ログを明示的なファイルに分割するには、複数のデーモンを実行する必要がありますvarnishncsa
。この方法は次のブログに記載されています。仮想ホストのVarnishログを分割する方法。
たとえば、
ワニス3.xvarnishncsa -m "RxHeader:^Host: linuxaria.com$" -a -w /var/log/varnish/linuxaria.com.access_log -D
varnishncsa -m "RxHeader:^Host: linuxaria.org$" -a -w /var/log/varnish/linuxaria.org.access_log -D
ワニス 4.x
varnishncsa -q "ReqHeader ~ '^Host: .*\.example1.com'"
varnishncsa -q "ReqHeader ~ '^Host: .*\.example2.com'"
これを仮想ホストごとに1つずつパーソナライズされたシステム単位ファイルに設定する必要があります。メモ:この方法は、次のブログ記事でも説明されています。[ヒント]varnishncsaは、各ホストの分割ログを保存します。。
あなたの模範
したがって、各ユニットファイル(仮想ホストごとに1つ)に対して、次のようにexec行を追加します。
ユニットファイル#1ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain1.com'" -D -a -w /var/log/varnish/somedomain1.log -P /run/varnishncsa/varnishncsa_vhost1.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'
ユニットファイル #2
ExecStart=/usr/bin/varnishncsa -q "ReqHeader ~ '^Host: somedomain2.com'" -D -a -w /var/log/varnish/somedomain2.log -P /run/varnishncsa/varnishncsa_vhost2.pid -F '%%{X-Forwarded-For}i %%l %%u %%t "%%r" %%s %%b "%%{Referer}i" "%%{User-agent}i"'