วิธีกรองข้อความ rsyslog ด้วยแท็ก


12

ฉันมีแอพพลิเคชั่นและสคริปต์หลายตัวที่ฉันต้องการเปลี่ยนเส้นทางไปยังไฟล์ที่กำหนดเอง

ฉันเปิดแอปพลิเคชันเหล่านั้นโดยใช้

command | logger -t TAG

ฉันต้องการกรองข้อความเหล่านี้ตามแท็กและเปลี่ยนเส้นทางไปยังไฟล์ต่างๆ ฉันไม่ต้องการใช้การเปลี่ยนเส้นทาง bash เนื่องจากแอปพลิเคชันเหล่านี้ส่วนใหญ่ใช้เวลาในการประมวลผลนานและต้องการการหมุนเวียนบันทึกที่เหมาะสม

ฉันพยายามเพิ่มตัวกรองที่กำหนดเองใน /etc/rsyslog.d/60-myfilter.conf;

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

ผมทำอะไรผิดหรือเปล่า ? เป็นวิธีที่เหมาะสมในการกรองตามแท็กหรือมีตัวเลือกที่ดีกว่าเพื่อให้ได้ผลลัพธ์ที่คล้ายกัน?

คำตอบ:


21

ฉันไม่ได้ใช้ถ้าเช่นนั้น (หรือ syslogtag) แต่ฉันได้ใช้:<blah>,<condition> ...(โดยเฉพาะ: msg, มี, ... ) แต่ลอง

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

& stop(หรือ& ~ใน v6 rsyslog และผู้สูงอายุ (เช่นบน RHEL6)) สาเหตุข้อความที่ตรงกันที่จะยกเลิกหลังจากเข้าสู่ระบบมิฉะนั้นก็จะถูกแยกต่อไปโดยกฎระเบียบอื่น ๆ


อัปเดต: ทดสอบแล้วและ

syslogtag มี:และควรอยู่ใน""มากกว่า''


ขอบคุณสำหรับคำตอบของคุณ ฉันเพิ่งลองสิ่งที่คุณเสนอแน่นอนข้อความจะถูกยกเลิก แต่ไม่เคยเขียนถึง/var/log/giomanager.log
mistyrouge

@mistyrouge: ดูการอัปเดตของฉัน
user9517

2
ขอบคุณมากตอนนี้ฉันได้เปลี่ยนเส้นทางบันทึกของฉันไปแล้ว/var/log/giomanager.log แต่ยังคงเขียนไปยัง / var / log / syslog คุณมีความคิดว่าทำไมสิ่งนี้จึงเกิดขึ้นและจะป้องกันได้อย่างไร?
mistyrouge

1
ยกเลิกการกระทำ (ตัวบ่งชี้ ~) เลิกใช้แล้ว: ถูกแทนที่ด้วยคำสั่ง "หยุด" ทางเลือก (ดีกว่า): kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

ในที่สุดฉันก็พบวิธีแก้ปัญหาของฉัน

ขอบคุณมากที่ @lain เป็นผู้นำของฉัน

การแก้ปัญหาตามที่ระบุไว้ก่อนหน้านี้คือการรวม ':' ในชื่อแท็ก นอกจากนี้และนี่เป็นสิ่งสำคัญมากชื่อไฟล์จะต้องอยู่50-default.confในลำดับตามตัวอักษร

หากต้องการดำเนินการต่อให้ใส่ต่อไปนี้ใน30-giomanager.conf:

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

โปรดทราบว่า/var/log/giomanager.logผู้ใช้ 'syslog' ควรเขียนไฟล์ได้


ขอบคุณ @mistyrouge ฉันมีปัญหาเดียวกันกับที่คุณมี หลังจากเข้าสู่ไฟล์ที่ถูกต้องบันทึกของฉันจะถูกเปลี่ยนเส้นทางไปยัง / var / log / syslog คุณมีความคิดว่าทำไมสิ่งนี้จึงเกิดขึ้นและจะป้องกันได้อย่างไร?
Mayank Patel

ฉันไม่สามารถทำสิ่งนี้เพื่อกรอง bind9 บันทึก แทนการทำงาน ': programname, isequal แทน "/var/log/named/named.log" อาจเป็นเพราะแท็กนั้นเหมือน "ชื่อ [32193]"
Rennex

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