Làm cách nào để giữ thông điệp nhật ký haproxy khỏi / var / log / syslog


29

Tôi đã thiết lập đăng nhập haproxy thông qua rsyslogd bằng các mẹo từ bài viết này và mọi thứ dường như đang hoạt động tốt. Các tập tin nhật ký nhận được thông điệp tường trình.

Tuy nhiên, mọi thông điệp tường trình từ haproxy cũng hiển thị tại /var/log/syslog. Điều này có nghĩa là một khi máy chủ hoạt động, syslog sẽ khá vô dụng, vì nó sẽ được chạy với các thông điệp nhật ký haproxy.

Tôi muốn lọc ra những tin nhắn từ /var/log/syslog. Sau khi xem qua tài liệu rsyslogd, tôi đã cố gắng thay đổi tệp /etc/rsyslog.d/50-default.confnhư vậy:

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

Tôi chỉ đơn giản là thêm ;haproxy.nonemột phần. Sau khi khởi động lại rsyslogd, nó ngừng hoạt động hoàn toàn cho đến khi tôi hoàn nguyên các thay đổi của mình.

Tôi đang làm gì sai?

Câu trả lời:


26

Bạn cũng có thể thực hiện các thao tác sau để thực hiện điều đó để chúng không đi vào bất kỳ nhật ký nào khác:

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

& ~nghĩa là không đặt những gì khớp trong dòng trên bất kỳ nơi nào khác cho phần còn lại của quy tắc.


Cảm ơn. Điều này dường như có ý nghĩa hơn là phải chỉnh sửa cấu hình chính.
itadok

13
Đáng lưu ý rằng nếu bạn làm điều này, dòng local0. * Của bạn phải được xử lý trước dòng " . " Trong /etc/rsyslog.d/50-default.conf. Tôi đã tạo một tệp có tên /etc/rsyslog.d/haproxy.conf để chứa cấu hình ghi nhật ký cụ thể haproxy của tôi, nhưng nó đã đăng nhập vào syslog mặc dù cuối cùng có "& ~". Điều này là do (tất nhiên) 50-default.conf được tải trước haproxy.conf nên hàm " . " Được khớp trước dòng "local0. *" Của tôi. Giải pháp là đổi tên tập tin cụ thể haproxy của tôi thành /etc/rsyslog.d/49-haproxy.conf
Giles Thomas

1
FYI một bản cập nhật nhỏrsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD

Điều này thảo luận về việc sử dụng & stopthay vì & ~: rsyslog.com/doc/v8-urdy/compabilities/v7compabilities.html .
slm

14

Việc sử dụng & ~đã không được chấp nhận trong v7 của rsyslogd và bạn được khuyến khích sử dụng & stopthay thế. Bạn có thể đọc thêm về nó trong phần này của trang tương thích v7 .

hành động omruleset và vứt bỏ (~) không được chấp nhận

Cả hai tiếp tục làm việc, nhưng đã được thay thế bằng các lựa chọn thay thế tốt hơn.

Hành động loại bỏ (ký tự dấu ngã) đã được thay thế bằng chỉ thị của Stop stop Rain RainerScript. Nó được coi là trực quan hơn và cung cấp hiệu suất tốt hơn một chút.

Mô-đun omruleset đã được thay thế bằng chỉ thị của cuộc gọi của Rain RainerScript. Gọi giấy phép để thực thi một quy tắc như chương trình con, và làm như vậy với hiệu suất cao hơn nhiều so với omruleset đã làm. Lưu ý rằng omruleset có thể được chạy khỏi hàng đợi không đồng bộ. Đây là một khía cạnh hơn là một hiệu ứng mong muốn và không được hỗ trợ bởi câu lệnh gọi. Nếu hiệu ứng đó là cần thiết, đơn giản là nó có thể được mô phỏng bằng cách chạy các hành động được gọi là quy tắc không đồng bộ (trong mọi trường hợp là cách đúng để xử lý việc này).

Lưu ý rằng các mô-đun không dùng sẽ phát ra các thông báo cảnh báo khi được sử dụng. Họ nói rằng cấu trúc không được dùng nữa và câu lệnh nào sẽ được sử dụng để thay thế. Điều này không ảnh hưởng đến hoạt động: cả hai mô-đun vẫn hoạt động đầy đủ và sẽ không bị xóa trong khung thời gian v7.

Vì vậy, đối với HAProxy một cái gì đó như thế này thay thế:

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

Về cách thức hoạt động của nó, & stoprsyslogd sẽ loại bỏ bất kỳ thông báo bổ sung nào phù hợp với các quy tắc phù hợp trước đó cho đến thời điểm này. Để đảm bảo rằng quy tắc này được chọn sớm, bạn có thể thay đổi tên của tệp từ /etc/rsyslog.d/haproxy.confthành /etc/rsyslog.d/00-haproxy.conf.


3

Ok, tôi đã tìm ra nó. Đây là những gì tôi /etc/rsyslog.d/20-haproxy.conftrông giống như:

$ModLoad imudp
$UDPServerRun 514

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

Tôi đã thay đổi dòng trong 50-default.conf:

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

Và bây giờ nó dường như đang làm những gì tôi muốn.


Nói chung, KHÔNG nên sửa đổi các tệp cấu hình được tạo bởi các gói khác vì nó tạo ra các vấn đề về nâng cấp / quyền sở hữu. Nếu đây là máy chủ bông tuyết một lần, dù sao cũng được, nhưng đối với việc triển khai tự động, sửa đổi 50-default.conf nói chung là một "điều tồi tệ".
Bruce Edge

2

Có một giải pháp tốt hơn để đăng nhập haproxy.

  • HAproxy chạy trong chroot nên không thể truy cập /dev/log
  • Theo hướng dẫn chính thức, rsyslog cần được cấu hình để nghe ổ cắm mạng:

    # 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
    

Nhưng bạn chỉ có thể sử dụng ổ cắm rsyslog cho điều đó:

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

Tôi không muốn lộn xộn với thứ tự của tập tin vì vậy thay vào đó tôi thêm một local0.none vào . nhập dòng. Cấu hình trông như:

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

local2.*                                                 /var/log/haproxy.log

(Đã thử nghiệm trên CentOS 7)

Mong rằng sẽ giúp!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.