ฉันจะกำหนดค่า rsyslog เพื่อส่งบันทึกจากโปรแกรมเฉพาะไปยังเซิร์ฟเวอร์ syslog ระยะไกลได้อย่างไร


17

ฉันมีโปรแกรมที่ส่งออกไปยัง syslog ด้วยชื่อแท็ก / โปรแกรมที่กำหนด ฉันต้องการที่จะกรองปริมาณข้อมูล syslog จากโปรแกรมนั้นและส่งไปยังเซิร์ฟเวอร์ syslog ระยะไกลปล่อยให้ปริมาณการใช้งาน syslog อื่น ๆ ในพื้นที่

ฉันสามารถส่งปริมาณข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ระยะไกลด้วย

*.* @remote_server

ฉันจะกรองมันได้อย่างไร


1
สิ่งนี้ตอบคำถามของฉัน stackoverflow.com/questions/4042115/ruby-syslog-custom-facility
Simmo

คำตอบ:


37

ไฟล์ config Rsyslog อยู่ใน: /etc/rsyslog.d/*.conf

Rsyslog อ่านไฟล์ conf ตามลำดับดังนั้นจึงเป็นสิ่งสำคัญที่คุณต้องตั้งชื่อไฟล์กำหนดค่าของคุณเพื่อให้โหลดการกำหนดค่าเฉพาะก่อนที่จะมีสิ่งใดเกิดขึ้น 00-my-file.confดังนั้นชื่อไฟล์ของคุณเริ่มต้นด้วยศูนย์นำของเช่น เป็นการดีกว่าที่จะสร้างไฟล์ใหม่เพื่อให้การอัปเดตและอื่น ๆ ไม่เขียนทับการกำหนดค่าท้องถิ่นของคุณ

ตัวอย่าง:

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

หรือถ้าคุณเพียงต้องการที่จะทิ้งรายการบางอย่าง:

if $programname == 'programname' then ~

ในกรณีของคุณ: (UDP)

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

หรือ (TCP)

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

& ~หมายถึงการจับคู่การประมวลผลแบบครบวงจร (บรรทัดที่ก่อนหน้านี้เท่านั้น!) รายการต่อไป

ข้อมูลทั่วไปเพิ่มเติมบางส่วน:

และให้แน่ใจว่าตัวกรองอยู่ในบรรทัดเดียวกันเสมอ:

# 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
& ~

ตัวกรองที่มีประโยชน์:

$hostname
$programname
$msg
$syslogseverity

ผู้ประกอบการ:

== (equals)
contains
and
or

ข้อมูลเพิ่มเติม: http://wiki.rsyslog.com/index.php/Configuration_Samples


1
เราจะแก้ไขลิงก์ที่เสียหายได้อย่างไร
Mark Walsh

1

เราสามารถลองสิ่งนี้ มันทำงานได้ดีสำหรับฉัน

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

หมายเหตุ: ที่นี่testing_dockerควรให้สิทธิ์การเป็นเจ้าของโฟลเดอร์แก่ผู้ใช้ syslog ทำตามคำสั่งด้านล่างเพื่อตั้งค่าการอนุญาต

chown syslog:syslog testing_docker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.