รวบรัด
เรากำลังใช้งานปริมาณงานของเราใน kubernetes บน AWS EKS แอปพลิเคชันทั้งหมดของเราเขียนข้อมูลเข้าสู่ระบบ /var/log/app_logs ไดเร็กทอรีโดยใช้ เส้นทางโฮสต์. (ใช่ มันไม่ใช่แนวปฏิบัติที่ดีที่สุด นี่เป็นเพราะโค้ดเบสรุ่นเก่า ในที่สุดเราต้องการย้ายไปที่ STDOUT)
ปัญหาที่เราเผชิญ:
- เราอาศัยรายชั่วโมง
เข้าสู่ระบบ เพื่อหมุนไฟล์ที่อยู่ด้านล่าง /var/log/app_logs
- ในช่วงขอบเขตรายชั่วโมง เรามักจะสูญเสียล็อกไลน์
- เมื่อตรวจสอบดูเหมือนว่า
copytruncate กำลังสร้าง datalos นี้
- ดูเหมือนว่าแอปพลิเคชันไม่สามารถเขียนไปยังไฟล์บันทึกระหว่างการหมุนล็อก และเรากำลังสูญเสียบันทึกเหล่านั้นระหว่างการหมุน
- เนื่องจากบริการเหล่านี้กำลังทำงานอยู่
คูเบอร์เนเตส ภาชนะ/พ็อด เราจะไม่สามารถใช้ หยุด บริการ, หมุน และ เริ่ม แนวทางการบริการ
โหนดผู้ปฏิบัติงาน EKS กำลังทำงาน Amazon Linux (เซ็นโตส).
เดอะ logrotate.conf เราใช้:
"/var/log/app_logs/*.log" {
สร้าง 664 ฟูฟู
รายวัน
หายไป
copytruncate
หมุน 7
บีบอัด
การบีบอัดล่าช้า
การแจ้งเตือน
สคริปต์ที่ใช้ร่วมกัน
หลังการหมุน
/bin/bash /opt/scripts/upload-logs.sh
ลงท้าย
}
มีอะไรที่เราสามารถทำได้เพื่อหลีกเลี่ยงการสูญหายของข้อมูลนี้โดยการปรับแต่ง เข้าสู่ระบบ กำหนดค่า? หรือมีเครื่องมือที่คล้ายกันที่ช่วยแก้ปัญหานี้ในสภาพแวดล้อมที่ใช้ kubernetes