Varnish VCL(設定ファイル)をログ出力する

Varnish の設定ファイルである VCL(デフォルトは default.vcl)はプログラムライクである為、柔軟な設定を記述することができますが、どの処理(if 文)が実行されているか等が分かりにくい側面もあります。これらを踏まえて、今回は Varnish VCL でログを出力する方法を紹介します。

Varnish VCL でログを出力する

先に例を示します。

C{
    #include <syslog.h>
}C

sub vcl_recv {
    C{
        syslog(LOG_INFO, "ここに記述した文が syslog に出力される");
    }C
}

Varnish は Varnish 起動時に VCL ファイルを一度 C 言語ソースに変換しますが、この時、“C{” から “}C” までのソースをそのまま C言語として扱います。上の例では 2行目が C言語の include 文で syslog ヘッダを読み込んでおり、7行目で実際にログ出力しています。

1〜3行目は必須です。6〜9行目は vcl_recv でなくても vcl_fetch でも構いません。VCL 内の変数(client.ip 等)も出力することができますが、これには C言語の知識が必要になってきます。詳細は以下の URL を見てください。

ログ出力の注意

ちなみにこのログ出力を行うと遅くなります。使うのはテストの間だけにして下さい。

Published by in Linux, Web 技術, オープンソース, スケーラビリティ and リバースプロキシ using 56 words.