mod_access

模块简介

mod_access以指定格式记录请求日志和会话日志。

基础配置

配置描述

模块配置文件: conf/mod_access/mod_access.conf

配置项描述
Log.LogFileString
日志文件路径,用来将日志输出到单个文件中(不进行日志切割)
Log.LogPrefixString
日志文件前缀名称
Log.LogDirString
access日志文件目录
Log.RotateWhenString
日志切割时间,支持 M/H/D/MIDNIGHT/NEXTHOUR
Log.BackupCountInteger
最大的日志存储数量
Template.RequestTemplateString
请求日志模板
Template.SessionTemplateString
会话日志模板
  • RequestTemplate/SessionTemplate 中 $开头的代表变量, 支持的变量列表详见”日志变量”章节说明
  • RequestTemplate 还支持以下几种内置模板,如配置 RequestTemplate = COMMON打印CLF日志
  • COMMON:Common Log Format; 等价于配置 RequestTemplate = $host - - $request_time \“$request_line\“ $status_code $res_len
  • COMBINED:Combined Log Format; 等价于配置 RequestTemplate = $host - - $request_time \“$request_line\“ $status_code $res_len \“${Referer}req_header\“ \“${User-Agent}req_header\“

配置示例

将日志保存到指定路径

  1. [Log]
  2. # filename prefix for log
  3. LogPrefix = access
  4. # access log directory
  5. LogDir = ../log
  6. # log rotate interval: M/H/D/MIDNIGHT/NEXTHOUR
  7. RotateWhen = NEXTHOUR
  8. # max number of rotated log files
  9. BackupCount = 2
  10. [Template]
  11. # template of request log
  12. RequestTemplate = "REQUEST_LOG $time clientip: $remote_addr serverip: $server_addr host: $host product: $product user_agent: ${User-Agent}req_header status: $status_code error: $error"
  13. # template of session log
  14. SessionTemplate = "SESSION_LOG $time clientip: $ses_clientip start_time: $ses_start_time end_time: $ses_end_time overhead: $ses_overhead read_total: $ses_read_total write_total: $ses_write_total keepalive_num: $ses_keepalive_num error: $ses_error"

将日志输出到标准输出

  1. [Log]
  2. # file path for log
  3. LogFile = /dev/stdout
  4. [Template]
  5. # template of request log
  6. RequestTemplate = "REQUEST_LOG $time clientip: $remote_addr serverip: $server_addr host: $host product: $product user_agent: ${User-Agent}req_header status: $status_code error: $error"
  7. # template of session log
  8. SessionTemplate = "SESSION_LOG $time clientip: $ses_clientip start_time: $ses_start_time end_time: $ses_end_time overhead: $ses_overhead read_total: $ses_read_total write_total: $ses_write_total keepalive_num: $ses_keepalive_num error: $ses_error"

日志变量

请求日志变量

变量名含义
log_id请求日志ID
error请求处理错误
product产品线名称
host请求Host字段
url请求URL信息
vip请求访问VIP
is_trust_clientip请求是否来自信任IP
req_uri请求行URI
req_header请求头部, 例${User-Agent}req_header
req_cookie请求Cookie
req_nth请求序号(连接上第几个请求)
req_body_len请求内容长度
status_code响应状态码
res_proto响应HTTP协议版本
res_header响应头部, 例${Server}req_header
res_cookie响应Set-Cookie
redirect重定向响应地址
res_body_len响应内容长度
remote_addr连接对端地址
server_addr连接本地地址
backend请求转发后端信息(集群、子集群、实例)
cluster_name请求转发集群名称
subcluster请求转发子集群名称
retry_num请求转发重试次数
all_time请求总处理时间
read_req_duration读请求头持续时间
proxy_delay从接收到请求头到开始转发请求延迟时间
connect_time连接后端时间
write_serve_time从请求后端到接收到后端响应头持续时间
response_duration从接收到响应头到完成响应转发持续时间
cluster_duration从请求后端到接收到响应头部持续时间(含重试)
last_backend_duration从请求后端到接收到响应头部持续时间
readwrite_serve_time从请求后端到完成响应转发持续时间
since_ses_start_time接收到请求时当前会话持续时间

会话日志变量

变量名含义
ses_clientip会话用户IP
ses_error会话错误
ses_is_secure是否基于TLS协议
ses_start_time会话开始时间
ses_end_time会话结束时间
ses_overhead会话持续时长
ses_read_total会话读取字节总数
ses_write_total会话写出字节总数
ses_tls_client_randomTLS连接ClientHello Random
ses_tls_server_randomTLS连接ServerHello Random
ses_use100是否出现Expect: 100-continue请求
ses_keepalive_num会话总处理请求数

通用日志变量

变量名含义
time日志记录时间