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.