ไม่พบวิธีในตัวในการรวมสถิติของคอนเทนเนอร์ในบันทึกของคอนเทนเนอร์ แต่ส่วนหนึ่งของโซลูชันของเราอาจทำให้คุณไปที่นั่นได้:
เรามีงาน CRON บนโฮสต์ Docker ที่เรียกใช้งานสคริปต์นี้ทุก ๆ นาที ส่งผลให้บันทึกสถิติของคอนเทนเนอร์เรียงตามลำดับเวลาแบบย้อนกลับ*
#!/bin/bash
#statshot.sh
MAX_LINES=1440
CONTAINER_NAME=my_container
LOG=~/${CONTAINER_NAME}.stats.log
# สถิติหัวเรื่องนักเทียบท่า + สถิติไปยังบันทึกใหม่
สถิตินักเทียบท่า --ไม่มีสตรีม | grep -e 'CONTAINER' -e ${CONTAINER_NAME} | ts '[%Y-%m-%d %H:%M]' > ${LOG}_
# ต่อท้ายบรรทัดจากบันทึกการทำงานไปยังบันทึกใหม่
# (พรีทัชในกรณีที่ยังไม่มี)
แตะ ${LOG}
grep ${CONTAINER_NAME} ${LOG} | หัว -${MAX_LINES} >> ${LOG}_
# แทนที่บันทึกการทำงานด้วยบันทึกใหม่
mv ${LOG}_ ${LOG}
วิ่งทุกนาทีและกลิ้งออกไปหลังจาก 1,440 บรรทัด สิ่งนี้ทำให้เราทราบประวัติชีวิตของคอนเทนเนอร์ได้ตลอด 24 ชั่วโมง
สำหรับความต้องการของคุณ (รวมถึงสถิติในบันทึกของคอนเทนเนอร์) ไฟล์บันทึกที่สร้างขึ้นบนโฮสต์อาจมีบรรทัดสถิติเดียว/ปัจจุบัน แต่เขียนไปยังตำแหน่งที่คอนเทนเนอร์สามารถอ่านได้ และงาน CRON ที่สอดคล้องกันในคอนเทนเนอร์จะสะท้อนออกมา เพื่อปลอบใจ
* ลำดับย้อนกลับเป็นผลข้างเคียงของการต้องการรวมส่วนหัวของ Docker stats แต่ด้วยสคริปต์ที่เรียบง่ายกว่าและไฟล์ I/O น้อยกว่า ... ยินดีต้อนรับข้อเสนอแนะของสคริปต์ Fu เพื่อลดไฟล์ I/O เพิ่มเติม