รวบรัด
เรากำลังใช้งานปริมาณงานของเราใน 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