Citrix ADC

NSWL クライアントシステムでのログ記録のカスタマイズ

NSWL クライアント構成ファイル(log.conf)にさらに変更を加えることで、NSWL クライアントシステムでのログ記録をカスタマイズできます。テキスト・エディタを使用して、クライアント・システム上の log.conf 構成ファイルを変更します。

ロギングをカスタマイズするには、設定ファイルを使用してフィルタとログのプロパティを定義します。

  • ログフィルタ。WebサーバーのホストIPアドレス、ドメイン名、ホスト名に基づいてログ情報をフィルタリングします。
  • ログのプロパティ。各フィルタには、関連する一連のログプロパティがあります。ログのプロパティは、フィルタリングされたログ情報の格納方法を定義します。

設定ファイルの例

次に、設定ファイルの例を示します。

##########
# This is the NSWL configuration file
# Only the default filter is active
# Remove leading # to activate other filters
##########
##########
# Default filter (default on)
# W3C Format logging, new file is created every hour or on reaching 10MB file size,
# and the file name is Exyymmdd.log
##########
Filter default
begin default
        logFormat               W3C
        logInterval             Hourly
        logFileSizeLimit        10
        logFilenameFormat       Ex%`{`%y%m%d}t.log
end default
##########
# Citrix ADC caches example
# CACHE_F filter covers all the transaction with HOST name www.netscaler.com and the listed server ip's
##########
#Filter CACHE_F HOST www.netscaler.com IP 192.168.100.89 192.168.100.95 192.168.100.52 192.168.100.53 ON
##########
# netscaler origin server example
# Not interested in Origin server to Cache traffic transaction logging
##########
#Filter ORIGIN_SERVERS IP 192.168.100.64 192.168.100.65 192.168.100.66 192.168.100.67 192.168.100.225 192.168.100.226 192.168.
100.227 192.168.100.228 OFF
##########
# netscaler image server example
# all the image server logging.
##########
#Filter IMAGE_SERVER HOST www.netscaler.images.com IP 192.168.100.71 192.168.100.72 192.168.100.169 192.168.100.170 192.168.10
0.171 ON
##########
# NCSA Format logging, new file is created every day midnight or on reaching 20MB file size,
# and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log.
# Exclude objects that ends with .gif .jpg .jar.
##########
#begin ORIGIN_SERVERS
#       logFormat               NCSA
#       logInterval             Daily
#       logFileSizeLimit        40
#       logFilenameFormat       /datadisk5/ORGIN/log/%v/NS%`{`%m%d%y}t.log
#       logExclude              .gif .jpg .jar
#end ORIGIN_SERVERS

##########
# NCSA Format logging, new file is created every day midnight or on reaching 20MB file size,
# and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log with log record timestamp as GMT.
##########
#begin CACHE_F
#       logFormat               NCSA
#       logInterval             Daily
#       logFileSizeLimit        20
#       logFilenameFormat /datadisk5/netscaler/log/%v/NS%`{`%m%d%y}t.log
#       logtime                 GMT
#end CACHE_F

##########
# W3C Format logging, new file on reaching 20MB and the log file path name is
# atadisk6/netscaler/log/server's ip/Exmmyydd.log with log record timestamp as LOCAL.
##########
#begin IMAGE_SERVER
#       logFormat               W3C
#       logInterval             Size
#       logFileSizeLimit        20
#       logFilenameFormat /datadisk6/netscaler/log/%AEx%`{`%m%d%y}t
#       logtime                 LOCAL
#end IMAGE_SERVER

##########
# Virtual Host by Name firm, can filter out the logging based on the host name by,
##########

#Filter VHOST_F IP 10.101.2.151 NETMASK 255.255.255.0
#begin VHOST_F
#       logFormat               W3C
#       logInterval             Daily
#       logFileSizeLimit        10
logFilenameFormat /ns/prod/vhost/%v/Ex%`{`%m%d%y}t
#end VHOST_F

