ฉันจะรับบันทึก syslog จากระบบเครือข่ายได้อย่างไร


23

ฉันต้องการกำหนดค่า Ubuntu ให้รับบันทึกจากเราเตอร์ DD-WRT หน้าจอการกำหนดค่าของเราเตอร์มีหัวข้อต่อไปนี้:

บันทึกระบบ DD-WRT

และเอกสารการบันทึกอ่าน:

หากคุณต้องการส่งบันทึกไปยังระบบระยะไกลให้ป้อนที่อยู่ IP ของเครื่องที่กำลังเรียกใช้ยูทิลิตี syslog ด้วย (ต้องใช้ซ็อกเก็ตเครือข่ายเปิดเพื่อรับบันทึกที่ส่งโดยเราเตอร์)

ฉันไม่เคยใช้ syslog มาก่อน ฉันต้องทำอะไรใน Ubuntu เพื่อให้สามารถรับบันทึกเหล่านี้ได้


Motorola Surfboard Extreme SBG901 ของฉันดูเหมือนว่าจะมีการตั้งค่าคล้ายกับ DD-WRT ของคุณ แค่คิดว่าฉันจะเพิ่มคำหลักนั้นสำหรับผู้อื่น googling สำหรับ q / a นี้
เตาแก๊ส

คำตอบ:


23

โฮสต์ที่ได้รับบันทึกจะต้องใช้งาน syslog daemon บางตัวที่ได้รับการกำหนดค่าให้รับฟังบันทึกจากระยะไกล มีการใช้งาน syslog จำนวนมากใน Ubuntu แต่rsyslogโดยทั่วไปจะแนะนำและควรติดตั้งตามค่าเริ่มต้น ฉันไม่สามารถบอกได้จากเอกสารในลิงค์ที่คุณโพสต์หาก DD-WRT กำลังส่งบันทึกผ่าน TCP หรือ UDP ดังนั้นอาจต้องมีการทดลองเพื่อค้นหาการตั้งค่าที่ถูกต้องแม่นยำหากคุณกังวลเกี่ยวกับการลดจำนวนเครือข่ายที่เข้าถึงได้ พอร์ตบนโฮสต์ของคุณ

มีสองวิธีในการเปิดใช้งานสิ่งนี้: วิธีแรกนั้นง่ายกว่า แต่อาจต้องการการรวมระบบใหม่เมื่ออัพเกรดระบบ ที่สองนั้นซับซ้อนกว่าเล็กน้อยและอาจทำให้เกิดผลลัพธ์ที่สับสนหากมีการเปลี่ยนแปลงที่สำคัญในการกำหนดค่า syslog ซึ่งเป็นส่วนหนึ่งของการอัพเดท ฉันจะเลือกวินาที แต่ความชอบของคุณอาจแตกต่างกัน

ที่แรกก็คือการแก้ไข/etc/rsyslogd.confและลบเริ่มต้น#จากบรรทัดต่อไปนี้:

# $ ModLoad imudp
# $ UDPServerRun 514

หรือ

# $ ModLoad imtcp
# $ InputTCPServerRun 514

ที่สองคือการสร้างไฟล์ใหม่อาจชื่อlocal-enable-tcp.confใน/etc/rsyslog.d/ที่มีเนื้อหาดังต่อไปนี้:

# เปิดใช้งานการรับ TCP syslog
$ ModLoad imtcp
$ InputTCPServerRun 514

หากคุณต้องการใช้วิธีการแยกไฟล์และต้องการ UDP ให้เปลี่ยนเนื้อหาเพื่อให้ตรงกับ UDP stanza ด้านบน ชื่อไฟล์เฉพาะนั้นไม่สำคัญ แต่ขอแนะนำให้เริ่มด้วย "local-" เนื่องจาก namespace นี้สงวนไว้สำหรับการกำหนดค่าผู้ดูแลระบบในท้องถิ่นและจะต้องลงท้ายด้วย ".conf" เนื่องจากไฟล์ที่ลงท้ายเช่นนี้จะรวมอยู่ใน การกำหนดค่า rsyslog

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


1
มันควรจะเป็นความคิดที่ดีที่จะเริ่มต้นชื่อของไฟล์ที่มีตัวเลขสองหลักการสร้างคำสั่งที่เกี่ยวกับไฟล์. conf อื่น ๆ ที่มีอยู่
enzotib

