Citrix ADC

在NSWL客户端系统上定制日志记录

通过对NSWL客户端配置文件(log.conf)进行更多修改,可以在Citrix ADC Web logging (NSWL)客户端系统上定制日志记录。使用文本编辑器修改客户端系统上的log.conf配置文件。

若要自定义日志记录,请使用配置文件定义过滤器和日志属性。

  • 日志过滤器。根据Web服务器的主机IP地址、域名和主机名过滤日志信息。
  • 日志属性。每个过滤器都有一组相关的日志属性。日志属性定义如何存储过滤后的日志信息。

样例配置文件

配置文件示例如下:

########## #这是NSWL配置文件#只有默认过滤器是活动的#删除前导#以激活其他过滤器########## ########## #默认过滤器(默认开启)# W3C格式日志记录,每小时或达到10MB文件大小时创建新文件。# Exyymmdd.log文件名  ########## 过滤器默认开始默认logFormat W3C logInterval 10小时logFileSizeLimit logFilenameFormat前任% ' {' % y % m % d} t.log结束违约  ########## # Citrix ADC缓存例# CACHE_F过滤器覆盖所有列出的事务与www.netscaler.com主机名和服务器ip  ########## # 过滤器CACHE_F主机www.netscaler.com IP 192.168.100.89 192.168.100.95 192.168.100.52 192.168.100.53  ########## # netscaler原始服务器示例#不感兴趣在源服务器缓存流量事务日志########## #过滤器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关闭########## # netscaler镜像服务器示例#所有镜像服务器日志。########## #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格式日志记录,每天午夜或达到20MB文件大小时创建新文件,#文件名为/datadisk5/netscaler/log/NS/Nsmmddyy.log。排除以.gif .jpg .jar结尾的对象。########## #begin ORIGIN_SERVERS # logFormat NCSA # logInterval Daily # logFileSizeLimit 40 # logFilenameFormat /datadisk5/ORGIN/log/%v/NS% ' {' %m%d%y} .log # logExclude .gif .jpg .jar #end ORIGIN_SERVERS ########## # NCSA格式日志记录,每天午夜或达到20MB文件大小时创建新文件,#文件名为/datadisk5/netscaler/log/NS/Nsmmddyy.log,日志记录时间戳为GMT。########## #begin cache_f# logFormat NCSA # logInterval Daily # logFileSizeLimit 20 # logFilenameFormat /datadisk5/netscaler/log/%v/NS% ' {' %m%d%y} .log # logtime GMT #end CACHE_F ########## # W3C格式日志记录,新文件达到20MB,日志文件路径名为# atadisk6/netscaler/log/server's ip/Exmmyydd.log,日志记录时间戳为LOCAL。########## #begin IMAGE_SERVER # logFormat W3C # logInterval Size # logFileSizeLimit 20 # logFilenameFormat /datadisk6/netscaler/log/%AEx% ' {' %m%d%y}t # logtime LOCAL #end IMAGE_SERVER ########## #虚拟主机名称公司,可以过滤出基于主机名的日志。########## #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配置########## 

创建过滤器

您可以使用配置文件(log.conf)中的默认过滤器定义,也可以修改过滤器或创建过滤器。您可以创建多个日志过滤器。

请注意

统一日志记录记录未为其定义筛选器的事务,如果启用了默认筛选器,则使用默认筛选器。可以通过仅定义默认筛选器来完成所有服务器的统一日志记录。

如果服务器上有多个网站,每个网站都有自己的域名,并且每个域名都与虚拟服务器相关联,则可以配置Web服务器日志,为每个网站创建单独的日志目录。下表显示了创建过滤器的参数。

参数 指定
filterName 过滤器的名称。过滤器名称可以包含字母和数字,长度不超过59个字符。超过59个字符的过滤器名称将被截断为59个字符。
主机名 记录事务的服务器的主机名。
知识产权知识产权 要为其记录事务的服务器的IP地址(例如,如果服务器有多个具有一个IP地址的域)。
知识产权知识产权2…护士: 多个IP地址(例如服务器域中有多个IP地址)。
ip6 IP 要记录事务的服务器的IPv6地址。
IP IP NETMASK掩码 子网中需要使用的IP地址和子网掩码组合。
开bbbboff 启用或禁用筛选器以记录事务。如果不选择任何参数,则启用过滤器(ON)。

表1。创建过滤器参数说明

创建一个过滤器

要创建过滤器,请在log.conf文件中输入以下命令:

  • filter <主机名> | [IP< IP >] | [IP< IP 2…]ip n>] | < ip ip NETMASK掩码> [ON | OFF]

  • filter <主机名> | [IP6 ip/<前缀长度>][ON | OFF]

