สิ่งที่คุณต้องการคือส่วนประกอบที่เรียกว่า 'log shipper' (เพื่อไม่ให้สับสนกับการจำลองฐานข้อมูล) Logstash จัดหาอุปกรณ์ตัวเดียว มันถูกเรียกว่า 'ตัวแทน' และมันเขียนใน Java หากคุณไม่ต้องการติดตั้ง [รุ่นที่เฉพาะเจาะจงของ] Java บนเซิร์ฟเวอร์ทั้งหมดของคุณ (ซึ่งเป็นคำคัดค้านที่ค่อนข้างสมเหตุสมผล) แสดงว่ามีทางเลือกมากมาย
ผู้ส่งบันทึกข้อมูลมีคุณสมบัติทั่วไปบางอย่างที่คุณสามารถเปรียบเทียบได้:
- พวกเขามักจะสามารถดูไฟล์ใน (ใกล้) เรียลไทม์ทั้งการสำรวจ (ทั่วไป) หรือใช้ inotify;
- โดยทั่วไปแล้วพวกเขาจะรับมือได้ดีกับเหตุการณ์การหมุนเวียนบันทึก
- พวกเขามักจะถูกนำไปใช้ในหนึ่งในหลายภาษา;
- พวกเขาจะสามารถอ่านจากแหล่งข้อมูลต่าง ๆ (มากมาย) รวมถึงฐานข้อมูลประเภทต่าง ๆ หรือบันทึกเหตุการณ์ของ windows
- ตัวเลือกการสนับสนุนเชิงพาณิชย์มักมีให้เลือกเช่นเดียวกับตัวเลือกฟรี เวอร์ชั่นฟรีของรุ่นฟรีอาจมีตัวเลือกอินพุตให้มากกว่านี้
- พวกเขาต่างกันในเรื่องความพร้อมใช้งานข้ามแพลตฟอร์ม
- ต้นทุนใบอนุญาตสำหรับแพลตฟอร์มที่แตกต่างกันอาจแตกต่างกันอย่างมาก (เช่น rsyslog บน Windows และ Linux)
- ความสามารถในการขยายและรอยเท้าที่ทำนั้นแตกต่างกันอย่างมาก
- พวกเขาอาจ (ไม่) สามารถส่งบันทึกผ่าน SSL;
- พวกเขาอาจ (ไม่) สามารถบัฟเฟอร์เหตุการณ์ได้หากผู้รับไม่พร้อมใช้งาน
- พวกเขาอาจ (ไม่) สามารถแปลง / กรองข้อความ;
- มีระดับความสามารถในการเขียนสคริปต์ที่แตกต่างกัน
Logstash Book มีรายการอยู่บ้าง เช่นคนตัดไม้ (เขียนใน Go และไม่ได้บรรจุในระบบปฏิบัติการของฉัน) และยังมีคนอื่น ๆ อีกมากมาย
rsyslog ยังสามารถอ่านได้จากไฟล์ แต่ค่าลิขสิทธิ์สำหรับ Windows อาจทำให้คุณต้องติดใจ แต่สิ่งนี้มีประโยชน์หากคุณมีอุปกรณ์ RHEL / Centos / อื่น ๆ ที่ติดตั้ง rsyslog (โดยทั่วไปแล้วคุณจะไม่มีอิสระในการติดตั้งสิ่งที่คุณต้องการด้วยเหตุผลด้านการสนับสนุน)
ปัจจุบันฉันใช้ nxlog ซึ่งเขียนด้วยภาษา C; มันมีขนาดเล็กพอสมควรไม่มีรันไทม์ที่น่ารำคาญหรือสร้างการพึ่งพา ทำงานบน Linux และ Windows อย่างน้อยที่สุด รังเพลิงค่อนข้างดี สร้างง่ายบนแพลตฟอร์มที่ไม่มีแพ็คเกจให้ มีเอกสารที่ดีเกี่ยวกับนางฟ้า (แต่อาจยังดีกว่า); นักพัฒนาที่ตอบสนอง; มีการสนับสนุนเชิงพาณิชย์ สามารถส่งผ่าน SSL อ่านจากกลุ่มอินพุตที่ต่างกันรวมถึงไฟล์ syslog บันทึกเหตุการณ์ของ windows และอื่น ๆ ทำการประมวลผลบางอย่างรวมถึงการใช้แท็กเครือข่ายเพื่อประมวลผลใน logstash ในภายหลัง ส่งออกไปยังกลุ่มของสิ่งต่าง ๆ ทั้งหมด (ฉันกำลังส่งของฉันไปยังเซิร์ฟเวอร์บันทึกกลางซึ่งบัฟเฟอร์เขียนลงดิสก์หมุนไฟล์และส่งข้อมูลไปยัง Logstash เพื่อนำเข้าสู่การค้นหายืดหยุ่น)
Nxlog ไม่สมบูรณ์ มันมีข้อผิดพลาดจำนวนมากโดยเฉพาะการแยกวิเคราะห์การกำหนดค่า (ระวังเครื่องหมายอัฒภาคที่หายไป) และความหมายของการกำหนดค่าอาจทำให้สับสนเล็กน้อยเมื่อคุณต้องการลองทำสิ่งที่ซับซ้อนมากขึ้น ฉันชนหน่วยความจำรั่วอย่างน้อยหนึ่งครั้งและอีกหนึ่งปัญหาที่ต้องให้ฉันใช้การตรวจจับแบบแขวนกระบวนการสำหรับระหว่างนี้ แต่ทั้งหมดนั้นฉันยังคงมีความสุขกับการใช้ nxlog จนถึงกองเรือของเรา ป่านนี้และเรากำลังผลักดันข้อมูลจำนวนมากผ่านมัน
อย่างไรก็ตามเนื่องจากคุณพูดถึงการใช้ SSH อย่างชัดเจน (นั่นเป็นข้อกำหนดจริงหรือไม่) คุณสามารถตั้งค่า scp คีย์ที่ได้รับอนุญาตของไฟล์แล้วมี logstash feed อยู่ในเครื่อง และ (สมมติว่าคุณเรียก logstash ใหม่ทุกครั้ง) ใช้ประโยชน์จากความสามารถของ logstash ในการบันทึกตำแหน่งที่อยู่ในไฟล์ สิ่งหนึ่งที่ต้องระวังเกี่ยวกับคุณอาจไม่ต้องการให้ inode เปลี่ยนดังนั้นเขียนทับไฟล์โดยใช้ '... > file.txt' ซึ่งจะแทนที่เนื้อหา แต่ไม่ต้องแทนที่ไฟล์เอง อย่างไรก็ตามนั่นอาจจะทำให้หงุดหงิดจากการหมุนบันทึก คุณต้องการให้ผู้ส่งบันทึกบนเครื่องระยะไกล การใช้ rsyslog จะมีประโยชน์หากมีข้อกำหนดสำหรับสภาพแวดล้อมแบบสัมผัสเพียงเล็กน้อยแม้ว่าคุณจะไม่มีความสามารถในการส่งผ่าน SSL (แม้ว่าอาจจะเป็น rsyslog รุ่นที่ปรับปรุงแล้วก็ตาม)
หวังว่าจะช่วยคาเมรอน