Varnishにリクエストをログに記録させたい。コマンドvarnishlog -a -w /var/log/varnish.log
を見つけましたが、何も記録されません。
その後、デフォルトではVarnishはログに書き込みを行わないことがわかりました。ただし、ロギングの構成オプションが見つかりません。
HTTPリクエストを NCSA Common Log Format で記録する場合は、varnishncsa
を使用する必要があります。 CentOS/RedHatでは、Varnish RPMパッケージに、ログの開始に使用できるvarnishncsa initスクリプトが含まれています。デフォルトでは、logfile="/var/log/varnish/varnishncsa.log"
にログを記録します。
さらに、1つのVarnishインストールで複数の異なるホストにサービスを提供する場合は、ホスト名もログに含める必要があります。これは、/etc/sysconfig/varnishncsa
の次の設定で実現できます。
DAEMON_OPTS="$DAEMON_OPTS -F '%{Host}i %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"'"
Anshuによるリンクで説明されているメソッドは、Varnishによってバックエンドサーバーに渡されたリクエストのみをログに記録することに注意してください。 キャッシュヒットリクエストは記録されません(Varnish 5.0より前-下記を参照)。したがって、この方法で収集されたHTTPDログは、統計分析には使用できません。
更新:@VikrantPogulaが言及したように、Varnish 5.0以降、すべてのクライアント要求がログに記録されます(キャッシュヒットを含む)。これはデフォルトの動作であり、-c
スイッチを使用して明示的にオンにすることができます。
ワニスのメトリックは、人々が苦労している一般的な領域です。
1回限りの要求メトリックを取得するのは比較的簡単ですが、全体的な追跡には、通常、varnishncsaを使用する必要があります。これは、メトリック設定を含む ワニスインストールのガイド です。
Ketolaの回答に応じて、-c
フラグを渡すことで、キャッシュヒットリクエストもvarnishncsaログに記録できます。これにより、HTTPDログを使用して統計を分析できます。
例:varnishncsa -c -a -w ~/varnish.log
は、キャッシュヒットリクエストをデフォルトのNCSA形式でファイルに書き込みます
私がここに着陸し、提案された修正が役に立たなかったので:
私のvarnishncsa.logが空で、プロセスが実行されていました。
ログの形式(任意の形式)を指定する必要があることがわかりました。
この洞察自体は私のinitスクリプトを修正しなかったので、私は この戦略 を使用して修正しました。