Haproxy günlük mesajlarını / var / log / syslog dışında tutmak nasıl


29

Bu makaledeki ipuçlarını kullanarak rsyslogd üzerinden haproxy günlüğü oluşturdum ve her şey yolunda görünüyor. Günlük dosyaları günlük mesajlarını alır.

Ancak, haproxy'den gelen her log mesajı da ortaya çıkıyor /var/log/syslog. Bu, sunucu bir kez yayınlandığında, syslog'un haproxy log mesajları ile çalıştırılacağı için oldukça yararsız olacağı anlamına gelir.

Bu mesajları filtrelemek istiyorum /var/log/syslog. Rsyslogd dökümantasyonunun üzerinden geçtikten sonra dosyayı değiştirmeye çalıştım /etc/rsyslog.d/50-default.conf:

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

Ben sadece ;haproxy.noneparçayı ekledim . Rsyslogd yeniden başlatıldıktan sonra değişikliklerimi geri alana kadar tamamen çalışmayı durdurdu.

Neyi yanlış yapıyorum?

Yanıtlar:


26

Ayrıca, başka bir kütüğe girmemeleri için aşağıdakileri yapabilirsiniz:

local0.*                        -/var/log/haproxy.log
& ~

& ~Aracı olmadığı kuralların geri kalanı için başka bir yerde yukarıdaki satırda eşleşti neyi koymak.


Teşekkürler. Bu, ana konfigürasyonu düzenlemek zorunda kalmaktan daha anlamlı görünmektedir.
itsadok,

13
Bunu yaparsanız, local0. * Satırınızın /etc/rsyslog.d/50-default.conf dosyasındaki " . " Satırından önce işlenmesi gerektiğini unutmayın. /Etc/rsyslog.d/haproxy.conf adlı bir dosya oluşturdum, haproxy'ye özel günlüğe kaydetme yapılandırmamı içerdim, ama sonunda "& ~" olmasına rağmen syslog'a giriş yaptım. Bunun nedeni (elbette) 50-default.conf'un haproxy.conf'dan önce yüklenmesi, böylece " . " Yakalamasının "local0 . *" Satırımdan önce eşleşmesidir . Çözüm haproxy'ye özel dosyamı /etc/rsyslog.d/49-haproxy.conf olarak değiştirmekti
Giles Thomas

1
Küçük bir güncelleme FYIrsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD

Bu, & stopbunun yerine kullanımını tartışır & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html .
slm

14

Kullanımı & ~rsyslogd 'un v7'sinde kullanımdan kaldırılmıştır ve & stopbunun yerine kullanmanız önerilir . Bu konuda v7 uyumluluk sayfasının bu bölümünde daha fazla bilgi edinebilirsiniz .

omruleset ve discard (~) eylemi kullanımdan kaldırıldı

Her ikisi de çalışmaya devam eder, ancak daha iyi alternatiflerle değiştirilmiştir.

Atma işlemi (tilde karakteri) “stop” RainerScript yönergesi ile değiştirildi. Daha sezgisel olarak kabul edilir ve biraz daha iyi performans sunar.

Omruleset modülü “call” RainerScript yönergesi ile değiştirildi. Çağrı, bir alt rutin gibi bir kural kümesi yürütme iznini verir ve bunu omruleset'in yaptığından çok daha yüksek performansla yapar. Omruleset'in zaman uyumsuz bir sıraya girebileceğini unutmayın. Bu, istenen bir etkiden çok bir taraftı ve call deyimi tarafından desteklenmiyor. Bu etkiye ihtiyaç duyulursa, çağrılan kural kümesi eylemlerini eşzamansız olarak çalıştırarak basitçe simüle edilebilir (her durumda bununla başa çıkmak için doğru olan budur).

Kullanımdan kaldırılan modüllerin kullanıldığında uyarı mesajları verdiğini unutmayın. Yapının kullanımdan kaldırıldığını ve yerine hangi ifadenin kullanılacağını söylerler. Bu işlemleri etkilemez: her iki modül de hala tamamen çalışır durumdadır ve v7 zaman dilimi içinde kaldırılmayacaktır.

Yani HAProxy için bunun gibi bir şey:

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

Nasıl çalıştığıyla ilgili olarak & stop, rsyslogd'a daha önce eşleşen kurallara uyan ek mesajları atmasını söyler. Bu kuralın daha erken alınmasını /etc/rsyslog.d/haproxy.confsağlamak için dosyanın adını ile olarak değiştirebilirsiniz /etc/rsyslog.d/00-haproxy.conf.


3

Tamam, anladım. Bu benim ne /etc/rsyslog.d/20-haproxy.confgörünüyor gibi:

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

Satırı şu şekilde değiştirdim 50-default.conf:

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

Ve şimdi istediğimi yapıyor gibiyim.


Genellikle yükseltme / mülkiyet sorunları yarattığı için diğer paketler tarafından oluşturulan yapılandırma dosyalarını DEĞİŞTİRMEME tercih edilir. Bu bir kerelik bir kar tanesi sunucusuysa, sorun değil, ancak otomatik dağıtma için 50-default.conf dosyasını değiştirmek genellikle "kötü bir şey" olur.
Bruce Edge

2

Haproxy günlüğü için daha iyi bir çözüm var.

  • HAproxy chroot ile çalışır, böylece erişemez /dev/log
  • Resmi el kitabına göre rsyslog ağ soketini dinleyecek şekilde yapılandırılmalıdır:

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

Ancak bunun için sadece rsyslog soketlerini kullanabilirsiniz:

rsyslog.d / haproxy.conf:

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg:

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......

1

Dosyanın sıralamasını bozmamayı tercih ederim, bu yüzden bunun yerine bir local0.none ekledim . satır girişi Config şuna benziyor:

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(CentOS 7'de test edilmiştir)

Umarım yardımcı olur!

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.