Scurt
Ne rulăm sarcinile de lucru în kubernetes pe AWS EKS. Toate aplicațiile noastre scriu log-urile /var/log/app_logs director folosind hostPath. (da, nu este o practică bună, aceasta se datorează bazei de cod vechi, eventual vrem să trecem la STDOUT).
Probleme cu care ne confruntăm:
- Ne bazăm pe oră logrotatepentru a roti fișierele sub/var/log/app_logs
- În timpul limitei orare, avem tendința de a pierde liniile de logare
- La investigare pare ca copytruncatecreează acest datalos
- Se pare că aplicația nu este capabilă să scrie în fișierul jurnal în timpul procesului de realizare și pierdem acele jurnale în timpul rotației.
- Deoarece aceste servicii rulează kubernetescontainere/pods, nu vom putea folosiStopserviciu,rotișistartabordarea serviciului.
Nodurile de lucru EKS rulează Amazon Linux(centos).
The logrotate.conf folosim:
„/var/log/app_logs/*.log” {
  crea 664 foo foo
  zilnic
  lipsingok
  copytruncate
  roteste 7
  comprima
  delaycompress
  notificare gol
  scripturi partajate
  postrotate
    /bin/bash /opt/scripts/upload-logs.sh
  script final
  }
Există ceva ce am putea face pentru a evita această pierdere de date prin modificarea logrotate configurare? sau există instrumente similare care rezolvă această problemă în mediile bazate pe kubernetes.