journalctl là công cụ mạnh mẽ giúp bạn truy xuất, lọc và phân tích log của systemd một cách dễ dàng. Công cụ này quản lý dữ liệu dưới dạng nhị phân, cho phép truy xuất thông tin nhanh chóng và linh hoạt. Trong bài viết dưới đây, mình sẽ hướng dẫn bạn sử dụng journalctl để giám sát hệ thống, xử lý lỗi nhanh chóng và nâng cao hiệu quả quản trị máy chủ.
Những điểm chính
- Khái niệm journalctl: Hiểu rõ bản chất công cụ truy xuất nhật ký hệ thống nhị phân mạnh mẽ, giúp bạn truy vấn dữ liệu nhanh chóng và nhất quán hơn các tệp văn bản truyền thống.
- Lợi ích vượt trội: Biết cách tận dụng khả năng lọc đa chiều, phân cấp mức độ ưu tiên và giám sát thời gian thực để nhanh chóng xác định chính xác nguyên nhân gốc rễ của mọi sự cố.
- Hướng dẫn sử dụng chi tiết: Thành thạo các bộ lọc nâng cao theo thời gian, dịch vụ, mã tiến trình và nhật ký nhân hệ thống để tối ưu hóa quy trình quản trị.
- Lưu ý khi vận hành: Nắm vững các quy tắc về quyền quản trị, quản lý dung lượng lưu trữ và cấu hình múi giờ để đảm bảo tính toàn vẹn và ổn định cho hệ thống log.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh journalctl Linux.
journalctl là gì?
journalctl là một tiện ích dòng lệnh chuyên dụng để truy xuất và phân tích nhật ký hệ thống được quản lý bởi systemd-journald. Trong các bản phân phối Linux hiện đại, thay vì lưu trữ rải rác dưới dạng file văn bản, mọi dữ liệu từ nhân hệ thống, các dịch vụ hệ thống đến các tiến trình ứng dụng đều được cấu trúc hóa dưới dạng nhị phân trong journal. Điều này giúp việc truy vấn dữ liệu trở nên nhanh chóng, chính xác và nhất quán hơn.
Cú pháp lệnh journalctl như sau:
journalctl [options] [matches]Trong đó:
- [options]: Các tùy chọn điều khiển cách hiển thị và phạm vi log, ví dụ như: -b (log từ lần boot hiện tại), -f (theo dõi realtime), -p (lọc theo mức độ ưu tiên), –since/–until (lọc theo thời gian).
- [matches]: Các điều kiện lọc log theo trường cụ thể, như _PID=, _UID=, _GID=, tên unit với -u hoặc các trường metadata khác để thu hẹp đúng phần log cần xem.

Những lợi ích khi sử dụng lệnh journalctl
Dưới đây là các lợi ích chính khi triển khai journalctl:
- Khả năng truy vấn đa chiều: journalctl cho phép bạn lọc nhật ký dựa trên các tham số linh hoạt như mốc thời gian cụ thể, định danh dịch vụ, theo mã tiến trình,…để thu hẹp phạm vi tìm kiếm dữ liệu.
- Phân cấp mức độ ưu tiên: Lệnh journalctl hỗ trợ lọc dữ liệu dựa trên mức độ nghiêm trọng của sự kiện, từ Debug, Info đến Warning, Error, Critical. Điều này giúp bạn tập trung vào các lỗi hệ thống trọng yếu mà không bị nhiễu bởi các thông tin vận hành thông thường.
- Giám sát lưu lượng thời gian thực: Khi sử dụng lệnh journalctl, bạn sẽ được cung cấp cơ chế theo dõi nhật ký trực tiếp, cho phép quan sát các biến động và phản hồi của hệ thống ngay tại thời điểm phát sinh sự cố.
- Xác định và phân tích sự cố chuyên sâu: Là công cụ trung tâm trong quy trình xử lý sự cố, journalctl giúp liên kết các sự kiện hệ thống để tìm ra nguyên nhân gốc rễ của lỗi, từ đó tối ưu hóa công tác giám sát và duy trì tính ổn định của máy chủ.
Vì dữ liệu của journalctl được lưu trữ dưới dạng nhị phân. nên sẽ được bảo toàn tính toàn vẹn của log tốt hơn các tệp text thông thường và hỗ trợ các tính năng nâng cao như giới hạn dung lượng lưu trữ tự động để bảo vệ tài nguyên ổ cứng.

