ADC

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

NSWL クライアント構成ファイル(log.conf)をさらに変更することで、Citrix ADC Webロギング(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 ##########
<!--NeedCopy-->

フィルタの作成

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

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

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

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

表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 を指定しています。このフィルタは、192.168.100.1 から 192.168.100.254 までの IP アドレスに適用されます。

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

<!--NeedCopy-->

ログプロパティを指定する

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

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

定義には、次の項目を含めることができます。

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

By default, the `logformat` property is w3c. To override, enter custom or NCSA in the configuration file, for example:
     LogFormat NCSA
<!--NeedCopy-->

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

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

    • Hourly: 1 時間ごとにファイルが作成されます。
    • 毎日:毎日午前 0 時にファイルが作成されます。デフォルト値です。
    • Weekly: 毎週日曜日の午前 0 時にファイルが作成されます。
    • 毎月:月の初日の午前 0 時にファイルが作成されます。

:

LogInterval Daily
<!--NeedCopy-->

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

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

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

:

LogFileSizeLimit 35
<!--NeedCopy-->
  • LogFileNameFormat は、ログファイルのファイル名形式を指定します。ファイル名には次の種類があります。

    • Dynamic: 次の形式を含むエクスプレッションを指定します。

      • サーバ IP アドレス
      • 日付 (% {フォーマット} t)
      • URL サフィックス (%x)
      • ホスト名 (%v)

:

LogFileNameFormat Ex%`{`%m%d%y}t.log
<!--NeedCopy-->

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

:


     LogInterval size
     LogFileSize 100
     LogFileNameFormat Ex%`{`%m%d%y}t
<!--NeedCopy-->

注意

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

  • LogExclude は、指定したファイル名拡張子を持つトランザクションのログを防止します。

例:

     LogExclude .html
<!--NeedCopy-->

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

LogTime は、ログ時間を GMT または LOCAL として指定します。

既定値は次のとおりです。

  • NCSA ログファイル形式:LOCAL
  • 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
<!--NeedCopy-->

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

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

引数 Specifies
Client_ip_address クライアントコンピュータの IP アドレス。
ユーザー名 ユーザー名。
日付 トランザクションの日付。
時間 トランザクションが完了した時刻。
タイムゾーン タイムゾーン (グリニッジ標準時または現地時間)。
方法 リクエストメソッド (GET、POST など)。
オブジェクト URL。
HTTP_version クライアントが使用する HTTP のバージョン。
HTTP_StatusCode レスポンスのステータスコード。
送信済みバイト数 サーバから送信されたバイト数。

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
<!--NeedCopy-->

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

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

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
<!--NeedCopy-->

エントリー

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

ディレクティブ

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

:

次のサンプルログファイルには、W3C Extended ログ形式でログエントリが表示されます。

#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
<!--NeedCopy-->

フィールド

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

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

次の表に、定義済みの接頭辞を示します。

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

:

次の例は、接頭辞を使用する定義済み識別子です。

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

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

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

[識別子]

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

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

表5. W3C 拡張ログ形式識別子 (接頭辞不要)

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

識別子 説明
IP IP アドレスとポート番号。
DNS DNS 名。
状態 ステータスコード。
comment コメントはステータスコードとともに返されました。
method メソッド。
url URL。
url-stem URL の語幹部分。
URL クエリ URL のクエリ部分。

表 6. W3C 拡張ログ形式識別子 (接頭辞が必要)

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

フィールド 説明
日付 トランザクションが完了した日付。
時間 トランザクションが完了した時刻。
クライアントIP クライアントの IP アドレス。
ユーザー名 ユーザー名。
サービス名 サービス名。常に HTTP です。
サーバーIP サーバの IP アドレス。
サーバーポート サーバのポート番号
方法 リクエストメソッド (GET、POST など)。
URLステム URL ステム。
URL クエリー URL のクエリ部分。
HTTP ステータス レスポンスのステータスコード。
送信済みバイト数 サーバーに送信されたバイト数 (HTTP ヘッダーを含むリクエストサイズ)。
受信バイト数 サーバーから受信したバイト数 (HTTP ヘッダーを含むレスポンスサイズ)。
Time Taken トランザクションが完了するまでの時間(秒)。
Protocol Version クライアントが使用している HTTP のバージョン番号。
ユーザー エージェント HTTP プロトコルの [User-Agent] フィールド。
クッキー HTTP プロトコルの Cookie フィールド。
Referer HTTPプロトコルのRefererフィールド。

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

カスタムログ形式を作成する

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

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

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

  • Windows: システムマネージャのホストコンピュータ上の\ ns\ bin ディレクトリにある nswl.lib ライブラリ。
  • Solaris: /usr/local/netscaler/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
<!--NeedCopy-->

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

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

LogFormat Custom ""%a - "%{user-agent}i" %[%d/%m/%Y]t %U %s %b %T"
<!--NeedCopy-->
  • 文字列には、新しい行とタブを表す「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

User agent: 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. の文字列には\ キーを使用しないでください。これは、共通ログ形式の要件に準拠しています。クライアントはログに制御文字を挿入できます。したがって、raw ログファイルを操作するときは注意が必要です。

時間形式の定義

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

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

%U と %W の差 (および修正コンバージョン %OU と %OW) の違いは、週の最初の曜日とみなされる日です。週番号1は、1月の最初の週です (%Uは日曜日、%Wは月曜日で始まります)。週番号 0 には、%U および%W の 1 月の最初の日曜日または月曜日の前の日が含まれます。

サーバーログの表示

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

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

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