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. 转-JS子窗口创建父窗口操作父窗口

    Javascript弹出子窗口  可以通过多种方式实现,下面介绍几种方法 (1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 其用法为: window ...

  2. shell--题目

    1.有一个文件,里面有二列,第一列ip地址,第二列是时间,同一个ip可能出现多次,但时间不同. 文件类似下面的样子: 192.168.1.2              13:10 192.127.12 ...

  3. POJ1941 The Sierpinski Fractal

    Description Consider a regular triangular area, divide it into four equal triangles of half height a ...

  4. Linux的学习路线图

    一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件包的常用安装方法 4. 学习添加外 ...

  5. 基于redis分布式缓存实现

    Redis的复制功能是完全建立在之前我们讨论过的基 于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你 的 ...

  6. fiddler 挂载 JS文件

    有时候,网站 JS 有问题,或者我们想调试JS,就修改了JS,,然后希望它在本地能与网站一起运行,就需要用到 挂载JS了

  7. ci为什么必须得写构造函数

    构造函数 如果要在你的任意控制器中使用构造函数的话,那么必须在里面加入下面这行代码: parent::__construct(); 这行代码的必要性在于,你此处的构造函数会覆盖掉这个父控制器类中的构造 ...

  8. pyenv 以及 virtualenv

    244 pyenv global 3.5.1 245 which python 246 python 247 pip install virtualenv 248 ls 249 pwd 250 ls ...

  9. WINDOWS渗透与提权总结(2)

    vbs 下载者: 01 1: 02   03 echo Set sGet = createObject("ADODB.Stream") >>c:\windows\cft ...

  10. ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法

    这个编辑器按脚本分主要有4个版本,ASP/ASPX/PHP/JSP 每个版本都有可以利用的漏洞.判断网站是否使用了eWebEditor查看程序源代码,看看源码中是否存在类似”ewebeditor.as ...