HAProxyはファイルへのロギングをサポートしていますか?


14

テストサーバーにhaproxyをインストールしました。

syslogではなくローカルファイルにログを書き込む方法はありますか?

これはテスト専用であるため、ポートを開いたり、すべてのテストデータで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 を本当に使用したくないのはなぜですか?Configはそれほどトリッキーではありません。HAProxyログをすべてと混在させたくない場合は、ローカルファシリティをHAProxyに割り当て、syslogデーモンを設定して、これらのエントリを他のsyslogファイル(またはネットワークストリーム)ではなく別のファイルに書き込むことができます。そうしないと。
マイケル-sqlbot

回答:


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が見つかりません」と表示されます。logstashはUbuntuから削除されましたか?
user568021

@ user568021はlogstashがubuntuで提供されていないようですが、エラスティック(logstashのメンテナー)が適切なソースを提供しています。また、logstashはJavaソフトウェアなので、JRE(ubuntuが提供)で実行するjarファイルをダウンロードすることで実行できる場合があります
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

最後にlocal0を与える理由をログに記録しますか?
KKD

1
そのままにしてみましたが、再起動したときにエラーが発生した'log' expects <address> and <facility> as arguments.ため、そこに何かが必要でした。指示によると<facility> must be one of the 24 standard syslog facilities(これは問題の一部かもしれないと思う)
-IGGt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.