前一篇文章介绍了haproxy日志配置的方法,但是使用过程碰到两个问题。第一个日志会重复记录到/var/log/messages和/var/log/haproxy.log两个文件,第二个haproxy打开check检查,后端服务器关闭后会有错误日志输出到终端。
例如:
“Message from syslogd@zhangn.com at Jul 9 14:39:18 ... haproxy[4403]: backend server1 has no server available!”。
一开始博主一直在haproxy中找相关文档的配置,但其实这两个问题都是rsyslog错误配置引起的。
日志重复记录
打开/var/log/messages日志,发现大量haproxy的info级别日志被重复记录。打开rsyslog的配置文件 /etc/rsyslog.conf,发现类似如下行:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info:表示所有设备的info级别日志都会记录到messages,所以就难怪会重复记录haproxy日志了。那么可以通过修改这条规则来排除haproxy设备的记录。
*.info;mail.none;authpriv.none;cron.none;local3.!info /var/log/messages
假设haproxy日志设备名是local3,那么local3.!info就会把haproxy的日志排除。重复记录的问题解决。
错误日志输出到终端
这个问题其实很影响使用体验,你可能好好的在终端输入命令,突然跳出一句“Message from syslogd@zhangn.com at Jul 9 14:39:18 … haproxy[4403]: backend server1 has no server available!”,只能ctrl+c了。那么应该如何关闭haproxy错误日志输出到console终端呢?其实还是rsyslog的配置。
依然打开 /etc/rsyslog.conf,找到
# Everybody gets emergency messages *.emerg :omusrmsg:*
omusrmsg会通知紧急消息给所有用户,参考:https://www.rsyslog.com/doc/v8-stable/configuration/modules/omusrmsg.html,所以当haproxy后端server无法访问的时候,就会通过emerg紧急级别通知到终端用户。
如果你和我一样不想这样被打开,那么可以把错误日志写入到messages中,例如:
# Everybody gets emergency messages #*.emerg :omusrmsg:* *.emerg /var/log/messages
最后,修改完两处配置后,重启rsyslog服务后即可生效。
haproxy日志开启配置:http://blog.nbqykj.cn/?p=3256.html