########## END FILTER CONFIGURATION ##########

フィルタの作成

設定ファイル (log.conf) にあるデフォルトのフィルタ定義を使用することも、フィルタを変更したり、新しいフィルタを作成することもできます。複数のログフィルタを作成できます。

注: フィルタが定義されていないトランザクションをログに記録する統合ログでは、デフォルトのフィルタが有効になっている場合はそのフィルタが使用されます。すべてのサーバーの統合ログは、デフォルトのフィルタのみを定義することによって実行できます。

サーバーが複数の Web サイトをホストし、各 Web サイトに独自のドメイン名があり、各ドメインが仮想サーバーに関連付けられている場合は、Web サイトごとに個別のログディレクトリを作成するように Web サーバーのログを構成できます。次の表に、フィルタを作成するためのパラメータを示します。

パラメーター 指定内容
フィルタ名 フィルタの名前。フィルタ名には英数字を使用できます。また、59 文字を超えることはできません。59 文字を超えるフィルタ名は 59 文字に切り捨てられます。
HOST name トランザクションがログに記録されるサーバーのホスト名。
IP ip トランザクションがログに記録されるサーバーの IP アドレス (たとえば、サーバーに 1 つの IP アドレスを持つドメインが複数ある場合)。
IP ip 2…ip n: 複数の IP アドレス(たとえば、サーバドメインに複数の IP アドレスがある場合)。
ip6 ip トランザクションがログに記録されるサーバの IPv6 アドレス。
IP ip NETMASK mask サブネットで使用する IP アドレスとネットマスクの組み合わせ。
ON | OFF トランザクションを記録するフィルタを有効または無効にします。引数が選択されていない場合、フィルタは有効 (ON) になります。

表1. フィルタを作成するためのパラメータ

フィルタを作成するには

フィルタを作成するには、log.conf ファイルに次のコマンドを入力します。

  • filter <filterName> <HOST name> | [IP<ip> ] | [IP<ip 2...ip n> ] | <IP ip NETMASK mask> [ON | OFF]

  • filter <filterName> <HOST name> | [IP6 ip/<prefix length>] [ON | OFF]

仮想サーバーのフィルタを作成するには

仮想サーバのフィルタを作成するには、log.conf ファイルに次のコマンドを入力します。

filter <filterName> <VirtualServer IP address>

次の例では、IP アドレスを 192.168.100.0、ネットマスクを 255.255.255.0 と指定します。フィルターは、IP アドレス 192.168.100.1 から 192.168.100.254 までに適用されます。

Filter F1 HOST www.netscaler.com ON
Filter F2 HOST www.netscaler.com IP 192.168.100.151 ON
Filter F3 HOST www.netscaler.com IP 192.168.100.151 192.165.100.152 ON
Filter F4 IP 192.168.100.151
Filter F5 IP 192.168.100.151 HOST www.netscaler.com OFF
Filter F6 HOST www.netscaler.com HOST www.xyz.com HOST www.abcxyz.com IP 192.168.100.200 ON
Filter F7 IP 192.250.100.0 NETMASK 255.255.255.0
Filter F8 HOST www.xyz.com IP 192.250.100.0 NETMASK 255.255.255.0 OFF
For creating filters for servers having IPv6 addresses.
Filter F9 2002::8/112 ON
Filter F10 HOST www.abcd.com IP6 2002::8 ON

ログ・プロパティの指定

ログプロパティは、フィルタに関連付けられているすべてのログエントリに適用されます。ログプロパティ定義は、次の例に示すように、キーワード BEGIN で始まり、END で終わります。

BEGIN <filtername>
 logFormat ...
 logFilenameFormat ...
 logInterval ...
 logFileSize ....
 logExclude ....
 logTime ….
 END

定義内のエントリには、次のものを含めることができます。

  • LogFormat は、NCSA、W3C 拡張、およびカスタムログファイル形式をサポートする Web サーバーのログ機能を指定します。

