Apakah HAProxy mendukung login ke file?


14

Saya baru saja menginstal haproxy di server pengujian saya.

Apakah ada cara untuk membuatnya menulis log ke file lokal, daripada syslog?

Ini hanya untuk pengujian jadi saya tidak ingin memulai membuka port / mengacaukan syslog dengan semua data pengujian saya.

Sayangnya, satu-satunya informasi yang saya dapat temukan berkisar pada masuk ke server syslog.

Saya mencoba menggunakan:

log /home/user/ha.log local0

dalam konfigurasi saya. Tapi itu memberitahuku:

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

Ketika saya memulai kembali. Jadi saya membuat file dengan touch /home/user/ha.logdan memulai kembali pada titik yang saya dapatkan:

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

Apakah ini mungkin, atau apakah saya harus mengkonfigurasi syslog dll untuk melihat data pengujian saya?


2
Saya tidak berpikir HAProxy dapat login ke file, dan saya menduga alasan untuk ini adalah bahwa menulis ke disk adalah operasi pemblokiran. Mengapa Anda benar - benar tidak ingin menggunakan syslog? Config tidak terlalu rumit. Anda dapat menetapkan fasilitas lokal untuk HAProxy dan mengkonfigurasi daemon syslog Anda untuk menulis entri tersebut ke file yang berbeda, dan tidak ke file syslog lainnya (atau aliran jaringan), jika Anda tidak ingin log HAProxy tidak tercampur dengan semuanya lain.
Michael - sqlbot

Jawaban:


14

Haproxy sama sekali tidak mendukung logging ke file. Sebagaimana dinyatakan dalam dokumentasi ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), pernyataan "log" mengambil parameter pertama sebagai alamat. Jika itu file, itu adalah unix socket dan HAProxy akan berbicara dalam format syslog ke socket ini. Haproxy dirancang seperti ini karena responsabilitasnya adalah untuk permintaan proxy, bukan menulis file, ia mendelegasikan penulisan file log ke syslog. Jika Anda tidak ingin main-main dengan mesin Anda, Anda dapat misalnya menginstal logstash dan menjalankan: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' dan menambahkan: log /tmp/haprxoy_log.sock Di haproxy.cfg Anda untuk mengujinya.


Saya mendapatkan "E: Tidak dapat menemukan logstash paket". Apakah logstash dihapus dari ubuntu?
user568021

@ user568021 tampaknya logstash tidak disediakan di ubuntu, tetapi elastis (pengelola logstash) menyediakan sumber yang tepat. Juga, logstash adalah perangkat lunak java, jadi Anda mungkin dapat menjalankannya dengan mengunduh file jar yang menjalankannya dengan JRE (yang disediakan oleh ubuntu)
user801247

7

Anda dapat mengubah file konfigurasi log haproxy di bawah /etc/rsyslog.d/untuk mengarahkan file ke jalur yang Anda sukai. Tidak yakin tentang distribusi lainnya. Bagi saya, saya menggunakan Debian. Saya berubah /etc/rsyslog.d/49-haproxy.confuntuk menunjuk ke /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
&~

Anda juga harus memperbarui jalur log /etc/logrotate.d/haproxyke jalur baru. Sehingga itu akan memutar dan kompres logfile di jalur yang baru dikonfigurasi menggunakan gzip.

Kemudian mulai kembali rsyslog.service.

sudo systemctl restart rsyslog.service

Sekarang haproxy.log.*file akan berada di /var/log/haproxy/direktori.


Bagaimana cara membuat log terpisah untuk kesalahan seperti /var/log/haproxy-errors.log tanpa mempengaruhi haproxy.log asli?
Khurshid Alam

0

Anda telah mencoba mengonfigurasi dalam direktori home pengguna, haproxy tidak memiliki izin untuk mengakses direktori home pengguna, sehingga menyebabkan masalah.

Alih-alih mencoba di lokasi lain, buat direktori di /var/<directory>

log /var/<directory>/ha.log

2
Saya mencoba sudo touch /var/log/ha.logdan menambahkan log /var/log/ha.log local0ke konfigurasi saya, tetapi mendapat kesalahan yang sama seperti di atas connection refused.
IGGt

Log mengapa Anda memberikan local0 pada akhirnya?
KKD

1
Saya mencoba meninggalkannya, tetapi ketika saya memulai kembali saya mendapatkan kesalahan 'log' expects <address> and <facility> as arguments.sehingga diperlukan sesuatu di sana. Menurut instruksi <facility> must be one of the 24 standard syslog facilities(yang saya pikir mungkin menjadi bagian dari masalah)
IGGt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.