テストサーバーに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などを構成する必要がありますか?
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でテストします。
/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/
ディレクトリに配置されます。
ユーザーのホームディレクトリで構成しようとしましたが、haproxyにはユーザーのホームディレクトリにアクセスする権限がないため、問題が発生します。
代わりに別の場所で試して、/var/<directory>
にディレクトリを作成してください
log /var/<directory>/ha.log