TL;DR
Đọc log là kỹ năng sống còn để làm chủ VPS Linux, giúp bạn tìm ra nguyên nhân ứng dụng bị crash chỉ trong vài giây thay vì đoán mò. Bài viết này hướng dẫn bạn từ lệnh tail cơ bản, công cụ journalctl hiện đại đến multitail để quan sát nhiều log cùng lúc.
- Phù hợp: Người mới bắt đầu quản trị VPS, Web Developer, System Admin.
- Áp dụng: Ubuntu 22.04, Ubuntu 24.04, Debian, CentOS (RHEL).
- Mục tiêu: Thành thạo 3 công cụ đọc log phổ biến nhất để xử lý sự cố (troubleshooting).
- Test trên: VPS Ubuntu 22.04 LTS chạy Nginx và Docker.
Vì sao cần đọc log Linux ngay?
Khi website báo lỗi “502 Bad Gateway” hoặc ứng dụng Node.js/Python không khởi động được, log chính là “hiện trường vụ án” ghi lại mọi manh mối. Nếu không biết đọc log, bạn sẽ rơi vào tình trạng:
- Mất hàng giờ cài lại OS chỉ vì một lỗi cấu hình nhỏ.
- Không biết VPS đang bị tấn công Brute Force vào cổng SSH.
- Ứng dụng chết bất thình lình mà không để lại dấu vết.
- Ổ cứng bị đầy do log phình to mà không kiểm soát được.
Lệnh Tail — “Lão làng” đơn giản nhưng hiệu quả
Tóm gọn: Lệnh tail dùng để xem phần cuối của tệp tin văn bản, cực kỳ hữu dụng khi bạn chỉ muốn xem các sự kiện mới nhất vừa xảy ra.
Xem log thời gian thực với Tail -f
Lệnh tail -f (follow) sẽ giữ cho file log luôn mở trên terminal. Khi có dòng log mới được ghi vào file, nó sẽ ngay lập tức hiển thị trên màn hình của bạn.
tail -f /var/log/syslog
Giải thích:
* /var/log/syslog: File log hệ thống chung trên các dòng Debian/Ubuntu.
* -f: Theo dõi thay đổi của file liên tục.
* Nhấn Ctrl + C để thoát khỏi chế độ theo dõi.
Xem N dòng cuối cùng của file
Đôi khi bạn không cần theo dõi liên tục mà chỉ muốn xem 20 hoặc 50 dòng cuối cùng để kiểm tra nhanh trạng thái.
tail -n 20 /var/log/nginx/error.log
Giải thích:
* -n 20: Hiển thị chính xác 20 dòng cuối cùng.
* /var/log/nginx/error.log: Đường dẫn tuyệt đối đến file log lỗi của Nginx.
Kết hợp Tail với Grep để lọc dữ liệu
Nếu file log quá nhiễu, hãy dùng “pipe” (|) để lọc ra những dòng chứa từ khóa quan trọng như “error” hoặc “critical”.
tail -f /var/log/apache2/access.log | grep "404"
Output mẫu:
192.168.1.1 - - [10/Oct/2023:14:00:01 +0700] "GET /admin-login HTTP/1.1" 404 153 "-" "Mozilla/5.0"
192.168.1.5 - - [10/Oct/2023:14:05:22 +0700] "GET /wp-admin.php HTTP/1.1" 404 153 "-" "Mozilla/5.0"
💡 Mẹo: Sử dụng
tail -F(viết hoa chữ F) thay vìtail -f. Nếu file log bị xóa và tạo mới (log rotation),-Fsẽ tự động nhận diện file mới, còn-fsẽ bị dừng lại.
Journalctl — Quyền năng tối thượng của Systemd
Tóm gọn: journalctl là công cụ truy vấn log từ systemd-journald, quản lý log dưới dạng binary giúp tìm kiếm cực nhanh và lọc theo nhiều tiêu chí.
Hầu hết các bản phân phối Linux hiện đại (Ubuntu 20.04 trở lên) đều sử dụng Systemd. Mọi dịch vụ như Nginx, MySQL, Docker đều đẩy log về đây.
Lọc log theo Service (Unit)
Thay vì phải nhớ đường dẫn file log, bạn chỉ cần nhớ tên dịch vụ (service).
journalctl -u nginx.service -f
Giải thích:
* -u nginx.service: Chỉ xem log của dịch vụ Nginx.
* -f: Theo dõi thời gian thực (giống tail -f).
Lọc log theo khoảng thời gian
Đây là tính năng mạnh mẽ nhất mà tail không làm được. Bạn có thể xem log của 10 phút trước hoặc từ ngày hôm qua.
journalctl --since "10 minutes ago"
journalctl --since "2023-10-01" --until "2023-10-02 12:00:00"
Kiểm tra lỗi hệ thống với Priority
Bạn có thể yêu cầu journalctl chỉ hiển thị các lỗi từ mức “Error” trở lên để tránh bị xao nhãng bởi các thông báo “Info”.
journalctl -p err -b
Giải thích:
* -p err: Lọc theo độ ưu tiên (priority) là Error. Các mức khác: emerg, alert, crit, err, warning, notice, info, debug.
* -b: Chỉ xem log của lần khởi động máy (boot) hiện tại.
⚠️ Cảnh báo: Log của
journalctlmặc định có thể bị xóa sau khi reboot nếu không được cấu hình lưu trữ vĩnh viễn trong/etc/systemd/journald.conf.
Multitail — Quan sát đa kênh trên một màn hình
Tóm gọn: multitail cho phép bạn chia màn hình terminal thành nhiều cửa sổ để theo dõi nhiều file log cùng một lúc, hỗ trợ tô màu dễ nhìn.
Mặc định Linux không có sẵn lệnh này, bạn cần cài đặt:
sudo apt update && sudo apt install multitail -y
Theo dõi 2 file log song song (Chia dọc)
Giả sử bạn muốn xem cả log truy cập (access) và log lỗi (error) của web server cùng lúc.
multitail -i /var/log/nginx/access.log -i /var/log/nginx/error.log
Cách điều khiển trong Multitail:
* Nhấn b: Để cuộn ngược lại xem log cũ (dùng phím mũi tên).
* Nhấn q: Để thoát.
* Nhấn h: Để xem bảng trợ giúp.
Chia màn hình thành nhiều cột
Nếu bạn có màn hình lớn, bạn có thể chia log thành 2 cột trái – phải thay vì trên – dưới.
multitail -s 2 /var/log/auth.log /var/log/syslog
Giải thích:
* -s 2: Chia màn hình thành 2 cột đứng.
💡 Mẹo:
multitailcó khả năng tô màu các từ khóa như “Failed”, “Success”, “IP Address” giúp bạn quét mắt tìm lỗi nhanh hơn gấp 5 lần so với đọc văn bản trắng đen.
Áp dụng thực tế: Debug lỗi phổ biến trên VPS
Tóm gọn: Kết hợp các lệnh trên để xử lý các tình huống thực tế khi vận hành server.
Case 1: Debug lỗi Nginx không khởi động được
Khi bạn chạy systemctl restart nginx và nhận thông báo lỗi, hãy dùng lệnh sau:
journalctl -u nginx.service -n 50 --no-pager
Giải thích:
* -n 50: Xem 50 dòng cuối.
* --no-pager: Xuất thẳng ra màn hình, không dùng trình đọc less để dễ copy-paste.
Case 2: Theo dõi ai đang cố gắng login vào VPS
Log bảo mật nằm ở /var/log/auth.log. Bạn có thể theo dõi các lần login thất bại:
tail -f /var/log/auth.log | grep "Failed password"
Output mẫu:
Oct 10 15:30:01 vsis-vps sshd[1234]: Failed password for root from 1.2.3.4 port 5678 ssh2
Oct 10 15:30:05 vsis-vps sshd[1235]: Failed password for invalid user admin from 1.2.3.4 port 5679 ssh2
Case 3: Đọc log của Docker Container
Nếu bạn chạy ứng dụng trong Docker, log không nằm ở /var/log mà được quản lý bởi Docker Engine.
docker logs --tail 100 -f [container_name_hoặc_id]
Pitfalls & lỗi thường gặp
1. Lỗi “Permission Denied” khi đọc log
Hầu hết các file log trong /var/log thuộc quyền sở hữu của user root hoặc group adm.
* Cách fix: Thêm sudo vào trước lệnh. Ví dụ: sudo tail -f /var/log/auth.log.
2. Log quá lớn làm treo Terminal
Nếu bạn dùng cat để đọc một file log nặng vài GB, terminal sẽ bị treo hoặc load cực chậm.
* Cách fix: Tuyệt đối không dùng cat cho file log lớn. Hãy dùng tail, less hoặc journalctl vì chúng chỉ load một phần dữ liệu lên RAM.
3. Log bị xoay vòng (Log Rotation) làm mất dấu
Cơ chế logrotate sẽ nén file cũ thành log.1.gz, log.2.gz và tạo file mới. Nếu bạn đang dùng tail -f, lệnh có thể bị dừng.
* Cách fix: Dùng tail -F để tự động chuyển sang file mới khi file cũ bị rename.
4. Journalctl chiếm quá nhiều dung lượng ổ cứng
Mặc định journalctl có thể chiếm tới 10% dung lượng ổ cứng hoặc tối đa 4GB.
* Cách fix: Giới hạn dung lượng log bằng lệnh:
bash
sudo journalctl --vacuum-size=500M
Key takeaways
- Tail -f là lựa chọn nhanh nhất để xem log của một file văn bản cụ thể.
- Journalctl là công cụ chuẩn để debug các dịch vụ hệ thống (systemd units).
- Multitail cực kỳ hữu ích khi cần so sánh log từ nhiều nguồn khác nhau trên cùng một màn hình.
- Luôn dùng đường dẫn tuyệt đối (như
/var/log/nginx/error.log) để tránh nhầm lẫn. - Kết hợp với Grep để loại bỏ các thông tin rác, chỉ tập trung vào lỗi (Error/Critical).
FAQ
Làm sao để xóa trắng một file log để dễ theo dõi từ đầu?
Bạn có thể dùng lệnh chuyển hướng để làm rỗng file mà không cần xóa file:
sudo truncate -s 0 /var/log/nginx/access.log
Tại sao lệnh journalctl của tôi không có màu?
Hãy thử thêm flag --all hoặc kiểm tra biến môi trường $TERM. Thông thường journalctl tự nhận diện màu nếu terminal hỗ trợ.
Tôi có thể xem log của ngày hôm trước bằng tail không?
Không trực tiếp được nếu log đã bị rotate. Bạn phải tìm file có đuôi .1 hoặc .2.gz. Với journalctl, bạn chỉ cần dùng --since "yesterday".
Làm sao để tìm kiếm một từ khóa khi đang dùng tail -f?
Bạn không thể tìm kiếm trực tiếp. Hãy nhấn Ctrl + C, sau đó dùng less /var/log/file.log. Trong less, nhấn phím / rồi gõ từ khóa để tìm kiếm.
Log hệ thống quan trọng nhất nằm ở đâu?
Trên Ubuntu/Debian là /var/log/syslog. Trên CentOS/RHEL là /var/log/messages.
Cần VPS chạy Linux để thực hành?
Mọi kỹ năng đọc log trên đều cần một môi trường thực tế để làm quen. Tại vsis.net, chúng tôi cung cấp VPS Linux với toàn quyền Root, giúp bạn thoải mái cài đặt, cấu hình và thực hành debug như một chuyên gia thực thụ.
- Hỗ trợ: Ubuntu 22.04/24.04, Debian, CentOS.
- Tốc độ: Khởi tạo nhanh trong 30 giây, hạ tầng mạnh mẽ.
- Giá cả: Phù hợp cho cả sinh viên và doanh nghiệp.
Tham khảo ngay các gói VPS tại: vsis.net/vps
Đừng để lỗi server làm khó bạn — hãy làm chủ các dòng log ngay hôm nay cùng VPS chất lượng cao từ VSIS!



