在理解Haproxy的Log设置原理之前,先来了解下Linux中的系统日志服务。系统日志服务和其他服务一样(如web服务nginx、httpd),也有启动、停止、配置等,运行原理这里不详细介绍了。
下面以centos7为例:
配置
配置文件:/etc/rsyslog.conf 配置目录:/etc/rsyslog.d/ 也是在rsyslog.conf中include下rsyslog.d下的所有文件
启动、重启、停止命令
systemctl start rsyslog systemctl stop rsyslog systemctl restart rsyslog
命令logger的使用:
logger [options] [messages]
options:
-d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程ID -f, --file file_name 记录特定的文件 -h, --help 显示帮助文本并退出 -n, --server 写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程 -P, --port port_num 使用指定的UDP端口。默认的端口号是514 -p, --priority priority_level 指定输入消息的优先级,优先级可以是数字或者指定为 "facility.level" 的格式。 比如:"-p local3.info " local3 这个设备的消息级别为info。默认级别是 "user.notice" -s, --stderr 输出标准错误到系统日志。 -t, --tag tag 指定标记记录 -u, --socket socket 写入指定的socket,而不是到内置系统日志例程。 -V, --version 现实版本信息并退出
在-p的选项中,提到 facility.level (设备.级别) ,这个是rsyslog中比较重要的概念的,在配置文件中,也可以看到如下的这些代码:
*.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。
了解以上这些之后,我们写个测试的例子:
在配置中增加:
# vim /etc/rsyslog.conf local0.* /var/log/haproxy/haproxy.log # 表示将local0的所有消息写入到文件 /var/log/haproxy/haproxy.log # systemctl restart rsyslog #重启rsyslog服务
或者在rsyslog.d/下新增配置文件
#vim /etc/rsyslog.d/haproxy.conf $ModLoad imudp $UDPServerRun 514 local0.* /var/log/haproxy/haproxy.log &-
Tips 1:在上面的代码行中有个特殊的符号:&- ,这个到底是做什么用的呢?从上面的规则中,我们了解到日志在写入文件的同时、也会写入message,但作为haproxy来说,仅有一份日志已经足够,如果写入两份,造成系统性能下降,同时占用大量的硬盘空间。
模拟发送日志:
# logger -i -t "haproxy" -p local0.notice "test,test,test"
查看日志内容:
# tail -f /var/log/haproxy/haproxy.log Feb 15 05:30:35 localhost haproxy[4640]: test,test,tes
有了以上的知识,下面再来看haproxy的日志设置,就非常容易了。
Pingback引用通告: Haproxy中的Log的相关配置详解 | 精彩每一天
Pingback引用通告: php-fpm的配置详解 | 精彩每一天