HAProxy是否支持记录到文件?


14

我刚刚在测试服务器上安装了haproxy

有没有办法使它的日志写入本地文件,而不是syslog?

这仅用于测试,因此我不想开始使用我的所有测试数据打开端口/使系统日志混乱。

不幸的是,我能找到的所有信息都与登录到syslog服务器有关。

我尝试使用:

log /home/user/ha.log local0

在我的配置中。但这告诉我:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)

当我重新启动。因此,我使用创建了文件,touch /home/user/ha.log然后重新启动:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)

这可能吗,还是我必须配置syslog等才能查看测试数据?


2
我认为HAProxy无法登录到文件,并且我怀疑这样做的原因是对磁盘的写操作是阻塞操作。为什么您真的不想使用syslog?配置并不是那么棘手。如果您不希望将HAProxy日志与所有内容混用,则可以为HAProxy分配本地功能,并配置syslog守护程序以将这些条目写入其他文件,而不是其他syslog文件(或网络流)。其他。
Michael-sqlbot

Answers:


14

Haproxy根本不支持记录文件。如文档(https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log)中所述,“ log”语句将地址作为第一个参数。如果这是一个文件,则它是一个Unix套接字,HAProxy将以syslog格式向该套接字讲话。Haproxy之所以这样设计,是因为它的职责是代理请求,而不是写文件,它将日志文件的写入委托给syslog。如果您不想弄乱机器,可以例如安装logstash并运行: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' log /tmp/haprxoy_log.sock 在haproxy.cfg中添加: 进行测试。


我收到“ E:无法找到软件包Logstash”。是否从Ubuntu删除了logstash?
user568021 '19

@ user568021似乎ubuntu中没有提供logstash,但是弹性(logstash的维护者)提供了一个合适的来源。另外,logstash是Java软件,因此您可以通过下载运行JRE的jar文件(由ubuntu提供)来运行它
user801247

7

您可以更改下的haproxy日志配置文件,/etc/rsyslog.d/以将文件指向您喜欢的路径。不确定其他分布。对我来说,我正在使用Debian。我改变/etc/rsyslog.d/49-haproxy.conf指向/var/log/haproxy/haproxy.log

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy/haproxy.log
&~

您还应该将日志路径更新/etc/logrotate.d/haproxy为新路径。因此它将使用旋转并压缩新配置路径中的日志文件gzip

然后重新启动rsyslog.service。

sudo systemctl restart rsyslog.service

现在haproxy.log.*文件将在/var/log/haproxy/目录中。


如何在不影响原始haproxy.log的情况下为/var/log/haproxy-errors.log之类的错误创建单独的日志?
库尔希德·阿拉姆

0

您尝试在用户主目录中进行配置,haproxy没有访问用户主目录的权限,因此会导致问题。

而是尝试在其他位置,在以下位置创建目录 /var/<directory>

log /var/<directory>/ha.log

2
我尝试sudo touch /var/log/ha.log并添加log /var/log/ha.log local0到我的配置中,但是遇到了与上述相同的错误connection refused
IGGt '16

在日志中,为什么最后要给local0?
KKD

1
我尝试将其遗漏,但是当我重新启动时出现错误,'log' expects <address> and <facility> as arguments.因此在那里需要一些东西。根据指示<facility> must be one of the 24 standard syslog facilities(我认为这可能是问题的一部分)
IGGt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.