squid日志分类及参数

SQUID默认的log文件非常多,其中最重要的LOG日志有三个,分别为access.log、store.log、cache.log。三个日志的记录的内容如下:

access.log;客户端使用代理服务器的记录文件
store.log;存储缓冲对象的状态记录文件
cache.log;CACHE的启动以及各类状态的记录文件

三个日志的路径可由cache_access_log,cache_store_log,cache_log三个参数在squid.conf里定义。三个参数的用法如下:

#用法:cache_access_log路径
#说明:记录目前代理服务器的活动情况包含所有的HTTP请求,和ICP查询结果
cache_access_log /var/log/squid/access.log;squid默认值
#用法:cache_log路径[NONE]
#说明:此文件记录SQUID PROXY启动,关闭以及代理服务器系统的相关的信息包括系统活动记录
cache_log /var/log/squid/cache.log;squid默认值
#用法:cache_store_log路径[NONE]
#说明:此记录文件用来记录缓冲对象的添加,删除情况
cache_store_log /var/log/squid/store.log
由于store.log的用处不大,一般可设置为:cache_store_log none,来降低日志文件占用的磁盘空间,这一点请特别注意。

access日志输出格式调整与日志过滤

squid日志默认定义好的几种日志格式如下,不需要重新定义(具体每个参数可以参看官方说明):

logformat squid      %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
logformat referrer %ts.%03tu %>a %{Referer}>h %ru
logformat useragent %>a [%tl] "%{User-Agent}>h"

squid access日志默认是以毫秒为单位计的,而想要重新定义时,可以通过以下方式在squid.conf中定义并调用:

vim /App/squid/etc/squid.conf
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %{host}>h
access_log /var/log/squid/access.log combined

注: 上面的日志格式是在不考虑,squid前段有nginx或apache等前端的情况下记录的日志。而当squid前端有nginx等web服务器时,会记 录不到客户的真实IP,这时候就需要通过将%>a替换为 %{X-Real-IP}>h ,注意,前提是nginx在前端做了X-Real-IP  header设置。就可以记录来访者的真实IP了。更改后的日志格式如下:

logformat combined   %{X-Real-IP}>h %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

注意在logformat格式设置有问题时,通过squid -k parse检查配置文件或利用squid -k reconfigure重载错误的配置文件,都会出现下面的提示(此时,只需要根据官方参数提示,重新设置即可):

[root@cache1 ~]# /App/squid/sbin/squid -k parse
FATAL: Can't parse configuration token: '%>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh'
Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
CPU Usage: 0.003 seconds = 0.001 user + 0.002 sys
Maximum Resident Size: 6656 KB
Page faults with physical i/o: 0
/App/squid/sbin/squid[0x47ae69]
/App/squid/sbin/squid[0x47b240]
/App/squid/sbin/squid[0x47b352]
/App/squid/sbin/squid[0x40584b]
/App/squid/sbin/squid[0x405bd7]
/App/squid/sbin/squid[0x413722]
/App/squid/sbin/squid[0x4178e8]
/App/squid/sbin/squid[0x4181e0]
/App/squid/sbin/squid[0x4527e1]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x323121d994]
/App/squid/sbin/squid[0x403d49]
已放弃 (core dumped)

除了定义squid日志的格式之外,还可以通过使用acl规则,很方便的对日志的内容进行过滤,如下面两例。

1、根据域名过滤设置日志

acl 361way_access_log url_regex ^http://blog.361way.com
log_access allow 361way_access_log
access_log /log/access/361way-access.log combined

以上配置是将blog.361way.com这个域名的访问日志,单独写到一个日志文件中。

2、根据文件类型进行过滤

acl nolog urlpath_regex -i .css .js .swf
access_log /var/log/squid/access.log common !nolog

以上配置中会在日志中不再记录css、js、swf三种格式的访问记录。

日志轮询

上 面提到三种日志,都可以通过执行squid -k rotate命令进行轮询。 每当执行此命令时squid会根据squid.conf里面的logfile_rotate命令所定义的值,为轮换除 的文件名编号,默认是log_rotate 10。 logfile_rotat命令的用法如下:

#用法:logfile_rotate 0~10
logfile_rotate 10 

如果设置为 0即永不做轮询。如果设置为log_rotate 10 ,以access.log为例,表示轮换出来的就LOG文件名依次为:access.log、access.log.0 ~access.log.9其 11个文件。每执行一次squid -k rotate命令,三个日志文件都会以此类推往下轮询。这个参数,建议小型的网络设置为10,中型网络设置为4-5;而大型的网络设置为1-2 。对大型的网络而言,应该每天做一次LOG文件轮换,轮换出的文件不需要保留长时间,只需要保留1-2天的LOG就可以了。

