ฉันจะทำให้ syslogd ส่งอีเมลบันทึกข้อความถึงฉันได้อย่างไร


13

ฉันต้องการได้รับการแจ้งเตือนทางอีเมลทุกครั้งที่ syslogd บันทึกบางสิ่งเช่นพูดว่ามีerrความสำคัญหรือสูงกว่า สมมติว่านี่เป็น syslog daemon ของ BSD

  • สามารถทำได้หรือไม่
  • ฉันควรใช้ไพพ์ที่มีชื่อกับเชลล์สคริปต์หรือไม่
  • มีวิธีแก้ไขปัญหาอื่น ๆ อีกหรือไม่

คำตอบ:


6

นี่คือโซลูชันที่ใช้ไพพ์ที่มีชื่อ มันถูกตั้งค่าสำหรับ Debian แต่คุณควรจะสามารถแก้ไขได้สำหรับ BSD


ลงเอยด้วยการแก้ปัญหาของฉันในเรื่องนี้เพื่อที่ฉันจะได้สามารถส่งอีเมลได้ ขอบคุณสำหรับลิงค์
jason

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

2
ไม่ใช่แฮ็คเลย มันเป็นวิธีที่สิ่งนี้มักจะทำ
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

6

การแจ้งเตือนผ่าน syslogd (8)

บนเซิร์ฟเวอร์ OpenBSD ของฉันฉันเข้าสู่ระบบและข้อความอีเมลที่สำคัญจากการใช้งานเว็บของเราซึ่งใช้สถานที่local1 นี่คือ/etc/syslog.confของฉันเพื่อให้มันเกิดขึ้น:

local1.err    /var/log/example.com
local1.err    |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG me@example.com; done

ขอให้สังเกตว่าในขณะที่วนซ้ำอ่านแต่ละบรรทัดจาก syslogd อย่างไม่ จำกัด และไปป์ไปยังจดหมายผ่าน echo นี้เป็นสิ่งสำคัญ. เมื่อเสียงก้องเอาท์พุทสายมันจะยุติไปป์ส่งอีเมล EOF เพื่อให้สามารถส่งอีเมลข้อความบันทึก

กล่าวอีกนัยหนึ่งคุณไม่สามารถส่งเมลโดยตรงผ่าน syslogd ได้เช่น:

local1.err    |/usr/bin/mail -s SYSLOG me@example.com

เนื่องจาก syslogd จะเขียนต่อไปยังไปป์จนกว่าจะถูกยกเลิกหรือส่งสัญญาณ HUP ซึ่งจดหมายเวลาจะส่งข้อความบันทึกทั้งชุดในอีเมลขนาดใหญ่ชุดเดียว

การแจ้งเตือนผ่านทาง newsyslog (8)

การจัดกำหนดการ newsyslog ใน cron เป็นอีกวิธีหนึ่งในการรับข้อความในอัตราที่ช้าลงหรือเป็นกลุ่ม

ตัวอย่างเช่นหากคุณต้องการให้อีเมลสรุปรายวันของข้อความบันทึกให้ตั้งค่าสถานะMและระบุที่อยู่อีเมลของจอภาพใน/etc/newsyslog.conf :

# logfile_name        owner:group  mode  count  size  when  flags  monitor
/var/log/example.com  root:wheel   640   7      *     24    M      me@example.com

จากนั้นกำหนดเวลา newsyslog ใน crontab:

# minute hour  mday  month  wday  command
0        *     *     *      *     /usr/bin/newsyslog
1-59     *     *     *      *     /usr/bin/newsyslog -m

-mตัวเลือกสำหรับโปรแกรม newsyslog (8)ฯ :

โหมดการตรวจสอบ; ประมวลผลเฉพาะรายการที่มีเครื่องหมาย `M 'ในธงเท่านั้น สำหรับล็อกไฟล์แต่ละไฟล์ที่ถูกมอนิเตอร์เอาต์พุตล็อกใด ๆ ตั้งแต่ครั้งล่าสุดที่ newsyslog ถูกรันด้วยแฟล็ก -m จะถูกส่งไปยังผู้ใช้ที่แสดงรายการในส่วนการแจ้งเตือนการมอนิเตอร์


3

คุณอาจต้องการดู logcheck หรือ logwatch Logcheck จะส่งอีเมลถึงคุณเป็นรายชั่วโมงโดยมีบรรทัดบันทึกที่ไม่ตรงกับชุดรูปแบบ ฉันสงสัยว่าคุณอาจจะทำให้มันบ่อยขึ้น ฉันไม่รู้เครื่องมือใด ๆ ที่ทำได้โดยดู logfiles แต่ฉันแน่ใจว่ามีบางอย่างที่ทำ


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

1

ฉันจะใช้ OSSEC มันจะตรวจสอบบันทึกของคุณในเวลาจริงและช่วยให้คุณสามารถแจ้งเตือนทางอีเมล (หรือวิธีการอื่น ๆ ) ได้อย่างง่ายดายเมื่อมีการจับคู่เหตุการณ์ที่เฉพาะเจาะจง ง่ายต่อการใช้ปรับขนาดได้และเปิดแหล่งที่มา

ลิงก์: http://www.ossec.net


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