Ngắn gọn
Chúng tôi đang chạy khối lượng công việc của mình trong kubernetes trên AWS EKS. Tất cả các ứng dụng của chúng tôi ghi nhật ký vào /var/log/app_logs
thư mục sử dụng máy chủ lưu trữ
. (vâng, đó không phải là phương pháp hay nhất, điều này là do cơ sở mã kế thừa, cuối cùng chúng tôi muốn chuyển sang STDOUT).
Những vấn đề chúng ta phải đối mặt:
- Chúng tôi dựa vào hàng giờ
quay vòng
để xoay các tập tin dưới /var/log/app_logs
- Trong ranh giới hàng giờ, chúng ta có xu hướng đánh mất các loglines
- Sau khi điều tra có vẻ như
copytruncate
đang tạo datalos này
- Có vẻ như ứng dụng không thể ghi vào tệp nhật ký trong quá trình đăng nhập và chúng tôi đang mất các nhật ký đó trong quá trình xoay vòng.
- Vì các dịch vụ này đang chạy trong
kubernetes
thùng chứa/nhóm, chúng tôi sẽ không thể sử dụng dừng lại
dịch vụ, quay
và bắt đầu
cách tiếp cận dịch vụ.
Các nút công nhân EKS đang chạy trong Amazon Linux(centos)
.
Các logrotate.conf
chúng tôi sử dụng:
"/var/log/app_logs/*.log" {
tạo 664 foo foo
hằng ngày
mất tích
copytruncate
xoay 7
nén
nén trễ
thông báo
chia sẻ kịch bản
quay sau
/bin/bash /opt/scripts/upload-logs.sh
phần cuối
}
Có bất cứ điều gì chúng ta có thể làm để tránh mất dữ liệu này bằng cách điều chỉnh quay vòng
cấu hình? hoặc có bất kỳ công cụ tương tự nào giải quyết vấn đề này trong môi trường dựa trên kubernetes không.