デフォルトでは、logformat プロパティーは w3c です。上書きするには、設定ファイルに custom または NCSA と入力します。次に例を示します。

     LogFormat NCSA

注: NCSA およびカスタムログ形式では、トランザクションのタイムスタンプとファイルのローテーションにローカル時間が使用されます。

  • LogInterval は、新しいログファイルが作成される間隔を指定します。次のいずれかの値を使用します。

    • [毎時]: 1 時間ごとにファイルが作成されます。
    • Daily: ファイルは毎日午前 0 時に作成されます。デフォルト値です。
    • 毎週:ファイルは毎週日曜日の午前 0 時に作成されます。
    • 月次:ファイルは、月の初日の午前 0 時に作成されます。
    • [なし]: ファイルは、Web サーバーのログ記録が開始されたときに 1 回だけ作成されます。</span>

:

LogInterval Daily

ログファイルサイズ制限 は、ログファイルの最大サイズを MB 単位で指定します。任意のログ間隔 (毎週、毎月など) で使用できます。 ファイルは、最大ファイルサイズ制限に達したとき、または定義されたログ間隔が経過したときに作成されます。

この動作を無効にするには、loginterval プロパティーとして size を指定します。これにより、ログファイルのサイズ制限に達したときにのみファイルが作成されます。

デフォルトのログファイルサイズ制限は 10 MB です。

:

LogFileSizeLimit 35
  • LogFilenameFormat は、ログファイルのファイル名形式を指定します。ファイル名には、次のタイプがあります。

    • [静的]: 絶対パスとファイル名を含む定数文字列を指定します。

      [動的]: 次の形式を含む式を指定します。

      • サーバの IP アドレス
      • Date (%{format}t)
      • URL サフィックス (%x)
      • ホスト名 (%v)

:

LogFileNameFormat Ex%`{`%m%d%y}t.log

このコマンドは、最初のファイル名を Exmmddyy.log として作成し、1 時間ごとに Exmmddyy.log.0、Exmmddyy.log.1、…、Exmmddy.log.n というファイル名で作成します。

:


     LogInterval size
     LogFileSize 100
     LogFileNameFormat Ex%`{`%m%d%y}t

注意:

LogFilenameFormat コマンドで指定された日付形式%t は、そのフィルタのログ間隔プロパティを上書きします。指定したログファイルのサイズに達したときではなく、毎日新しいファイルが作成されないようにするには、LogFilenameFormat で%t を使用しないでください。

  • LogExclude は、指定したファイル拡張子を持つトランザクションのログを記録しないようにします。

例:

     LogExclude .html

このコマンドは、*.html ファイルのログトランザクションを除外するログファイルを作成します。

LogTime は、ログ時刻を GMT または LOCAL のいずれかとして指定します。

デフォルトは次のとおりです。

  • NCSA ログファイル形式:ローカル
  • W3C ログファイル形式:GMT

NCSA および W3C のログ形式について

Citrix ADCでは、次の標準ログファイル形式がサポートされています。

  • NCSA 共通ログ形式
  • W3C 拡張ログ形式

NCSA 共通ログ形式

ログファイルの形式が NCSA の場合、ログファイルには、次の形式でログ情報が表示されます。

Client_IP_address -User_Name [Date:Time -TimeZone] "Method Object HTTP_version" HTTP_StatusCode BytesSent

NCSA 共通ログ形式を使用するには、log.conf ファイルの LogFormat 引数に NCSA と入力します。

次の表に、NCSA 共通ログ形式を示します。

引数 指定内容
Client_IP_address クライアントコンピュータの IP アドレス。
User Name ユーザー名。
Date トランザクションの日付。
Time トランザクションが完了した時刻。
Time Zone タイムゾーン (グリニッジ標準時または現地時間)。
方法 リクエストメソッド(GET、POST など)。
Object URL。
HTTP_version クライアントが使用する HTTP のバージョン。
HTTP_StatusCode レスポンスのステータスコード。
Bytes Sent サーバから送信されたバイト数。

