HAProxy bir dosyaya günlüğe kaydetmeyi destekliyor mu?


14

Test sunucuma haproxy'yi yeni yükledim .

Günlüklerini syslog yerine yerel bir dosyaya yazmanın bir yolu var mı?

Bu sadece test içindir, bu yüzden tüm test verilerimle bağlantı noktalarını açmaya / syslog'u karıştırmaya başlamak istemiyorum.

Ne yazık ki, bulabildiğim tek bilgi bir syslog sunucusuna giriş yapmakla ilgili.

Kullanmayı denedim:

log /home/user/ha.log local0

benim yapılandırma. Ama bu bana şunları söyledi:

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

Yeniden başladığımda. Bu yüzden dosyayı oluşturdum touch /home/user/ha.logve hangi noktada aldım:

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

Bu mümkün mü yoksa test verilerimi görmek için syslog vb. Yapılandırmam gerekecek mi?


2
HAProxy bir dosyaya oturum açabilirsiniz sanmıyorum ve bunun nedeni diske yazma engelleme işlemi olmasıdır. Neden gerçekten syslog kullanmak istemiyorsunuz? Config o kadar da zor değil. HAProxy günlüklerinin her şeye karışmamasını istemiyorsanız, HAProxy'ye yerel bir tesis atayabilir ve syslog arka plan programınızı diğer syslog dosyalarına (veya ağ akışlarına) değil, bu girdileri farklı bir dosyaya yazacak şekilde yapılandırabilirsiniz. Başka.
Michael - sqlbot

Yanıtlar:


14

Haproxy, dosyaların günlüğe kaydedilmesini desteklemez. Belgelerde ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ) belirtildiği gibi , "log" ifadesi ilk parametre olarak bir adres alır. Bu bir dosyaysa, bir unix soketi ve HAProxy bu sokete syslog biçiminde konuşacaktır. Haproxy bu şekilde tasarlanmıştır, çünkü sorumluluğu dosya yazma yerine proxy isteklerini vermektir, günlük dosyalarının yazılmasını syslog'a devretir. Makinenizle uğraşmak istemiyorsanız, örneğin logstash yükleyebilir ve çalıştırabilirsiniz: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' ve şunu ekleyin: log /tmp/haprxoy_log.sock haproxy.cfg dosyasında test etmek için.


"E: Paket logstash bulunamadı." Logstash ubuntu'dan kaldırıldı mı?
user568021

@ user568021 ubuntu'da logstash sağlanmadı, ancak elastik (logstash'ın koruyucusu) uygun bir kaynak sağlar. Ayrıca, logstash bir java yazılımıdır, bu yüzden bir JRE (ubuntu tarafından sağlanan) ile çalışan bir jar dosyasını indirerek çalıştırabilirsiniz
user801247

7

/etc/rsyslog.d/Dosyayı istediğiniz yola yönlendirmek için haproxy log config dosyasını değiştirebilirsiniz . Diğer dağıtımlardan emin değilim. Benim için Debian kullanıyorum. İşaret /etc/rsyslog.d/49-haproxy.confetmek için değiştim /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
&~

Ayrıca günlük yolunu /etc/logrotate.d/haproxyyeni yola da güncelleştirmeniz gerekir . Böylece günlük dosyasını kullanarak yeni yapılandırılmış yolda döndürecek ve sıkıştıracaktır gzip.

Ardından rsyslog.service'i yeniden başlatın.

sudo systemctl restart rsyslog.service

Şimdi haproxy.log.*dosya /var/log/haproxy/dizinde olacak .


/Var/log/haproxy-errors.log gibi hatalar için özgün haproxy.log dosyasını etkilemeden nasıl ayrı bir günlük oluşturabilirim?
Khurshid Alam

0

Kullanıcı ana dizininde yapılandırmaya çalıştınız, haproxy kullanıcının ana dizinine erişim iznine sahip değil, bu da soruna neden oluyor.

Bunun yerine başka bir yerde deneyin, dizin oluşturun /var/<directory>

log /var/<directory>/ha.log

2
Denedim sudo touch /var/log/ha.logve log /var/log/ha.log local0yapılandırmamı ekledim , ancak yukarıdakiyle aynı hatayı aldım connection refused.
IGGt

Günlükte neden local0 veriyorsunuz?
KKD

1
Dışarıda bırakmayı denedim, ama yeniden başlattığımda hatayı aldım, 'log' expects <address> and <facility> as arguments.bu yüzden orada bir şey gerekli. Talimatlara göre <facility> must be one of the 24 standard syslog facilities(ki bu sorunun bir parçası olabilir)
IGGt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.