เฮ้อนั่นอาจจะซับซ้อน ไม่มีเหตุผลที่ชื่อแพ็กเกจไม่สามารถเริ่มต้นด้วยตัวเลขสองหลักและ. d / $ {package} - .conf ทั้งหมดถูกจองไปยังแพ็คเกจ (แม้ว่าจะไม่น่าจะมีข้อขัดแย้งเช่น 72-local-myconf.conf ) ประการที่สองเป็นสิ่งสำคัญที่จะต้องพยายามเขียนไฟล์การกำหนดค่าเพื่อไม่ให้ลำดับสำคัญ ตัวอย่างเช่นไฟล์กำหนดค่าที่ให้โดย 0access.conf จากแพ็คเกจ "0access" สมมุติฐานจะถูกนำไปใช้ก่อนไฟล์กำหนดค่าส่วนใหญ่ที่เริ่มต้นด้วยตัวเลขสองหลัก
Emmet Hikory

1
นอกจากนี้อาจต้องเปลี่ยนความเป็นเจ้าของไฟล์บันทึกของคุณ: sudo chown syslog:adm /var/log/syslogหรือสิ่งที่คุณตั้งชื่อไฟล์บันทึก
เตาแก๊ส

6

อีกทางเลือกหนึ่งคือใช้ syslog-ng ใช้งานง่ายและพร้อมที่จะไป!

sudo apt-get install syslog-ng

หลังจากติดตั้งแล้วเรามีไฟล์ conf ใน /etc/syslog-ng/syslog-ng.conf ดังนั้นเพียงแค่แก้ไข. conf นี้ด้วยพารามิเตอร์ของเรา แต่ก่อนหน้านั้นทำการสำรองข้อมูลไฟล์ config เริ่มต้นสามารถใช้ได้ในภายหลังหาก คุณต้องการปรับพารามิเตอร์บางอย่าง

sudo mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.bak

ตอนนี้สร้างไฟล์กำหนดค่าใหม่และแก้ไข!

sudo touch /etc/syslog-ng/syslog-ng.conf
sudo nano /etc/syslog-ng/syslog-ng.conf

ดังนั้นเพียงแค่วาง config พื้นฐานนี้เพื่อให้ทำงานได้ดี:

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

destination dest { file("/var/log/Cisco$YEAR$MONTH$R_DAY.log"); };
#destination dest_other_server { udp("1.2.3.4" port(514)); };
#Create the filters that will be used to determine what to do with the received syslog message

#filter filter { ( host("2.3.4.5") and level(notice) and match("username=.*@domain\.local" value("MESSAGE") flags("utf8" "ignore-case")) ); };
filter myfilter { ( level(notice) ); };
#And putting it all together:

log { source(mysource); filter(myfilter); destination(dest);  };

ง่ายอย่างที่คุณเห็น ดูแล!


-2

โดยทั่วไปคุณรัน daemon (เรียกว่า syslogd) บนเซิร์ฟเวอร์ของคุณเพื่อให้เราเตอร์ dd-wrt ทำการโพสต์ล็อก

บทแนะนำ - http://www.techiecorner.com/1479/how-to-setup-syslog-server-in-ubuntu/


5
หลีกเลี่ยงการโพสต์ที่อยู่ของคู่มือเก่าโดยไม่ต้องตรวจสอบว่าคำแนะนำของพวกเขายังคงถูกต้อง ไฟล์ที่มีชื่อในคำแนะนำไม่มีอยู่อีกต่อไป Ubuntu ใช้ rsyslog
enzotib

@enzotib - ในขณะที่ฉันยอมรับว่ามันไม่มีคุณภาพและควรหลีกเลี่ยงการเชื่อมโยง แต่ปรากฎว่าคำตอบนี้ให้สิ่งที่ฉันต้องการเพื่อให้บรรลุภารกิจเดียวกันบนเซิร์ฟเวอร์ Ubuntu 8.04 มีสามคำตอบที่นี่ทั้งหมดสามรูปแบบที่แตกต่างกันของ syslog มีที่ยังคงถูกนำมาใช้ในระบบการผลิต คำตอบนี้มีประโยชน์ ได้รับ +1 จากฉัน
ghoti

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