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ă
logrotate pentru 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
copytruncate creează 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ă
kubernetes containere/pods, nu vom putea folosi Stop serviciu, roti și start abordarea 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.