W3C 拡張ログ形式

拡張ログファイルには、ラインフィード(LF)またはシーケンスキャリッジリターンラインフィード(CRLF)で終了するASCII文字を含む一連の行が含まれています。 ログ・ファイル・ジェネレータは、実行されるプラットフォームの行終端規則に従う必要があります。

ログアナライザは、LF 形式または CRLF 形式を受け入れる必要があります。各行には、ディレクティブまたはエントリのいずれかを含めることができます。W3C 拡張ログ形式を使用する場合は、log.conf ファイルの Log-Format 引数として W3C と入力します。

デフォルトでは、標準の W3C ログ形式は、次のようにカスタムログ形式として内部的に定義されます。

%`{`%Y-%m-%d%H:%M:%S}t %a %u %S %A %p %m %U %q %s %j %J %T %H %+{user-agent}i %+{cookie} i%+{referer}i

また、このW3Cログ形式の順序を変更したり、いくつかのフィールドを削除することもできます。例:

logFormat W3C %`{`%Y-%m-%d%H:%M:%S}t %m %U

W3C ログエントリは、次の形式で作成されます。

#Version: 1.0 #Fields: date time cs-method cs-uri #Date: 12-Jun-2001 12:34 2001-06-12 12:34:23 GET /sports/football.html 2001-06-12 12:34:30 GET /sports/football.html

エントリ

エントリは、単一の HTTP トランザクションに関連する一連のフィールドで構成されます。フィールドは空白で区切ります。タブ文字を使用することをお勧めします。特定のエントリのフィールドが使用されていない場合、省略されたフィールドはダッシュ(-)でマークされます。

ディレクティブ

