access.log 日志
在squid中access访问日志最为重要,位于/var/log/squid/access.log,Squid把关于HTTP响应的关键信息存放在access.log里。该文件是基于行的,也就是说每行对应一个客户端请求。 squid记录客户端IP(或主机名)、请求URL、响应size、和其他信息。
常用的记录格式如下(包含了10个域):
例如:
1608198403.375 23 47.93.218.79 TCP_DENIED/407 4423 GET http://chn.lottedfs.cn/kr/product/productDetail? bertram HIER_NONE/- text/html
下面来看看意思
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt.
- 时间戳: 请求完成时间,以 Unix 时间来记录的(UTC 1970-01-01 00:00:00 开始的时间)它是毫秒级的。 squid使用这种格式而不是人工可读的时间格式,是为了简化某些日志处理程序的工作。
- 响应时间: 对HTTP响应来说,该域表明squid花了多少时间来处理请求。在squid接受到HTTP请求时开始计时,在响应完全送出后计时终止。响应时间是毫秒级的。尽管时间值是毫秒级的,但是精度可能是10毫秒。在squid负载繁重时,计时变得没那么精确。
- 客户端地址: 该域包含客户端的IP地址,或者是主机名.
- 结果/状态码: 该域包含2个 token,以斜杠分隔。第一个token叫结果码,它把协议和响应结果(例如TCP_HIT或UDP_DENIED)进行归类。这些是squid专有的编码,以TCP_开头的编码指HTTP请求,以UDP_开头的编码指ICP查询。第2个token是HTTP响应状态码(例如200,304,404等)。状态码通常来自原始服务器。在某些情形下,squid可能有义务自己选择状态码.
- 传输size: 该域指明传给客户端的字节数。严格的讲,它是squid告诉TCP/IP协议栈去发送给客户端的字节数。这就是说,它不包括TCP/IP头部的overhead。也请注意,传输size正常来说大于响应的Content-Length。传输size包括了HTTP响应头部,然而Content- Length不包括。
- 请求方式: 该域包含请求方式.
- URI: 该域包含来自客户端请求的URI。大多数记录下来的URI实际是URL(例如,它们有主机名)。在记日志时,squid删掉了在第一个问号(?)之后的所有URI字符,除非禁用了strip_query_terms指令。
- 客户端身份: 无
- 对端编码/对端主机: 对端信息包含了2个token,以斜杠分隔。它仅仅与cache 不命中的请求有关。第一个token指示如何选择下一跳,第二个token是下一跳的地址。当squid发送一个请求到邻居cache时,对端主机地址是邻居的主机名。假如请求是直接送到原始服务器的,则squid会写成原始服务器的IP地址或主机名–假如禁用了log_ip_on_direct。 NONE/-这个值指明squid不转发该请求到任何其他服务器。
- 内容类型: 原始access.log的默认的最后一个域,是HTTP响应的内容类型。 squid从响应的Content-Type头部获取内容类型值。假如该头部丢失了,squid使用一个横杠(-)代替。
假如激活了 log_mime_hdrs 指令,squid在每行追加2个附加的域:
- HTTP请求头部: Squid 编码HTTP请求头部,并且在一对方括号之间打印它们。方括号是必须的,因为squid不编码空格字符。编码方案稍许奇怪。回车(ASCII 13)和换行(ASCII 10)分别打印成\r和\n。其他不可打印的字符以RFC 1738风格来编码,例如Tab(ASCII 9)变成了%09。
- HTTP响应头部: Squid编码HTTP响应头部,并且在一对方括号之间打印它们。注意这些是发往客户端的头部,可能不同于从原始服务器接受到的头部。
如果日志需要给 awstats 分析和让人可读性更加好,可能需要修改日志为 combined:
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined
会显示为
60.205.178.230 - - [17/Dec/2020:17:42:37 +0800] "GET http://chn.lottedfs.cn/kr/product/productDetail? HTTP/1.1" 407 4319 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0" TCP_DENIED:HIER_NONE