Cách sử dụng lệnh journalctl chi tiết
- Xem nhật ký hệ thống cơ bản
- Hiển thị log từ lần khởi động hiện tại
- Hiển thị log theo thời gian cụ thể
- Xem log theo dịch vụ cụ thể
- Xem log theo Process, User hoặc Group ID
- Xem log theo đường dẫn thành phần
- Xem log theo mức độ ưu tiên
- Xem log theo thời gian thực
- Xem các bản ghi gần đây nhất
- Xem nhật ký từ nhân hệ thống
- Thu gọn đầu ra của log
- Hiển thị toàn bộ dữ liệu ra màn hình
- Kiểm tra dung lượng ổ đĩa của nhật ký
1. Xem nhật ký hệ thống (Systemd Logs) cơ bản
Để nắm bắt toàn bộ các sự kiện, tiến trình và hoạt động tổng quan của hệ thống từ khi khởi động, bạn sử dụng lệnh:
journalctl
2. Hiển thị log từ lần khởi động hiện tại
Để tập trung xem các sự kiện và hoạt động kể từ lần máy chủ được bật gần nhất mà không bị lẫn với các dữ liệu cũ, bạn dùng lệnh:
journalctl -b
Lưu ý
Nếu không sử dụng tùy chọn này, journalctl sẽ tự động chèn dòng phân cách — Reboot — tại mỗi mốc hệ thống khởi động lại.
3. Hiển thị log theo thời gian cụ thể
Để lọc và xem các sự kiện xảy ra trong một khoảng thời gian mong muốn nhằm phục vụ việc phân tích sự cố chính xác, bạn thực hiện lệnh sau:
journalctl --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS"
4. Xem log theo dịch vụ cụ thể
Để tập trung theo dõi hoạt động của một dịch vụ riêng biệt như Apache (httpd) hay MySQL (mysqld) và phát hiện nhanh các lỗi liên quan, bạn sử dụng lệnh:
journalctl -u <ten_dich_vu>
5. Xem log theo Process, User hoặc Group ID
Để theo dõi các sự kiện liên quan đến một tiến trình cụ thể hoặc giám sát hoạt động của một người dùng/nhóm, bạn thực hiện một trong các lệnh sau:
journalctl _PID=<PID>
journalctl _UID=<UID>
journalctl _GID=<GID>
6. Xem log theo đường dẫn thành phần (Component Path)
Để tập trung vào các sự kiện liên quan đến một ứng dụng hoặc thành phần cụ thể thông qua đường dẫn trỏ tới chương trình đó, bạn sử dụng lệnh:
journalctl <path>
7. Xem log theo mức độ ưu tiên (Priority)
Để lọc và xử lý nhanh các sự kiện nghiêm trọng như lỗi (err) hoặc cảnh báo (warning), bạn sử dụng lệnh sau:
journalctl -p <muc_uu_tien>
Các mức độ ưu tiên từ cao đến thấp bao gồm:
- 0: emerg
- 1: alert
- 2: crit
- 3: err
- 4: warning
- 5: notice
- 6: info
- 7: debug
8. Xem log theo thời gian thực
Để theo dõi các sự kiện ngay khi chúng vừa xảy ra trên hệ thống, giúp kiểm tra hiệu quả của các thay đổi cấu hình, bạn sử dụng lệnh:
journalctl -f
9. Xem các bản ghi gần đây nhất
Để kiểm tra nhanh một số lượng bản ghi vừa phát sinh (mặc định hiển thị 10 bản ghi gần nhất), bạn dùng lệnh:
journalctl -n
10. Xem nhật ký từ nhân hệ thống (Kernel log)
Để theo dõi các thông báo liên quan đến phần cứng, trình điều khiển (driver) hoặc các vấn đề cấp thấp của nhân hệ thống, bạn sử dụng lệnh:
journalctl -k
11. Thu gọn đầu ra của log
Để yêu cầu hệ thống thu gọn các nội dung bản ghi dài bằng dấu ba chấm (…) thay vì hiển thị toàn bộ, bạn sử dụng tùy chọn sau:
journalctl --no-full
12. Hiển thị toàn bộ dữ liệu ra màn hình
Trong trường hợp bạn muốn hiển thị toàn bộ thông tin bản ghi, bao gồm cả các ký tự đặc biệt không thể in ra màn hình, bạn sử dụng lệnh sau:
journalctl -a
13. Kiểm tra dung lượng ổ đĩa của nhật ký
Để xác định dung lượng mà các file nhật ký hiện đang chiếm dụng trên ổ đĩa của hệ thống, bạn thực hiện lệnh:
journalctl --disk-usage
Những lưu ý khi sử dụng lệnh journalctl
Để đảm bảo hệ thống vận hành ổn định và tránh lãng phí tài nguyên lưu trữ khi sử dụng journalctl, bạn cần lưu ý các vấn đề kỹ thuật sau:
- Quản lý dung lượng lưu trữ: Bạn cần thường xuyên kiểm tra tổng dung lượng log bằng lệnh
journalctl --disk-usagevà thiết lập giới hạn lưu trữ trong file cấu hìnhjournald.conf. - Cấu hình lưu trữ tạm thời và vĩnh viễn: Mặc định trên một số hệ thống, log của journalctl chỉ được lưu tạm thời trên RAM. Nếu cần lưu trữ log lâu dài để phục vụ điều tra sự cố, bạn ca cần đảm bảo thư mục /var/log/journal đã được khởi tạo.
- Sử dụng quyền quản trị (Sudo): Để truy cập đầy đủ các bản ghi từ nhân hệ thống hoặc dịch vụ của người dùng khác, bạn cần thực thi lệnh với quyền sudo. Nếu không, journalctl sẽ chỉ hiển thị các bản ghi thuộc quyền sở hữu của người dùng hiện tại.
- Tối ưu hóa bộ lọc thời gian: Khi thực hiện truy vấn trên các máy chủ hoạt động lâu ngày, việc chạy lệnh journalctl sẽ mất nhiều thời gian để tải dữ liệu. Bạn hãy luôn kết hợp các tham số thời gian như –since hoặc –until để thu hẹp phạm vi và tăng tốc độ tìm kiếm.
- Lưu ý về múi giờ: Journalctl mặc định hiển thị theo giờ hệ thống. Nếu bạn đang làm việc với các hệ thống phân tán hoặc server đặt tại nước ngoài, hãy sử dụng tham số –utc để quy đổi thời gian về chuẩn quốc tế, tránh nhầm lẫn khi đối soát sự cố.
Theo kinh nghiệm của mình, journalctl là công cụ cực kỳ mạnh nhưng cũng dễ “ngợp” nếu không biết cách lọc log hợp lý. Trong thực tế vận hành, việc kết hợp lọc theo thời gian, service (-u) và mức độ log (priority) sẽ giúp bạn rút ngắn đáng kể thời gian debug sự cố, thay vì phải đọc hàng nghìn dòng log không cần thiết.

