ข้อควรพิจารณาเกี่ยวกับแม่แบบเซิร์ฟเวอร์ rsyslog สำหรับโฮสต์ระยะไกลหลายแห่ง


1

Linux Destro คือ: Centos 6.8

ด้านล่างนี้เป็นสิ่งที่ rsyslog.conf ดูเหมือนว่า:

# cat /etc/rsyslog.conf

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
authpriv.*   ?server-dc
*.info,mail.none,authpriv.none,cron.none   ?server-dc
$IncludeConfig /etc/rsyslog.d/*.conf

#*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#*.*                                                     @elk-rsyslog:514

ชี้ให้ฉันเข้าใจ

1)

$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
enter code here

ดังนั้นในบรรทัดข้างต้น/scratch/rsyslogเป็นเส้นทางไดเรกทอรีบนเซิร์ฟเวอร์ rsyslog ที่เราจะส่งต่อบันทึกทั้งหมดจากโฮสต์ระยะไกลยูนิกซ์ที่สร้างโครงสร้างไดเรกทอรีดังต่อไปนี้ไฟล์ข้อความเช่น:

/scratch/rsyslog/remot1-Ser1/messages.log
/scratch/rsyslog/remot1-Ser2/messages.log

ดังนั้นมันใช้งานได้ดีอย่างไรก็ตามในเวลาเดียวกันเรามีอุปกรณ์เครือข่ายไม่กี่ตัวที่ส่งต่อบันทึกเครือข่ายไปยังตำแหน่งเดียวกันในรูปแบบด้านล่าง:

/scratch/rsyslog/Sep/messages.log
/scratch/rsyslog/Oct/messages.log

ในกรณีข้างต้นของเครือข่ายบันทึกมันสร้างไดเรกทอรีตามชื่อเดือนตามไฟล์ข้อความดังนั้นฉันกำลังมองหาวิธีใน rsyslog เพื่อกำหนดเส้นทางที่แตกต่างกันสำหรับบันทึกเครือข่ายเช่นนี้/scratch/rsyslog/networkเพื่อบันทึกเครือข่ายสามารถเก็บลงในโฟลเดอร์แยก เหตุผลเบื้องหลังสิ่งนี้คือฉันกำลังประมวลผลบันทึกเหล่านี้ไปยัง Elasticsearch ดังนั้นฉันจึงใช้ wildcard สำหรับบันทึก unix /scratch/rsyslog/*/messages.logแต่รวมถึงบันทึกเครือข่ายที่*เรียกว่าสัญลักษณ์แทน ( )

ดังนั้นมีวิธีที่ฉันสามารถพูดได้ว่าบันทึกมาจากโฮสต์ระยะไกลโดยเฉพาะหรือ IP ควรไปที่โฟลเดอร์เฉพาะในเซิร์ฟเวอร์ rsyslog หรือไม่

2) นี่คือ$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log" สิ่งที่เข้าสู่ระบบสำหรับการวาง เซิร์ฟเวอร์ -DCเช่นนี้เป็นชื่อโฮสต์อื่นนี่คือการได้รับวัตถุประสงค์ใด ๆ หรือเราสามารถเปลี่ยนสิ่งนี้เป็นสิ่งที่เกี่ยวข้องพิจารณาตามความต้องการข้างต้น

3) เซิร์ฟเวอร์ -dc เดียวกัน ยังรวมอยู่ในพารามิเตอร์การกำหนดค่าอื่นเช่นกัน

ที่ต้องการอยากมี

อยากรู้ว่ามีวิธีที่ฉันสามารถส่งต่อบันทึกสำหรับเช่นระบบเครือข่ายไฟร์วอลล์ในไดเรกทอรีที่แตกต่างกันเช่น ..

1 - /scratch/rsyslog/system/%HOSTNAME%/messages.log

2 - /scratch/rsyslog/network/%HOSTNAME%/messages.log

3 - /scratch/rsyslog/firewall/%HOSTNAME%/messages.log

คำตอบ:


2

คุณสามารถมีเทมเพลตจำนวนเท่าใดก็ได้และทดสอบข้อความขาเข้าสำหรับชื่อโฮสต์หรือที่อยู่ IP ของพวกเขา หากชื่อโฮสต์ของคุณมีโครงสร้างที่ดีตัวอย่างเช่น "ระบบ" ทั้งหมดเริ่มต้นด้วย "sys" เช่น sys10 และ sysabc ดังนั้นจำนวนการทดสอบจะลดลง

ตัวอย่างเช่น,

$template mysystems,"/scratch/rsyslog/system/%HOSTNAME%/messages.log"
$template mynets,"/scratch/rsyslog/network/%HOSTNAME%/messages.log"
$template myfirewalls,"/scratch/rsyslog/firewall/%HOSTNAME%/messages.log"

if $fromhost startswith "sys" then -?mysystems
& stop
if $fromhost startswith "net" then -?mynets
& stop
if $fromhost startswith "fw" then -?myfirewalls
& stop

& stopเส้นหยุดข้อความที่ตรงกับบรรทัดก่อนหน้าจากการรับการรักษาต่อไป คุณสามารถทดสอบที่อยู่ IP ด้วยตัวอย่างเช่น

if $fromhost-ip startswith "192.168." then -?mynets

หากคุณต้องการเก็บตัว*.info,...กรองไว้คุณสามารถแก้ไขด้านบนได้เช่น

if $fromhost startswith "sys" then {
  *.info,mail.none,authpriv.none,cron.none   -?mysystems
  & stop
}

อย่างไรก็ตามโปรดทราบว่าหากคุณไม่ต้องการบันทึกบางรายการคุณควรทำการกรองนี้ที่ผู้ส่งจริงๆไม่ใช่ที่ส่วนท้ายของเครือข่าย เป็นเพียงการเสียแบนด์วิดท์เครือข่ายเพื่อส่งข้อความที่คุณกรองแล้วทิ้ง

ดูเอกสารrsyslogมากมายสังเกตว่าคุณมีเวอร์ชันใด


@ meuh ขอบคุณมากสำหรับคำตอบหลังจากtemplate สตริงชอบmysystemsและmynetsเป็นเพียงตัวยึดตำแหน่งหรือพูดตัวแปร kinda ซึ่งสามารถตั้งชื่ออะไร?
Karn Kumar

1
เอกสารเกี่ยวกับแม่แบบนั้นค่อนข้างซับซ้อน แต่โดยทั่วไปแล้วพวกมันจะเหมือนกับตัวแปรที่คุณสามารถตั้งค่าเป็นสตริงที่มี%...%"replacers คุณสมบัติ" พิเศษอยู่ในนั้น อย่างไรก็ตามคุณสามารถใช้ "ตัวแปร" ผลลัพธ์ในสถานที่ที่เฉพาะเจาะจงซึ่งการใช้งานข้างต้นเป็น "? ตัวแปร" เพื่อหมายถึงไฟล์ไดนามิกเป็นการใช้งานที่ง่ายที่สุดและเป็นต้นฉบับ rsyslog มีการเปลี่ยนแปลงอย่างมากในช่วงหลายปีที่ผ่านมาดังนั้นบรรทัดข้างต้นจึงกล่าวได้ว่าเป็น "รูปแบบดั้งเดิม"
meuh

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