为虚拟服务器创建过滤器

要为虚拟服务器创建一个过滤器,在log.conf文件中输入以下命令:

filter

例子

以IP地址为192.168.100.0,子网掩码为255.255.255.0为例。适用于192.168.100.1 ~ 192.168.100.254的IP地址。

过滤器F1主机www.netscaler.com在过滤器过滤F2主机www.netscaler.com IP 192.168.100.151 F3主机www.netscaler.com IP 192.168.100.151 192.165.100.152过滤器F4 IP 192.168.100.151过滤器F5 IP 192.168.100.151主机www.netscaler.com从过滤器F6主机www.netscaler.com主机www.xyz.com主机www.abcxyz.com IP 192.168.100.200过滤器F7 IP 192.250.100.0子网掩码255.255.255.0过滤器F8主机www.xyz.com IP 192.250.100.0子网掩码为服务器创建过滤器有255.255.255.0IPv6地址。Filter F9 2002::8/112 ON Filter F10 HOST www.abcd.com IP6 2002::8 ON 

指定日志属性

日志属性应用于与过滤器关联的所有日志项。日志属性定义以关键字BEGIN开始,以END结束,如下例所示:

BEGIN  logFormat…logFilenameFormat……logInterval……文件大小……logExclude……logTime……结束< !——NeedCopy >

定义中的条目可以包括以下内容:

  • LogFormat指定支持NCSA、W3C Extended和自定义日志文件格式的Web服务器日志记录特性。

    默认情况下,logformat属性为w3c。如果要覆盖,请在配置文件中输入custom或NCSA,例如:

NCSA 

请注意

对于NCSA和自定义日志格式,本地时间用于时间戳事务和文件旋转。

  • LogInterval指定创建新日志文件的时间间隔。使用以下值之一:

    • 每小时:每小时创建一个文件。
    • 每天:每天午夜创建一个文件。默认值。
    • 每周:在每周日的午夜创建一个文件。
    • 按月:在每月的第一天午夜创建文件。
    • . None:只在Web服务器开始日志记录时创建一次文件

例子

LogInterval Daily 

LogFileSizeLimit指定日志文件的最大大小,单位为MB。支持任意日志周期(每周、每月等)。当达到最大文件大小限制或超过定义的日志间隔时间时,将创建文件。

要覆盖此行为,请将大小指定为loginterval属性,以便仅在达到日志文件大小限制时创建文件。

默认的LogFileSizeLimit是10 MB。

例子

日志文件限制35 
  • LogFilenameFormat日志文件的文件名格式。文件名可以是以下类型:

    • Static:指定包含绝对路径和文件名的常量字符串。

      Dynamic:指定包含以下格式的表达式:

      • 服务器IP地址
      • 日期(%{格式}t)
      • URL后缀(%x)
      • 主机名(%v)

例子

LogFileNameFormat Ex% ' {' %m%d%y} .log 

该命令将第一个文件名创建为Exmmddyy.log,然后每隔一小时创建一个文件名为:Exmmddyy.log的文件。0, Exmmddyy.log。1,…,Exmmddyy.log.n。

例子

LogInterval大小LogFileSize 100 LogFileNameFormat Ex% ' {' %m%d%y}t 

谨慎

在LogFilenameFormat命令中指定的日期格式%t将覆盖该过滤器的日志间隔属性。为了避免每天创建一个新文件,而不是在达到指定的日志文件大小时创建,请不要在LogFilenameFormat中使用%t。

  • LogExclude阻止记录具有指定文件扩展名的事务。

例子:

该命令创建一个日志文件,该文件排除*.html文件的日志事务。

LogTime指定日志时间为GMT或LOCAL。

默认值为:

  • NCSA日志文件格式为“LOCAL”
  • W3C日志文件格式:GMT。

了解NCSA和W3C日志格式

Citrix ADC支持以下标准日志文件格式:

  • NCSA通用日志格式
  • W3C扩展日志格式

NCSA通用日志格式

如果日志文件格式为NCSA,则日志文件以以下格式显示日志信息:

Client_IP_address -User_Name [Date:Time -TimeZone] "方法对象HTTP_version" HTTP_StatusCode BytesSent 

如果使用NCSA通用日志格式,请在log.conf文件的LogFormat参数中输入NCSA。

NCSA常用日志格式说明如下表所示。

论点 指定
Client_IP_address 客户端的IP地址。
用户名 用户名。
日期 交易日期。
时间 事务完成的时间。
时区 时区(格林威治标准时间或当地时间)。
方法 请求方法(例如;GET、POST)。
对象 URL。
HTTP_version 客户端使用的HTTP版本。
HTTP_StatusCode 响应中的状态码。
字节发送 从服务器发送的字节数。