要注意的是,并不是调整这个参数重新启动SQUID就可以做LOG文件轮换了,还需要执行squid -k rotate 命令才行。不过在squid 3.1以后的版本中,该参数对cache.log文件不再有用,cache.log可以通过debug_options参数设置自动轮询。具体可以参看官方的logfile_rotate的用法。而想让其定其自动轮询的话,可能配合crontab命令进行。具体如下:

#crontab -e
30 3 * * * /App/squid/sbin/squid -k rotate

每天清晨3:30 crondeamon就会自动执行轮换命令了。

squid日志配置与轮询的更多相关文章

  1. logrotate+crond日志切割、轮询

    logrotate 在工作中经常会有需求去查看日志,无论是通过应用或者系统error日志去查找问题或者通过nginx的访问日志统计站点日均PV.UV.所以体现了日志的重要性,但是通常当业务越来越大的时 ...

  2. 如何配置nginx负载均衡配置(轮询,权重,ip绑定)

    集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...

  3. nacos 使用 servlet 异步处理客户端配置长轮询

    config 客户端 ClientWorker#ClientWorker 构造方法中启动定时任务 ClientWorker.LongPollingRunnable 长轮询的任务,在 run 方法的结尾 ...

  4. logrotate关于日志轮询和分割

    如果你的是源码包安装的服务,那么对于Linux服务器上的一些服务在运行当中产生的日志很重要,可以判断你的服务是否有异常等,但源码包安装的日志是没有日志的轮询或者说是切割能力的, 所以你就需要用到bas ...

  5. nginx负载均衡 加权轮询和ip_hash

    下面给大家总结了几种真正的nginx负载均衡的功能了,在此我们加了一个权重判断法就是根据nginx负载的状态实现分配访问用户到权重值少的机器了,具体配置如下. nginx为后端web服务器(apach ...

  6. nginx加权轮询和ip_hash

    nginx为后端web服务器(apache,nginx,tomcat,weblogic)等做反向代理 几台后端web服务器需要考虑文件共享,数据库共享,session共享问题.文件共享可以使用nfs, ...

  7. Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n

    这里对负载均衡概念和nginx负载均衡实现方式做一个总结: 先说一下负载均衡的概念: Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法. 我们知道单台服务 ...

  8. nginx日志配置,以及日志轮询

    一.为nginx配置错误日志 Nginx错误日志是调试nginx的重要手段,属于核心功能模块的参数(ngx_core_module)该参数名字为err_log,是放在Main区块中全局配置 err_l ...

  9. 源码安装最新版keepalived,剥离日志出来并配置日志轮询

    安装 yum install -y gcc openssl-devel popt-devel ipvsadm libnl3-devel net-snmp-devel libnl libnl-devel ...

随机推荐

  1. Graphics samples

    绘制二次曲线: public void paint(Graphics g) { // TODO 自动生成的方法存根 super.paint(g); Graphics2D g2=(Graphics2D) ...

  2. [转载]ODAC (odp.net) 开发到部署

    1. 确定你开发机和服务器的操作系统是32位还是64位, 而且要确定要部署的服务器是什么操作系统; 2. 下载开发机和服务器所需的dll, 地址:http://download.csdn.net/de ...

  3. Java设计模式-抽象工厂模式(Abstract Factory )

    工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这 ...

  4. Java基础-重写-子类重写父类中的方法后执行情况

    代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...

  5. 【CodeForces 577B】Modulo Sum

    题 题意 给你n(1 ≤ n ≤ 106)个数a1..an(0 ≤ ai ≤ 109),再给你m( 2 ≤ m ≤ 103)如果n个数的子集的和可以被m整除,则输出YES,否则NO. 分析 分两种情况 ...

  6. 细菌觅食算法-python实现

    BFOIndividual.py import numpy as np import ObjFunction class BFOIndividual: ''' individual of bateri ...

  7. 洛谷P1755 斐波那契的拆分

    题目背景 无 题目描述 已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法 输入输出格式 输入格式: 一个数t,表示有t组数据 接下来t行,每行一个数n(如题) 输出格式: t ...

  8. linux中防CC攻击两种实现方法(转)

    CC攻击就是说攻击者利用服务器或代理服务器指向被攻击的主机,然后模仿DDOS,和伪装方法网站,这种CC主要是用来攻击页面的,导致系统性能用完而主机挂掉了,下面我们来看linux中防CC攻击方法. 什么 ...

  9. WWDC2014总结---For产品经理们

    一年一度的苹果开发者大会WWDC2014,在北京时间6月3日凌晨1点开始了,苹果发布了iOS8.OSX10.10等,苹果比以前更加开放了,网上东西很多很杂,但缺少从产品开发角度来梳理的文章. 我根据这 ...

  10. 使用PPA在Ubuntu上安装php5.4~5.6,7

    使用PPA在Ubuntu上安装php5.4~5.6,7 sudo apt-get install software-properties-common sudo add-apt-repository ...