Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Khi website báo lỗi 500 lúc nửa đêm, thứ đầu tiên bạn cần là log. Log tốt giúp bạn tìm ra nguyên nhân trong vài phút, log tệ khiến bạn mò mẫm hàng giờ. Bài này nói về cách ghi log có ích và cách đọc nhanh khi có sự cố.
Hầu hết thư viện log chia thành các mức, từ chi tiết đến nghiêm trọng:
Chọn mức đúng giúp lọc nhanh. Nếu mọi thứ đều là ERROR thì chẳng còn cái nào nổi bật.
So sánh hai dòng: 'Lỗi xảy ra' hoàn toàn vô dụng, còn 'Thanh toán thất bại: order=1234 lý do=hết thời gian chờ cổng thanh toán' cho bạn manh mối ngay. Tuyệt đối không ghi mật khẩu, token, số thẻ hay dữ liệu cá nhân vào log.
Gán mỗi yêu cầu một mã định danh duy nhất (request ID) và đưa vào mọi dòng log của yêu cầu đó. Khi người dùng báo lỗi, bạn chỉ cần mã đó để gom toàn bộ hành trình của họ, kể cả khi log từ nhiều dịch vụ.
tail -f /var/log/nginx/error.log
grep -i 'error' app.log | tail -50
grep 'order=1234' app.log
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
journalctl -u myapp --since '1 hour ago'Lệnh awk ở dòng thứ tư lấy cột mã trạng thái trong log truy cập mặc định của Nginx rồi đếm số lần xuất hiện của từng mã, giúp bạn thấy ngay tỉ lệ 404, 500. Nếu định dạng log của bạn khác, số cột có thể khác.
File log lớn dần và có thể làm đầy đĩa, làm sập cả máy chủ. Công cụ logrotate trên Linux lo việc này. Ví dụ cấu hình tại /etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}Cấu hình này xoay vòng mỗi ngày, giữ 14 bản, nén bản cũ, bỏ qua nếu thiếu file hay file rỗng. copytruncate hữu ích khi ứng dụng giữ file mở liên tục, đổi lại có nguy cơ mất vài dòng log trong lúc sao chép.
Khi có nhiều máy chủ, đăng nhập vào từng máy để đọc log là bất khả thi. Bạn nên gom log về một nơi tìm kiếm được, bằng các giải pháp như bộ ELK, Loki hay dịch vụ của nhà cung cấp cloud. Với dự án nhỏ một máy chủ thì chưa cần, nhưng hãy ghi log dạng có cấu trúc từ sớm để sau này chuyển đổi dễ dàng.
Log tốt có mức độ đúng, thông điệp rõ, ngữ cảnh đủ và được xoay vòng cẩn thận. Hãy xem lại log của ứng dụng đang làm: nếu gặp sự cố lúc nửa đêm, bạn có đủ thông tin để xử lý trong năm phút không?
Muốn tìm hiểu thêm về vận hành và gỡ lỗi hệ thống thực tế, hãy ghé các khóa học tại codebem.com.
Nguyễn Đình Cường
0 comment