W3C扩展日志格式

扩展日志文件包含一系列行,其中包含以换行符(LF)或回车换行符(CRLF)结尾的ASCII字符。日志文件生成器必须遵循运行它们的平台的行终止约定。

日志分析器必须接受LF或CRLF格式。每行可能包含一个指令或一个条目。如果您希望使用W3C扩展日志格式,请在log.conf文件中输入W3C作为日志格式参数。

默认情况下,W3C标准日志格式在内部定义为自定义日志格式,如下所示:

% ' {' % Y - % m - H % d %: % m: % S} t % % u % S % % p % m % u % % S % j % % t % H % +{用户代理}我% +{饼干}我% +{推荐人}< !——NeedCopy >

您还可以更改该W3C日志格式中的顺序或删除某些字段。例如:

日志格式W3C % ' {' %Y-%m-%d%H:% m:%S}t %m %U 

W3C日志条目以以下格式创建:

#版本:1.0 #字段:date time cs-method cs-uri #日期:12-06-2001 12:34 2001-06-12 12:34:23 GET /sports/football.html 2001-06-12 12:34:30 GET /sports/football.html 

条目

条目由与单个HTTP事务相关的一系列字段组成。字段之间用空白分隔。Citrix建议使用制表符。如果没有使用特定条目中的字段,则用破折号(-)标记被省略的字段。

指令

