Cara menyimpan pesan log haproxy dari / var / log / syslog

29

Saya mengatur logging haproxy melalui rsyslogd menggunakan tips dari artikel ini , dan semuanya tampaknya berfungsi dengan baik. File log mendapatkan pesan log.

Namun, setiap pesan log dari haproxy juga muncul di /var/log/syslog. Ini berarti bahwa setelah server ditayangkan, syslog akan sangat tidak berguna, karena akan ditabrak dengan pesan log haproxy.

Saya ingin memfilter pesan-pesan itu dari /var/log/syslog. Setelah membaca dokumentasi rsyslogd, saya mencoba mengubah file /etc/rsyslog.d/50-default.confdengan demikian:

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

Saya hanya menambahkan ;haproxy.nonebagian. Setelah memulai ulang rsyslogd berhenti bekerja sepenuhnya sampai saya mengembalikan perubahan saya.

Apa yang saya lakukan salah?

itsadok
sumber

Jawaban:

26

Anda juga bisa melakukan hal berikut yang akan membuatnya sehingga mereka tidak masuk log lain:

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

The & ~berarti tidak menempatkan apa yang cocok di baris di atas tempat lain untuk sisa aturan.

Kyle Brandt
sumber
Terima kasih. Ini tampaknya lebih masuk akal daripada harus mengedit konfigurasi utama.
itsadok
13
Perlu dicatat bahwa jika Anda melakukan ini, baris local0. * Anda harus diproses sebelum baris " . " Di /etc/rsyslog.d/50-default.conf. Saya membuat file bernama /etc/rsyslog.d/haproxy.conf untuk memuat konfigurasi logging haproxy-spesifik saya, tetapi logon ke syslog meskipun memiliki "& ~" di bagian akhir. Ini karena (tentu saja) 50-default.conf dimuat sebelum haproxy.conf sehingga catchall " . " Telah cocok sebelum baris "local0. *" Saya. Solusinya adalah mengubah nama file spesifik haproxy saya ke /etc/rsyslog.d/49-haproxy.conf
Giles Thomas
1
FYI pembaruan kecilrsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD
Ini membahas penggunaan & stopbukannya & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html .
slm
14

Penggunaan & ~sudah ditinggalkan di v7 dari rsyslogd, dan Anda disarankan untuk menggunakannya & stop. Anda dapat membaca lebih lanjut tentang hal ini di bagian ini pada halaman kompatibilitas v7 .

tindakan omruleset dan buang (~) sudah usang

Keduanya terus bekerja, tetapi telah digantikan oleh alternatif yang lebih baik.

Tindakan buang (karakter tilde) telah digantikan oleh arahan RainerScript "stop". Itu dianggap lebih intuitif dan menawarkan kinerja yang sedikit lebih baik.

Modul omruleset telah digantikan oleh perintah "panggilan" RainerScript. Panggilan memungkinkan untuk mengeksekusi aturan seperti subrutin, dan melakukannya dengan kinerja yang jauh lebih tinggi daripada yang dilakukan omruleset. Perhatikan bahwa omruleset dapat dijalankan dari antrian async. Ini lebih merupakan sisi daripada efek yang diinginkan dan tidak didukung oleh pernyataan panggilan. Jika efek itu diperlukan, itu hanya dapat disimulasikan dengan menjalankan tindakan aturan yang disebut secara serempak (apa pun cara yang tepat untuk menangani ini).

Perhatikan bahwa modul yang sudah usang mengeluarkan pesan peringatan saat sedang digunakan. Mereka mengatakan bahwa konstruksinya sudah usang dan pernyataan mana yang akan digunakan sebagai pengganti. Ini tidak mempengaruhi operasi: kedua modul masih beroperasi penuh dan tidak akan dihapus dalam jangka waktu v7.

Jadi untuk HAProxy sesuatu seperti ini sebagai gantinya:

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

Mengenai cara kerjanya, & stopmemberitahu rsyslogd untuk membuang pesan tambahan yang cocok dengan aturan yang cocok sebelumnya hingga saat ini. Untuk menjamin bahwa aturan ini diambil sejak dini, Anda dapat mengubah nama file dari /etc/rsyslog.d/haproxy.confmenjadi /etc/rsyslog.d/00-haproxy.conf.

slm
sumber
3

Ok, saya sudah menemukan jawabannya. Seperti inilah /etc/rsyslog.d/20-haproxy.confpenampilan saya :

$ModLoad imudp
$UDPServerRun 514

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

Saya mengubah jalur 50-default.confmenjadi:

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

Dan sekarang tampaknya melakukan apa yang saya inginkan.

itsadok
sumber
Secara umum lebih baik untuk TIDAK memodifikasi file konfigurasi yang dibuat oleh paket lain karena hal itu menciptakan masalah upgrade / kepemilikan. Jika ini adalah server snowflake satu kali, baik-baik saja, tetapi untuk penyebaran otomatis, memodifikasi 50-default.conf umumnya merupakan "hal buruk".
Bruce Edge
2

Ada solusi yang lebih baik untuk pencatatan haproxy.

  • HAproxy berjalan dalam chroot sehingga tidak bisa diakses /dev/log
  • Menurut rsyslog manual resmi perlu dikonfigurasi untuk mendengarkan soket jaringan:

    # 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
    

Tetapi Anda hanya dapat menggunakan soket rsyslog untuk itu:

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
          .......
pengguna320813
sumber
1

Saya lebih suka tidak mengacaukan pemesanan file jadi saya menambahkan local0.none ke . entri baris. Konfigurasi terlihat seperti:

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

local2.*                                                 /var/log/haproxy.log

(Diuji pada CentOS 7)

Semoga itu bisa membantu!

mgna20
sumber