Câu hỏi thường gặp
Làm thế nào để xuất nội dung log ra một file văn bản?
Để lưu trữ nhật ký hệ thống vào một file nhằm mục đích gửi cho bộ phận hỗ trợ hoặc xem lại sau, bạn hãy sử dụng lệnh chuyển hướng sau:journalctl > log_he_thong.txt
Ý nghĩa của tùy chọn -xe thường dùng khi dịch vụ bị lỗi là gì?
Quản trị viên thường sử dụng tổ hợp tùy chọn này để kiểm tra nhanh nguyên nhân một dịch vụ không khởi động được. Để xem các bản ghi cuối cùng kèm theo các thông tin giải thích chi tiết từ hệ thống, bạn sử dụng lệnh:journalctl -xe
Trong đó:
-x (catalog): Cung cấp thêm các đoạn văn bản giải thích về lỗi.
-e (pager-end): Nhảy thẳng đến cuối file log để xem các sự kiện mới nhất.
Tôi có thể tìm kiếm một từ khóa cụ thể trong log bằng cách nào?
Để lọc ra các dòng nhật ký chứa một từ khóa nhất định, bạn hãy kết hợp journalctl với lệnh grep thông bằng lệnh sau:
journalctl | grep “từ_khóa”
Làm sao để hiển thị toàn bộ log ra màn hình mà không dùng trình xem trang?
Mặc định journalctl sẽ mở nội dung trong trình xem, buộc bạn phải nhấn phím để cuộn. Để đẩy toàn bộ dữ liệu trực tiếp ra màn hình Terminal (stdout), bạn hãy thêm tùy chọn –no-pager:journalctl --no-pager
Cách xem nhật ký liên quan đến dịch vụ Docker như thế nào?
Để kiểm tra hoạt động của trình điều khiển Docker hoặc các container, bạn sử dụng lệnh truy vấn theo unit:journalctl -u docker
Hy vọng bài viết này, bạn đã nắm vững cách sử dụng lệnh journalctl để truy xuất, lọc và giám sát log trên hệ thống Linux một cách hiệu quả. Việc thành thạo công cụ này giúp bạn nhanh chóng phát hiện sự cố và giám sát hoạt động của các dịch vụ một cách chủ động, từ đó nâng cao kỹ năng quản trị hệ thống Linux chuyên nghiệp.