看到指令表中显示了日志记录进程的信息。以井号(#)开头的行包含指令。

例子

下面的示例日志文件显示了W3C扩展日志格式的日志条目:

#Version: 1.0 #Fields: time cs-method cs-uri #Date: 12-01-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指令列出了一系列字段标识符,这些标识符指定了记录在每个条目中的信息。字段标识符可能具有以下形式之一:

  • 标识符:与整个交易相关。
  • prefix-identifier:涉及由值前缀定义的各方之间的信息传递。
  • 前缀(头):指定由值前缀定义的双方之间传输的HTTP报头字段报头的值。以这种方式指定的字段总是具有类型。

定义的前缀说明如下表所示。

前缀 指定
c 客户端
年代 服务器
r 远程
cs 客户机到服务器
sc 服务器到客户端
服务器到远程服务器(代理使用的前缀)
rs 远程服务器到服务器(代理使用的前缀)
x 特定于应用程序的标识符

例子

以下示例是使用前缀的已定义标识符:

cs方法:客户端发送给服务器的请求中的方法。

sc(推荐人):推荐人字段。

c-ip:客户端的IP地址。

标识符

下表描述了不需要前缀的W3C扩展日志格式标识符。

标识符 描述
日期 交易完成的日期。
时间 事务完成的时间。
时间 事务完成所需的时间(以秒为单位)。
字节 传输的字节数。
缓存 记录缓存命中是否发生。0表示缓存未命中。

表5所示。W3C扩展日志格式标识符(不需要前缀)

下表描述了需要前缀的W3C扩展日志格式标识符。

标识符 描述
知识产权 IP地址和端口号。
DNS DNS名称。
状态 状态码。
评论 该注释返回一个状态码。
方法 该方法。
url URL。
url-stem URL的词干部分。
url查询 URL的查询部分。

表6所示。W3C扩展日志格式标识符(需要前缀)

W3C扩展日志文件格式允许您选择日志字段。这些字段如下表所示。

描述
日期 交易完成的日期。
时间 事务完成的时间。
客户端IP 客户端的IP地址。
用户名 用户名。
服务名称 服务名称,总是HTTP。
服务器IP 服务器IP地址。
服务器端口 服务器端口号
方法 请求方法(例如;GET、POST)。
Url茎 URL茎。
Url查询 URL的查询部分。
HTTP状态 响应中的状态码。
字节发送 发送到服务器的字节数(请求大小,包括HTTP头)。
字节收到 从服务器接收到的字节数(响应大小,包括HTTP头)。
时间 事务完成所需的时间,以秒为单位。
协议版本 客户端使用的HTTP版本号。
用户代理 HTTP协议中的User-Agent字段。
饼干 HTTP协议的Cookie字段。
推荐人 推荐人HTTP协议字段。

表7所示。W3C扩展日志文件格式(允许日志字段)

创建自定义日志格式

您可以手动或使用NSWL库自定义日志文件数据的显示格式。通过使用自定义日志格式,您可以派生Apache当前支持的大多数日志格式。

通过使用NSWL库创建自定义日志格式

根据NSWL可执行文件是否已安装在Windows或Solaris主机上,使用以下NSWL库之一:

  • 窗口:nswl。在系统管理器主机的\ns\bin目录下的Lib库。
  • Solaris:libnswl。在/usr/local/netscaler/bin中的库。

通过使用NSWL库创建自定义日志格式

  1. 在C源文件中添加以下两个系统定义的C函数:

    ns_userDefFieldName():该函数返回必须作为自定义字段名添加到日志记录中的字符串。

    ns_userDefFieldVal():此函数实现自定义字段值,然后将其作为必须添加在日志记录末尾的字符串返回。

  2. 将该文件编译为目标文件。

  3. 将目标文件与NSWL库(以及可选的第三方库)链接起来,形成一个新的NSWL可执行文件。

  4. 在配置文件(log.conf)的logFormat字符串的末尾添加一个%d字符串。

例子

########## #每天午夜或达到20MB文件大小时创建一个新文件,#文件名为/datadisk5/netscaler/log/NS/Nsmmddyy.log,并为每条记录创建数字#签名字段。BEGIN CACHE_F logFormat自定义"%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} .log END CACHE_F 

手动创建自定义日志格式

若要自定义日志文件数据必须显示的格式,请指定一个字符串作为LogFormat日志属性定义的参数。使用字符串创建日志格式的示例如下:

LogFormat定制”“%——“%{用户代理}我“% (% d / Y % m / %) t % U % s % b % t”< !——NeedCopy >
  • 字符串可以包含“c”类型的控制字符\n和\t来表示新的行和制表符。
  • 使用带有双引号和反斜杠的Esc键。

通过在格式字符串中放置%指令来记录请求的特征,这些指令在日志文件中被值替换。

如果日志文件名格式字符串中存在%v(主机名)或%x (URL后缀)格式说明符,则文件名中的以下字符将被日志配置文件名中的下划线符号替换:

”*。/: < > ?\

ASCII值在0 ~ 31范围内的字符替换为:

%<十六进制>中字符的ASCII值

例如,ASCII值为22的字符被替换为%16。

谨慎

如果%v格式说明符存在于日志文件名格式字符串中,则为每个虚拟主机打开一个单独的文件。为了确保连续的日志记录,进程可以打开的最大文件数量必须足够大。有关更改可打开文件数量的过程,请参阅操作系统文档。

创建Apache日志格式

您可以从自定义日志中派生出Apache当前支持的大多数日志格式。匹配Apache日志格式的自定义日志格式是:

NCSA/combined: LogFormat custom %h %l %u [%t] " %r " %s %B " %{推荐人}我”“%{用户代理}我”

NCSA/Common:日志格式自定义%h %l %u [%t]“%r”%s %B

推荐人日志:LogFormat自定义“%{”推荐人' ' ' ' ' ' ' ' '

用户代理:LogFormat custom %{User -agent}i

类似地,您可以从自定义格式派生其他服务器日志格式。

用于定义自定义日志格式的参数

看到自定义日志格式PDF表格以获取有关定义自定义日志格式的更多信息。

请注意

有关如何导出自定义HTTP头的说明,请参见配置用于Web服务器日志的Citrix ADC

例如:定义日志格式为“%+{user-agent}i”,用户代理的值为“Citrix ADC system Web Client”,则日志格式为“Citrix ADC system+Web+Client”。另一种选择是使用双引号。例如,“%{user-agent}i”将其记录为“Citrix ADC系统Web Client”。不要对来自%….r, %….i和,%….o的字符串使用键。符合《通用日志格式》的要求。客户端可以在日志中插入控制字符。因此,在处理原始日志文件时必须小心。

时间格式定义

看到时间格式定义表可以了解自定义日志格式表中描述的%{format}t字符串的格式部分。括号([])内的值显示出现的值范围。例如,下表中%d描述中的[1,31]表示%d的取值范围为1 ~ 31。

请注意

如果您指定的转换不对应于上表中描述的任何转换,也不对应于下一段中列出的任何修改后的转换规范,则该行为是未定义的,并返回0。

%U和%W之间(以及修改后的转换%OU和%OW之间)的差值是被认为是一周的第一天的那一天。第1周是一月份的第一个星期(%U从星期天开始,%W从星期一开始)。对于%U和%W,周号0包含一月份第一个星期日或星期一之前的天数。

显示服务器日志

您可以配置NSWL特性以在控制台中显示服务器日志,或者将服务器日志重定向到Citrix ADC设备上的目录。

在控制台中显示日志(标准输出)有两种方式:选项1:在控制台中显示所有日志。选项2:在带有过滤器的控制台上仅显示选定的日志logfilenameformatSTDOUT。

在NSWL客户端系统上定制日志记录