Cách xem và phân tích nhật ký dữ liệu (log) trên Linux với journalctl | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Cách xem và phân tích nhật ký dữ liệu (log) trên Linux với journalctl

Chia sẻ kiến thức 10/03/2022

Bạn muốn theo dõi các thao tác và tác vụ của người dùng đang diễn ra trên máy Linux của bạn? Bài viết này hướng dẫn bạn cách làm điều đó với tiện ích journalctl.

Bạn muốn theo dõi các thao tác và tác vụ của người dùng đang diễn ra trên máy Linux của bạn? Bài viết này hướng dẫn bạn cách làm điều đó với tiện ích journalctl.

Thông báo nhật ký (log message) có vai trò rất quan trọng trong việc kiểm tra và duy trì một hệ thống Linux. Mọi máy tính Linux đều lưu trữ các thông báo nhật ký cho các dịch vụ hoặc công việc khác nhau. Trong bài viết này, FUNiX sẽ hướng dẫn bạn cách đọc và phân tích thông báo nhật ký bằng cách sử dụng  journalctl, một công cụ dòng lệnh để đọc thông báo nhật ký được viết bởi journald.

journald là gì?

Journald là một dịch vụ ghi nhật ký hệ thống tổng hợp các thông báo nhật ký vào một journal. Nó là một phần của daemon* systemd chịu trách nhiệm ghi sự kiện vào Linux. Journal chỉ đơn giản là một tệp nhị phân được sử dụng để lưu trữ các thông báo nhật ký được tạo bởi journald.

*Daemon (hoặc Disk And Execution MONitor) là một loại chương trình trên các hệ điều hành giống Unix, hoạt động ẩn trong background mà không cần sự kiểm soát bởi user. systemd là một daemon quản lý các daemon khác, bao gồm cả bản thân systemd, là các quy trình background. systemd là daemon đầu tiên bắt đầu trong quá trình khởi động và daemon cuối cùng kết thúc trong khi tắt máy.

Thông báo nhật ký trong journal không liên tục, bởi vì chúng được lưu trữ trong RAM, đây là một dạng lưu trữ không điện động (volatile*). Theo mặc định, các bản ghi của journald sẽ bị mất hoặc bị xóa bất cứ khi nào PC của bạn khởi động lại hoặc mất nguồn. Linux phân bổ một lượng RAM cố định cho các log của jounald để tránh làm tắc nghẽn bộ nhớ hệ thống của bạn.

Cách sử dụng lệnh journalctl

Bạn có thể sử dụng journalctl để truy vấn journal của systemd hoặc journald logs (nhật ký của journald). Hệ thống lập chỉ mục (index) tất cả các journald logs để nâng cao hiệu quả khi đọc các thông báo nhật ký từ journal. 

Lưu ý: Hướng dẫn này sử dụng sudo để chạy các lệnh sử dụng các đặc quyền nâng cao vì lệnh journalctl sẽ không liệt kê tất cả các thông báo nhật ký khi bạn chạy nó với tư cách là người dùng Linux thông thường.

Xem tất cả tin nhắn nhật ký

Để xem tất cả các journald logs, chỉ cần chạy lệnh journalctl mà không có bất kỳ đối số nào:

sudo journalctl

Lệnh journalctl sẽ liệt kê tất cả các journald logs trên hệ thống của bạn theo thứ tự thời gian. Lệnh sử dụng less trong background, mang lại cho bạn khả năng điều hướng giống như nếu bạn đang sử dụng lệnh less. Ví dụ: bạn có thể điều hướng qua các bản ghi bằng các phím F và B trên bàn phím của mình.

Nếu bạn muốn thay đổi thứ tự mà hệ thống xuất ra các bản ghi, tức là hiển thị bản ghi mới nhất trước, bạn có thể sử dụng cờ (flag) -r với lệnh. Cờ -r là viết tắt của Reverse (đảo ngược).

sudo journalctl -r

Xem journald Logs của hạt nhân Linux

Nhật ký hạt nhân rất quan trọng trên Linux vì chúng chứa thông tin liên quan đến hệ thống của bạn từ khi khởi động. Để chỉ xem nhật ký hạt nhân, hãy chỉ định cờ -k bằng lệnh journalctl:

sudo journalctl -k

Đầu ra cũng sẽ liệt kê một số thông tin về hạt nhân, chẳng hạn như phiên bản hạt nhân và tên của nó.

Lọc journald Logs theo một chương trình cụ thể

Bạn cũng có thể xem nhật ký liên quan đến một chương trình hoặc dịch vụ cụ thể bằng cách sử dụng journalctl. Ví dụ: để xem nhật ký được liên kết với dịch vụ cron, hãy chạy lệnh dưới đây:

sudo journalctl -u cron

Xem thông báo nhật ký trong thời gian thực

Đôi khi bạn có thể muốn xem nhật ký trong thời gian thực khi chúng đang được ghi. Để làm điều đó, hãy phát hành lệnh sau:

sudo journalctl -f

Sử dụng phím tắt Ctrl + C để thoát khỏi chế độ xem thời gian thực.

Nhận thông báo nhật ký theo ngày

Bạn có thể sử dụng journalctl để lọc và phân tích nhật ký bằng dấu thời gian. Ví dụ: để hiển thị nhật ký từ hôm qua đến nay:

sudo journalctl --since=yesterday

Bạn có thể cụ thể hơn bằng cách sử dụng dấu thời gian chi tiết “since” (kể từ) và “until” (cho đến) như sau:

sudo journalctl --since="2021-07-17 12:00:00" --until="2021-07-17 15:00:00"

Journalctl sẽ chỉ hiển thị các thông báo nhật ký trong khoảng thời gian được chỉ định.

Xem thông báo nhật ký theo UID hoặc PID

Bạn cũng có thể lọc các nhật ký của dounald bằng cách sử dụng ID người dùng (User ID, hay UID) hoặc ID quy trình (Process ID, hay PID). Cú pháp cơ bản là:

sudo journalctl _UID=0

… trong đó 0 là UID cho tài khoản gốc (root account). Bạn cũng có thể thay thế UID trong lệnh nói trên bằng PID hoặc GID (ID nhóm).

Định dạng đầu ra Journalctl

Để xem nhật ký Journalctl bằng định dạng đầu ra cụ thể, bạn nên sử dụng lệnh journalctl -o theo sau là định dạng ưa thích của bạn. Ví dụ: để hiển thị nhật ký ở định dạng JSON, hãy chạy lệnh dưới đây:

sudo journalctl -o json-pretty

Đầu ra:

CÓ LIÊN QUAN:Bắt Đầu Với Đăng Nhập Hệ Thống Trong Linux

Cấu hình journald trên Linux

Hướng dẫn này đã chỉ cho bạn cách xem và phân tích các thông báo nhật ký của journald trên Linux bằng cách sử dụng lệnh journalctl. Thư mục /var/log/journal lưu trữ tất cả các journald logs. Lưu ý rằng, không phải tất cả các bản phân phối Linux đều bật journald theo mặc định.

Bạn có thể sử dụng tệp /etc/systemd/journald.conf để định cấu hình hoặc thực hiện các thay đổi đối với cấu hình journald trên PC của mình. 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/view-and-analyze-logs-with-journalctl-linux/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!