web-dev-qa-db-ja.com

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

テストサーバーに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などを構成する必要がありますか?

15
IGGt

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でテストします。

14
user801247

/etc/rsyslog.d/の下にあるhaproxyログ設定ファイルを変更して、ファイルを任意のパスにポイントできます。他の配布については不明です。私は、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/ディレクトリに配置されます。

7
Fonzie

ユーザーのホームディレクトリで構成しようとしましたが、haproxyにはユーザーのホームディレクトリにアクセスする権限がないため、問題が発生します。

代わりに別の場所で試して、/var/<directory>にディレクトリを作成してください

log /var/<directory>/ha.log
0
KKD