Nu am găsit o modalitate încorporată de a include statisticile containerului în jurnalul containerului, dar o parte din soluția noastră ar putea să vă aducă parțial acolo:
Avem un job CRON pe gazda Docker care execută acest script în fiecare minut, rezultând un jurnal ordonat cronologic invers* al statisticilor containerului:
#!/bin/bash
# statshot.sh
MAX_LINES=1440
CONTAINER_NAME=containerul_meu
LOG=~/${CONTAINER_NAME}.stats.log
# docker stats-heading + statistics to new log
statistici docker --no-stream | grep -e „CONTAINER” -e ${CONTAINER_NAME} | este „[%Y-%m-%d %H:%M]” > ${LOG}_
# atașați linii de la jurnalul de rulare la un jurnal nou
# (preatingeți în cazul în care nu există încă)
atinge ${LOG}
grep ${CONTAINER_NAME} ${LOG} | cap -${MAX_LINES} >> ${LOG}_
# înlocuiți jurnalul de rulare cu un jurnal nou
mv ${LOG}_ ${LOG}
Rulați în fiecare minut și rulați după 1440 de linii, acest lucru ne oferă un istoric de 24 de ore al elementelor vitale ale containerului.
Pentru nevoile dvs. (inclusiv statisticile din jurnalul containerului), fișierul jurnal generat pe gazdă ar putea conține doar linia de statistici unică/actuală, dar scris într-o locație din care containerul poate citi și o lucrare CRON corespunzătoare în container o ecou. a consola
* ordinea inversă este un efect secundar al dorinței de a include antetul de statistici Docker, dar cu un script mai simplu și mai puține I/O pentru fișiere... orice sugestie de script-fu pentru a reduce I/O-ul fișierului în continuare sunt binevenite