จะรวบรวมบันทึกสำหรับสถิติในไซต์ได้อย่างไร


2

ฉันต้องการรวบรวมบันทึกจาก nginx (เซิร์ฟเวอร์หลายเครื่อง, 1,000,000 บรรทัดในบันทึกเป็นนาทีสำหรับเซิร์ฟเวอร์ทั้งหมด) ไปยังเซิร์ฟเวอร์สถิติกลางสำหรับการประมวลผลสถิติ ฉันเห็น 2 สายพันธุ์:

    1. เขียนบันทึกไปยังไฟล์บันทึกท้องถิ่นสำหรับแต่ละเซิร์ฟเวอร์
    2. เปลี่ยนชื่อบันทึกสำหรับเทมเพลต "DD.MM.YYYY HH" ในแต่ละเซิร์ฟเวอร์และส่งบันทึกไปยังเซิร์ฟเวอร์สถิติผ่าน ssh เป็นต้น
    3. ส่งสัญญาณสำหรับการโหลดบันทึกซ้ำไปยัง nginx บนแต่ละเซิร์ฟเวอร์
    1. ใช้ syslog transport (หรืออื่น ๆ - ไฟล์ transcport ใดอาจเป็นชื่อไฟล์อัตโนมัติสำหรับเทมเพลต "DD.MM.YYYY HH"?) เพื่อส่งบันทึกไปยังเซิร์ฟเวอร์ stat
    2. ใช้ hadoop หรือ dir ชั่วคราวในหน่วยความจำบนเซิร์ฟเวอร์สถิติสำหรับบันทึกการเขียนจากเซิร์ฟเวอร์ทั้งหมด (ตัวแปรใดมีประสิทธิผลมากกว่าในกรณีนี้)
  1. คุณช่วยแนะนำอย่างอื่นได้ไหม

คำตอบ:


2

ลองดูที่elasticsearch + logstash + kibana

Logstash สามารถแยกไฟล์บันทึกของคุณและดึงข้อมูลจากพวกเขาโดยใช้ตัวกรอง มันสามารถเก็บไว้ใน Elasticsearch ซึ่งคุณสามารถสอบถามผ่าน Kibana ดูวิดีโอในเว็บไซต์ของพวกเขาเพื่อรับความรู้สึกเกี่ยวกับสิ่งที่สามารถทำได้


0

ตัวเลือกแรกของคุณสามารถทำได้ผ่าน loghost (โดยทั่วไปตัวเลือกของคุณ 2) คุณสามารถส่งข้อความ syslog ของคุณผ่าน udp ถึง $ logserver จากนั้นคุณจะแบ่งบันทึกที่มีตามเซิร์ฟเวอร์และมีการประทับเวลา "แน่นอน" ของบันทึกที่คุณส่ง

การเปลี่ยนชื่อบันทึกไม่จำเป็นบนเซิร์ฟเวอร์ nginx นอกเหนือจาก logrotate ปกติที่คุณต้องการด้วยการบันทึกจำนวนมาก

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

ตัวเลือกที่ 2 ควรใกล้เคียงกับสิ่งที่คุณต้องการบรรลุ

ทั้งนี้ขึ้นอยู่กับความปลอดภัยของเครือข่ายเซิร์ฟเวอร์ที่อยู่ใน: การขนส่งโดยตรงผ่านขั้นตอน syslog "ปกติ" หรือทำให้การเชื่อมต่อ VPN บางส่วนเพื่อ loghost

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