Haproxy日志配置

时间:2023-03-09 00:01:23
Haproxy日志配置

haproxy在默认情况不会记录日志,除了在haproxy.conf中的global段指定日志的输出外,还需要配置系统日志的配置文件。下面以centos6.4为例,haproxy使用系统自带的rpm报1.4版本

编辑/etc/haproxy/haproxy.conf

default处添加,如下红色部分,记住不要添加到global处,否则输出日志会有重复的现象,一个请求输出两行相同的日志内容。

defaults
  mode http
  log global
  log 127.0.0.1 local0
  #local0是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的日志级别

编辑系统日志配置

# cat /etc/rsyslog.conf
默认有下面的设置,会读取 /etc/rsyslog.d/*.conf目录下的配置文件
$IncludeConfig /etc/rsyslog.d/*.conf

为haproxy创建一个独立的配置文件

# vim  /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 0.0.0.0
local0.* /var/log/haproxy.log
#如果不加下面的的配置则除了在/var/log/haproxy.log中写入日志外,也会写入message文件
&~

配置rsyslog的主配置文件,开启远程日志

# vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS=”-c -r -m ″
#-c 使用兼容模式,默认是 -c
#-r 开启远程日志
#-m 标记时间戳。单位是分钟,为0时,表示禁用该功能

重启haproxy和rsyslog服务

# /etc/init.d/rsyslog restart
# /etc/init.d/haproxy restart

---------------------------------------------------------------------------------------------------------------------------------------------------------------

日志查询

按时间范围查询:(注意:时间点要确实存在,才可查找时间范围)

其实就是打印文件中,正则匹配 Aug 16 16:25:54 和 Aug 16 16:35:54 这两行之间的所有的内容

# cat /var/log/haproxy.log | sed -n '/Aug 16 16:25:54/,/Aug 16 16:35:54/p'|awk '{print $6}'|cut -d : -f1|sort| uniq -c |sort -k1,1nr|more

再比如:时间字段内容为 “[15/Apr/2019:11:45:25 +0800]”时,也可以进行查询

# cat /var/log/nginx/log | sed -n '/15\/Apr\/2019:11:45:23/,/15\/Apr\/2019:11:45:29/p'

汇总求和:

# cat haproxy.log-20170102 | sed -n '/Jan  1 14:00:00/,/Jan  1 14:05:00/p'|grep 'packet/index'|awk '{print $6}'|cut -d : -f1|sort| uniq -c |sort -k1,1nr|awk '{ SUM += $1 } END { print SUM }'  汇总求和