Gần đây, chúng tôi đã di chuyển một trong các ứng dụng của mình sang nền tảng "Corretto 8 chạy trên nền tảng 64bit Amazon Linux 2/3.2.12". Hiện tại, chúng tôi đang gặp sự cố là các tệp nhật ký đang lấp đầy dung lượng ổ đĩa của chúng tôi trong khoảng thời gian hơn một tuần. Chúng tôi đã không có vấn đề trước đây.
Điều khó chịu là chúng tôi đang truyền trực tuyến các nhật ký đó tới đồng hồ điện toán đám mây, vì vậy chúng tôi thực sự không cần chúng trong phiên bản đó.
Điều khó chịu hơn nữa là tất cả tài liệu, bài đăng trên blog, v.v. mà tôi có thể tìm thấy về vấn đề này dường như không được viết cho nền tảng này. Khi nhìn vào cấu trúc tệp, có vẻ như nó đang sử dụng một cách tiếp cận khác mà tôi chưa hoàn toàn hình dung ra.
Trước hết, không có thư mục /var/log/httpd... hoặc các thư mục khác cho các nhật ký cụ thể. Cho đến nay tôi đã tìm ra rằng những gì được gửi tới web.stdout.log logstream (trên nền tảng cũ từng được đặt tên khác, nhưng tôi không nhớ chính xác như thế nào. Trong mọi trường hợp, đó là nơi đăng nhập của ứng dụng khởi động mùa xuân to) được lưu trữ trong tệp /var/log/messages.
Tôi biết điều này bởi vì trong khi phân tích lý do tại sao chúng tôi hết dung lượng đĩa, tệp này sẽ luôn là tệp lớn nhất trên toàn bộ đĩa. Ngoại trừ ngay sau khi một phiên bản bắt đầu, thì nó có kích thước hợp lý. Sau 3 ngày, nó có thể đạt đến kích thước 2 GB và nó chỉ tiếp tục tăng lên cho đến khi không còn gì nữa. Không còn nghi ngờ gì nữa, đó là nguồn gốc rắc rối của chúng ta.
Câu hỏi là, tôi có thể làm gì làm về nó? Xoay vòng nhật ký ở cấu hình mặc định và tôi có thể thấy một số tệp trong /var/log/rotated (cũng là một thư mục khác với nơi từng là nhật ký xoay), nhưng chúng rất nhỏ (lớn nhất trong số chúng là 1,3 MB đáng yêu trong size...), và kích thước của /var/log/messages không bao giờ giảm, nó chỉ tăng lên.
Tôi đã đọc rất nhiều bài viết về cách giải quyết các vấn đề tương tự bằng cách định cấu hình logrotate bằng ebextensions, của chính AWS và các blogger, nhưng trong tất cả chúng, tôi có thể thấy rất nhanh rằng chúng được xây dựng trên một cấu trúc rất khác, vì vậy chúng không dường như có thể áp dụng được. Ngoài ra, trong quá trình di chuyển, chúng tôi đã trải nghiệm rằng một số điều đã được thực hiện với ebextensions giờ không được thực hiện với ebextensions nữa, nhưng tài liệu còn khá thiếu.
Có ai biết nền tảng đủ để cho tôi manh mối về cách tôi có thể định cấu hình nền tảng này không? tôi thậm chí không cần quay nhật ký, nói đúng ra, tôi chỉ muốn chúng biến mất ngay sau khi chúng cũ hơn một giờ hoặc lâu hơn. Sau tất cả, chúng tôi có chúng trên cloudwatch...
Thông tin thêm
Càng tìm hiểu sâu về vấn đề này, tôi càng thấy bối rối. Có một tệp /var/log/web.stdout.log nhận các thông báo giống như /var/log/messages. Nhìn vào nội dung của logrotate.elasticbeanstalk.hourly, đây là tệp thực sự đang được xoay vòng nhật ký và tệp đó có vẻ đang hoạt động tốt.
Thực hiện một lsof, quy trình sử dụng tệp đó là rsyslogd. Theo nhận xét của shearn89 bên dưới, rõ ràng đó là nhật ký hệ thống mới và mọi thứ ghi vào thiết bị xuất chuẩn đều được ghi vào đó.
Nhận ra rằng tệp đó không thuộc bất kỳ loại xoay vòng nào, tôi đang cố gắng thiết lập tệp đó. Hiện tại, chỉ trên ví dụ trực tiếp, sau này tôi sẽ tìm ra cách thực hiện nó trong cấu hình môi trường thực tế.
Tôi đã tạo một tệp cấu hình mới trong /etc/logrotate/elasticbeanstalk.hourly với nội dung sau:
/var/log/tin nhắn {
gốc rễ su
kích thước 10M
xoay 5
mất tích
nén
thông báo
copytruncate
ngày tháng
định dạng ngày %s
olddir /var/log/xoay
}
Đang chạy sudo /usr/sbin/logrotate /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.messages.conf --debug
, tôi nhận được đầu ra sau:
mẫu xoay: /var/log/messages 10485760 byte (5 lần quay)
olddir là /var/log/rotated, các tệp nhật ký trống không được xoay, các nhật ký cũ bị xóa
xem xét nhật ký /var/log/messages
nhật ký cần xoay
xoay nhật ký /var/log/messages, log->rotateCount là 5
Đã chuyển đổi ' %s' -> '%s'
hậu tố ngày văn bản '1646905905'
mẫu toàn cầu '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0 -9]'
toàn cầu tìm nhật ký xoay cũ không thành công
sao chép /var/log/messages sang /var/log/rotated/messages1646905905
cắt bớt /var/log/messages
nén nhật ký với: /bin/gzip
Điều đó có vẻ đầy hứa hẹn, nhưng sự thật lạnh lùng là dường như không có gì thay đổi. Tệp vẫn có cùng kích thước và không có tệp nào được tạo trong thư mục xoay vòng. Nó dường như không có tác dụng gì cả.
Tôi đã thay đổi cấu hình để nó di chuyển và tạo thay vì cắt bớt tại chỗ, tôi đã thử -f, tất cả đều có cùng kết quả. Không có lỗi từ logrotate, nhưng cũng không có tác dụng. Tập tin đó có vẻ không thấm nước.