ロギングプロセスに関するディレクティブ表 fpr 情報を参照してください。シャープ記号 (#) で始まる行には、ディレクティブが含まれます。

:

次のサンプルログファイルは、W3C 拡張ログ形式のログエントリを示しています。

#Version: 1.0 #Fields: time cs-method cs-uri #Date: 12-Jan-1996 00:00:00 00:34:23 GET /sports/football.html 12:21:16 GET /sports/football.html 12:45:52 GET /sports/football.html 12:57:34 GET /sports/football.html

フィールド

Fields ディレクティブは,各エントリに記録される情報を指定する一連の項目識別子をリストします。フィールド ID には、次のいずれかの形式があります。

  • identifier: トランザクション全体に関連します。
  • prefix-identifier: 値プレフィクスによって定義された当事者間の情報転送に関連します。
  • 接頭辞(ヘッダー): 値接頭辞によって定義された当事者間の転送のためのHTTPヘッダーフィールドヘッダーの値を指定します。この方法で指定されたフィールドには、常に型があります。

次の表は、定義されたプレフィックスについて説明しています。

プレフィックス 指定内容
c クライアント
s サーバー
r リモート
cs クライアントからサーバへ
sc サーバからクライアント
sr サーバからリモートサーバ(プロキシが使用するプレフィックス)
rs リモートサーバからサーバ(プロキシが使用するプレフィックス)
x アプリケーション固有の識別子

:

次に、プレフィックスを使用する定義済み識別子の例を示します。

cs-method: クライアントからサーバーに送信されるリクエストのメソッド。

sc(リファラー): 返信のリファラーフィールド。

c-ip: クライアントの IP アドレス。

識別子

次の表に、プレフィックスを必要としない W3C 拡張ログ形式識別子を示します。

識別子 説明
date トランザクションが実行された日付。
time トランザクションが完了した時刻。
time-taken トランザクションが完了するまでにかかった時間(秒単位)。
bytes 転送されたバイト数。
cached キャッシュヒットが発生したかどうかを記録します。ゼロはキャッシュミスを示します。

表5. W3C 拡張ログ形式識別子 (プレフィックスは不要)

次の表に、プレフィックスを必要とする W3C 拡張ログ形式識別子を示します。

識別子 説明
IP IP アドレスとポート番号。
dns DNS 名。
status ステータスコード。
comment ステータスコードとともに返されたコメント。
method メソッド。
url URL。
url-stem URL のステム部分です。
url-query URL のクエリ部分。

表 6. W3C 拡張ログ形式識別子 (プレフィックスが必要)

W3C 拡張ログファイル形式では、ログフィールドを選択できます。次の表に、これらのフィールドを示します。

フィールド 説明
日付 トランザクションが実行される日付。
Time トランザクションが完了した時刻。
クライアントIP クライアントの IP アドレス。
ユーザー名 ユーザー名。
サービス名 サービス名。常に HTTP です。
サーバーIP サーバの IP アドレス。
Server Port サーバーのポート番号
方法 リクエストメソッド(GET、POST など)。
Url Stem URL ステム。
Url Query URL のクエリ部分。
Http Status レスポンスのステータスコード。
Bytes Sent サーバーに送信されたバイト数 (HTTP ヘッダーを含む要求サイズ)。
Bytes Received サーバーから受信したバイト数(HTTP ヘッダーを含む応答サイズ)。
Time Taken トランザクションが完了するまでにかかった時間(秒単位)。
Protocol Version クライアントが使用している HTTP のバージョン番号。
ユーザー エージェント HTTPプロトコルのユーザーエージェントフィールド。
Cookie HTTP プロトコルの Cookie フィールド。
Referer HTTP プロトコルの Referer フィールド。

表7. W3C 拡張ログファイル形式 (ログフィールドを許可する)

カスタムログ形式の作成

ログファイルデータの表示形式は、手動で、または NSWL ライブラリを使用してカスタマイズできます。カスタムログ形式を使用すると、Apache が現在サポートしているほとんどのログ形式を取得できます。

NSWL ライブラリを使用したカスタムログ形式の作成

NSWL実行可能ファイルがWindowsまたはSolarisのホスト・コンピュータにインストールされているかどうかに応じて、次のNSWLライブラリのいずれかを使用します。

  • Windows: システムマネージャのホストコンピュータ上の nsbin ディレクトリにある nswl.lib ライブラリ。
  • Solaris: /usr/ローカル/ネットスケーラ/binにある libnswl.a ライブラリです。

NSWL ライブラリを使用してカスタムログ形式を作成するには

  1. システムで定義された次の 2 つの C 関数を C ソースファイルに追加します。

    ns_userDefFieldName (): この関数は、ログ・レコードにカスタム・フィールド名として追加する必要がある文字列を返します。

    ns_userDefFieldVal (): この関数は、カスタム・フィールド値を実装し、ログ・レコードの最後に追加する必要がある文字列として返します。

  2. ファイルをオブジェクトファイルにコンパイルします。

  3. オブジェクトファイルを NSWL ライブラリ (およびオプションでサードパーティライブラリ) にリンクして、新しい NSWL 実行可能ファイルを作成します。

  4. 構成ファイル (log.conf) の logFormat 文字列の末尾に%d 個の文字列を追加します。

:

########## # A new file is created every midnight or on reaching 20MB file size, # and the file name is /datadisk5/netscaler/log/NS<hostname>/Nsmmddyy.log and create digital #signature field for each record. BEGIN CACHE_F logFormat custom "%a - "%{user-agent}i" [%d/%B/%Y %T -%g] "%x" %s %b%{referrer}i "%{user-agent}i" "%{cookie}i" %d " logInterval Daily logFileSizeLimit 20 logFilenameFormat /datadisk5/netscaler/log/%v/NS%`{`%m%d%y}t.log END CACHE_F

カスタムログ形式の手動作成

ログファイルデータを表示する形式をカスタマイズするには、LogFormat ログプロパティ定義の引数として文字列を指定します。次に、文字列を使用してログ形式を作成する例を示します。

LogFormat Custom ""%a - "%{user-agent}i" %[%d/%m/%Y]t %U %s %b %T"
  • 文字列には、新しい行とタブを表す「c」タイプの制御文字 n と t を含めることができます。
  • リテラル引用符とバックスラッシュで Esc キーを使用します。

要求の特性は、フォーマット文字列に% ディレクティブを配置することによってログに記録されます。このディレクティブは、ログ・ファイル内で値に置き換えられます。

%v (ホスト名) または%x (URL サフィックス) の形式指定子がログファイル名の形式文字列に存在する場合、ファイル名の次の文字がログ設定ファイル名のアンダースコア記号に置き換えられます。

” * . / : < > ? \

ASCII 値が 0 ~ 31 の範囲にある文字は、次のように置き換えられます。

%<ASCII value of character in hexadecimal>」を参照してください。

たとえば、ASCII 値 22 の文字は%16 に置き換えられます。

注意:

%v 形式指定子がログファイル名の形式文字列に存在する場合、仮想ホストごとに個別のファイルが開きます。継続的なロギングを確保するには、プロセスが開くことのできるファイルの最大数を十分に大きくする必要があります。開くことができるファイル数を変更する手順については、オペレーティングシステムのマニュアルを参照してください。

Apache ログフォーマットの作成

Apache が現在サポートしているほとんどのログ形式のカスタムログから派生させることができます。Apache ログ形式に一致するカスタムログ形式は次のとおりです。

NCSA/combined: LogFormat custom %h %l %u [%t] “%r” %s %B “%{referer}i” “%{user-agent}i”

NCSA/Common: LogFormat custom %h %l %u [%t] “%r” %s %B

Referer Log: LogFormat custom “%{referer}i” -> %U

Useragent: LogFormat custom %{user-agent}i

同様に、カスタム形式から他のサーバーログ形式を派生させることができます。

カスタムログ形式を定義するための引数

カスタムログ形式の定義の詳細については、カスタムログ形式pdf の表を参照してください。

注:

カスタム HTTP ヘッダーをエクスポートする方法については、Webサーバーロギング用のCitrix ADC 構成を参照してください

たとえば、ログ形式を%+ {user-agent} iとして定義し、ユーザーエージェントの値がCitrix ADCシステムのWebクライアントである場合、情報はCitrix ADCシステム+Web+クライアントとして記録されます。代わりに、二重引用符を使用することもできます。たとえば、「% {user-agent} i」は「Citrix ADC システム Web クライアント」としてログに記録します。<Esc>%.. .r,%. .i および,%. .o の文字列にはキーを使用しないでください。これは、共通ログ形式の要件に準拠しています。クライアントは制御文字をログに挿入できることに注意してください。したがって、生のログファイルを操作するときは注意が必要です。

時間形式の定義

カスタムログフォーマットの時間形式の定義表で説明されている% {format} t 文字列のフォーマット部分については、表を参照してください。角かっこ ([ ]) 内の値は、表示される値の範囲を示します。たとえば、次の表[1,31]の%d の説明では、1 から 31 までの%d の範囲を示しています。

注:

前の表で説明した変換のいずれにも対応しない変換を指定した場合、または次の段落で示した変換指定を変更した場合、動作は未定義になり、0 が返されます。

%U と%W(および変更後の変換%OU と%OW)の差は、週の最初の曜日と見なされる日です。週番号 1 は 1 月の最初の週です (%U の場合は日曜日、%W の場合は月曜日)。週番号 0 には、%U および%W の 1 月の最初の日曜日または月曜日の前の日が含まれます。

サーバログの表示

Citrix ADC Web Logging(NSWL)機能を構成して、コンソールにサーバーログを表示したり、サーバーログをCitrix ADCアプライアンス上のディレクトリにリダイレクトしたりできます。

コンソールにログを表示する方法は 2 つあります (標準出力)。 オプション 1: コンソールにすべてのログを表示する。 オプション2:選択したログのみをコンソールに表示し、ログファイル名形式をSTDOUTとしてフィルタします。

NSWL クライアントシステムでのログ記録のカスタマイズ