Làm thế nào để lọc tin nhắn rsyslog theo thẻ


12

Tôi có một số ứng dụng và tập lệnh mà tôi muốn chuyển hướng đầu ra sang tập tin tùy chỉnh.

Tôi khởi chạy các ứng dụng đó bằng cách sử dụng

command | logger -t TAG

Tôi muốn lọc các tin nhắn này dựa trên thẻ của chúng và chuyển hướng chúng đến các tệp khác nhau. Tôi không muốn sử dụng chuyển hướng bash vì các ứng dụng đó chủ yếu là quá trình chạy dài và cần xoay vòng nhật ký thích hợp.

Tôi đã cố gắng thêm bộ lọc tùy chỉnh trong /etc/rsyslog.d/60-myfilter.conf;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

Tôi đang làm gì sai? Cách thích hợp để lọc dựa trên thẻ hoặc có tùy chọn nào tốt hơn để có kết quả tương tự?

Câu trả lời:


21

Tôi đã không sử dụng nếu như thế (hoặc syslogtag) nhưng tôi đã sử dụng :<blah>,<condition> ...(cụ thể là: tin nhắn, có chứa, ...) nhưng hãy thử

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Các & stop(Hoặc, & ~trong v6 rsyslog tuổi trở lên (Chẳng hạn như trên RHEL6)) gây ra thông báo phù hợp để bị loại bỏ sau khi đăng nhập nếu không nó sẽ được phân tích thêm bởi quy tắc khác.


Cập nhật: đã thử nghiệm và

Syslogtag chứa một :và nên được đính kèm ""thay vì''


Cám ơn phản hồi của bạn. Tôi vừa thử những gì bạn đề xuất, thực sự tin nhắn đã bị loại bỏ nhưng không bao giờ được viết cho/var/log/giomanager.log
Mistyrouge

@mistyrouge: xem cập nhật của tôi
user9517

2
Cảm ơn bạn rất nhiều, bây giờ tôi đã chuyển hướng nhật ký của mình /var/log/giomanager.log nhưng nó vẫn được ghi vào / var / log / syslog. Bạn có biết tại sao điều này xảy ra và làm thế nào để ngăn chặn nó không?
sương mù

1
loại bỏ hành động (~ chỉ báo) không được chấp nhận: đã được thay thế bằng câu lệnh "dừng" thay thế (tốt hơn): kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

Vì vậy, cuối cùng tôi đã tìm thấy một giải pháp cho vấn đề của tôi.

Cảm ơn bạn rất nhiều đến @lain vì đã dẫn đường cho tôi.

Giải pháp như đã nêu trước đó là bao gồm ':' trong tên thẻ. Ngoài ra, và điều này rất quan trọng, tên tệp phải được đặt trước 50-default.conftheo thứ tự bảng chữ cái.

Để tiếp tục, hãy đặt như sau 30-giomanager.conf:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Lưu ý rằng tệp /var/log/giomanager.logphải được ghi bởi người dùng 'syslog'.


Cảm ơn @mistyrouge. Tôi có cùng một vấn đề bạn đã có. Sau khi đăng nhập vào tệp chính xác, nhật ký của tôi đang được chuyển hướng đến / var / log / syslog. Bạn có biết tại sao điều này xảy ra và làm thế nào để ngăn chặn nó không?
Mayank Patel

Tôi không thể làm điều này để làm việc để lọc các bản ghi bind9. Thay vào đó, ': tên chương trình, kết quả, "được đặt tên" /var/log/named/named.log' hoạt động. Có lẽ bởi vì thẻ giống như "có tên [32193]".
Rennex

Bạn có thể sử dụng startswiththay vì isequalnếu, ví dụ, thẻ có chứa một PID. Hoặc regexcho các trận đấu phức tạp.
Tim Sylvester
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.