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.