Làm cách nào để định cấu hình rsyslog để gửi nhật ký từ một chương trình cụ thể đến máy chủ syslog từ xa?


17

Tôi có một chương trình xuất ra syslog với một thẻ chương trình / tên đã cho. Tôi muốn có thể lọc lưu lượng nhật ký hệ thống từ chương trình đó và gửi nó đến một máy chủ nhật ký hệ thống từ xa, để lại tất cả lưu lượng nhật ký hệ thống khác cục bộ.

Tôi có thể gửi tất cả lưu lượng truy cập đến máy chủ từ xa với

*.* @remote_server

Làm thế nào để tôi lọc nó?


1
Điều này đã trả lời câu hỏi của tôi. stackoverflow.com/questions/4042115/ruby-syslog-custom-facility
Simmo

Câu trả lời:


37

Các tập tin cấu hình Rsyslog được đặt trong: /etc/rsyslog.d/*.conf

Rsyslog đọc các tệp conf một cách tuần tự, vì vậy điều quan trọng là bạn phải đặt tên cho tệp cấu hình của mình để cấu hình cụ thể được tải trước khi có bất kỳ điều gì khác xảy ra. Vì vậy, hãy đặt tên cho tệp của bạn bắt đầu bằng số 0 hàng đầu, tức là 00-my-file.conf. Tốt hơn là tạo một tệp mới để cập nhật và không ghi đè cấu hình cục bộ của bạn.

Thí dụ:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

Hoặc nếu bạn chỉ muốn loại bỏ một số mục nhất định:

if $programname == 'programname' then ~

Trong trường hợp của bạn: (UDP)

if $programname == 'programname' then @remote.syslog.server
& ~

Hoặc (TCP)

if $programname == 'programname' then @@remote.syslog.server
& ~

Các & ~phương tiện để dừng xử lý khớp (chỉ dòng trước đó!).

Một số thông tin chung hơn:

Ngoài ra, luôn đảm bảo các bộ lọc nằm trên cùng một dòng:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

Bộ lọc hữu ích:

$hostname
$programname
$msg
$syslogseverity

Toán tử:

== (equals)
contains
and
or

Thông tin thêm: http://wiki.rsyslog.com/index.php/Configuration_Samples


1
chúng ta có thể sửa chữa các liên kết bị hỏng?
Đánh dấu Walsh

1

Chúng tôi cũng có thể thử điều này. Nó làm việc tốt với tôi.

$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs

LƯU Ý: ở đây testing_dockerquyền sở hữu thư mục nên được trao cho người dùng syslog. Thực hiện theo các lệnh dưới đây để thiết lập quyền.

chown syslog:syslog testing_docker
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.