在理解haproxy的log设置原理之前,先来了解一下linux中的系统日志服务,系统日志服务和其他服务一样,也有启动,停止,配置等。
配置文件:
/etc/rsyslog.conf
配置目录:
/etc/rsyslog.d/
也是在rsyslog.conf中include下rsyslog.d下的所有文件
启动,重启,停止命令:
systemctl start rsyslog
systemctl stop rsyslog
systemctl restart rsyslog
命令logger的使用:
logger [option] [message]
options:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
配置中前半部分表示设备(多个设备用,分割,也支持×写法,用来匹配多个设备),后半部分表示日志输出路径,这里的设备可以理解为消息的标签或消息的类别
facility-设备
auth: 用户授权
authpriv: 授权和安全
cron: 计划任务
daemon: 系统守护进程
kern: 与内核有关的信息
lpr 与打印服务有关的信息
mail 与电子邮件有关的信息
news 来自新闻服务器的信息
syslog 由syslog生成的信息
user 用户的程序生成的信息,默认
uucp 由uucp生成的信息
local0~7 用来定义本地策略
level-等级
alert 需要立即采取动作
crit 临界状态
debug 调试
emerg 系统不可用
err 错误状态
error 错误状态
info 正常消息
notice 正常但是要注意
Tips 1:等级自下而上,如果设置notice将获得所有级别的消息,如果设置error,将获得err到alert级别的消息。
Tips 2:从这一行设置中 .info;mail.none;authpriv.none;cron.none /var/log/messages得知,所有.info的消息都会写入到/var/log/message。
example:
# vim /etc/rsyslog.conf
local0.* /var/log/haproxy/haproxy.log
# 表示将local0的所有消息写入到文件 /var/log/haproxy/haproxy.log
# systemctl restart rsyslog #重启rsyslog服务
测试:
logger -i -t "haproxy" -p local0.notice "test,test,test"
定义log的使用格式:
log [len ] [format ] [max level [min level]]
#支持global,defaults,frontend,backend,listen
log支持多条,在配置中可以配置多个log,例如配置access,error2个日志
日志的级别:emerg alert,crit err warning notice info debug
其中 adderss和facility是必选的。
address:
支持ipv4,socket,不一定是本地ip
facility:
同上
len:
日志的最大长度,如果实际日志消息大于这个值,将被截取,默认1024,该值区间:80-65535
format:
日志格式规范,可选择rfc3164,rfc5424,默认rfc3164
max,min:
设置最小级别的日志,最大级别的日志
example:
log 192.168.80.110 local0
#最简单的配置,此时len默认1024,format默认rfc3164,记录所有的日志级别。
log 192.168.80.110:514 local0 warning
#将消息发送给514端口(UDP)。记录warning级别以上的日志
log 192.168.80.110 local0 warning err
#记录warning到err级别间的日志
log 192.168.80.110 local0 err err
#只记录err级别的日志
log 192.168.80.110:514 len 80 format rfc5424 local0 err err
#截取16个字符长度,使用rfc5424消息规范,在设备local0只记录err级别的信息
log 192.168.80.110 local0
#记录access的日志
log 192.168.80.121 local1 emerg notice
#记录error的日志,包括notice和warning
log相关配置:
log-send-hostname 仅支持global
log-send-hostname www.taisha.org
#Feb 15 09:54:41 *www.taisha.org* haproxy[5067]: Proxy webserver started.
log-tag 支持global、defaults、frontend 、backend、listen
log-tag taisha
#Feb 15 09:54:41 www.taisha.org *taisha*[5067]: Proxy admin_stats started.
log global 支持defaults、frontend、backend 、listen
当前模块使用global中设置的日志格式。
no log 支持defaults、frontend、backend 、listen
禁止写日志