Giới thiệu
Trong lab này, chúng ta sẽ khám phá lệnh journalctl
của Linux, một công cụ mạnh mẽ để xem và phân tích nhật ký hệ thống được duy trì bởi systemd journal. Lab sẽ đề cập đến mục đích và chức năng của journalctl
, cũng như các tùy chọn lọc khác nhau của nó để giúp bạn quản lý và khắc phục sự cố hệ thống Linux của mình một cách hiệu quả. Chúng ta sẽ bắt đầu bằng cách tìm hiểu mục đích của systemd journal và cách sử dụng journalctl
để truy cập nhật ký. Sau đó, chúng ta sẽ đi sâu hơn vào khả năng lọc của journalctl
để giúp bạn nhanh chóng tìm thấy thông tin liên quan mà bạn cần. Cuối cùng, chúng ta sẽ trình bày các ví dụ thực tế về việc sử dụng các lệnh journalctl
để phân tích nhật ký hệ thống.
Tìm hiểu Mục đích và Chức năng của journalctl
Trong bước này, chúng ta sẽ khám phá mục đích và chức năng của lệnh journalctl
trong Linux. Lệnh journalctl
là một công cụ mạnh mẽ được sử dụng để xem và phân tích nhật ký hệ thống được duy trì bởi systemd journal.
Trước tiên, hãy hiểu mục đích của systemd journal. Systemd journal là một hệ thống ghi nhật ký thu thập và lưu trữ nhật ký hệ thống, bao gồm các thông báo từ kernel, các dịch vụ hệ thống và các ứng dụng của người dùng. Lệnh journalctl
cung cấp một cách để truy cập và tương tác với các nhật ký này.
Để bắt đầu, hãy chạy lệnh journalctl
mà không có bất kỳ tùy chọn nào:
sudo journalctl
Điều này sẽ hiển thị toàn bộ lịch sử nhật ký được duy trì bởi systemd journal. Đầu ra sẽ bao gồm nhiều mục nhật ký khác nhau, chẳng hạn như thông báo khởi động hệ thống, cập nhật trạng thái dịch vụ và báo cáo lỗi.
Ví dụ về đầu ra:
-- Logs begin at Tue 2023-04-25 10:00:00 UTC, end at Tue 2023-04-25 10:05:00 UTC. --
Apr 25 10:00:00 labex systemd[1]: Starting Login Service...
Apr 25 10:00:01 labex systemd[1]: Started Login Service.
Apr 25 10:00:01 labex sshd[123]: Server listening on 0.0.0.0 port 22.
Apr 25 10:00:02 labex sshd[123]: Server listening on :: port 22.
Apr 25 10:00:02 labex sshd[124]: Accepted password for labex from 10.0.2.2 port 49876 ssh2
Như bạn có thể thấy, lệnh journalctl
hiển thị các mục nhật ký theo thứ tự thời gian, với mỗi mục chứa dấu thời gian, tên máy chủ và thông báo nhật ký.
Bây giờ, hãy khám phá một số chức năng chính của lệnh journalctl
:
- Lọc nhật ký: Bạn có thể lọc các mục nhật ký dựa trên các tiêu chí khác nhau, chẳng hạn như mức nhật ký, dịch vụ hoặc unit đã tạo nhật ký hoặc dấu thời gian. Chúng ta sẽ đề cập đến các tùy chọn lọc nâng cao hơn trong bước tiếp theo.
- Xem nhật ký cho các dịch vụ cụ thể: Bạn có thể xem nhật ký cho một dịch vụ hoặc system unit cụ thể bằng cách sử dụng tùy chọn
-u
theo sau là tên dịch vụ. Ví dụ:sudo journalctl -u sshd.service
sẽ hiển thị nhật ký cho SSH daemon. - Xem nhật ký cho lần khởi động hiện tại: Bạn có thể xem nhật ký cho phiên khởi động hiện tại bằng cách sử dụng tùy chọn
-b
. Điều này hữu ích cho việc khắc phục các sự cố xảy ra trong quá trình khởi động hệ thống gần đây nhất. - Xem nhật ký trong thời gian thực: Bạn có thể sử dụng tùy chọn
-f
để theo dõi nhật ký trong thời gian thực, tương tự như lệnhtail -f
.
Trong bước tiếp theo, chúng ta sẽ đi sâu hơn vào các tùy chọn lọc có sẵn với lệnh journalctl
và khám phá các ví dụ thực tế hơn.
Khám phá các Tùy chọn Lọc journalctl
Trong bước này, chúng ta sẽ khám phá các tùy chọn lọc khác nhau có sẵn với lệnh journalctl
. Lọc cho phép bạn thu hẹp các mục nhật ký và tập trung vào thông tin cụ thể có liên quan đến nhu cầu giám sát hoặc khắc phục sự cố của bạn.
Hãy bắt đầu bằng cách lọc nhật ký dựa trên mức nhật ký. Để chỉ xem các mục nhật ký lỗi và nghiêm trọng, bạn có thể sử dụng tùy chọn -p
(priority):
sudo journalctl -p err..crit
Điều này sẽ chỉ hiển thị các mục nhật ký có mức độ ưu tiên là "error" hoặc cao hơn (critical).
Ví dụ về đầu ra:
Apr 25 10:00:00 labex systemd[1]: Failed to start Login Service.
Apr 25 10:00:01 labex sshd[123]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Tiếp theo, bạn có thể lọc nhật ký dựa trên một dịch vụ hoặc system unit cụ thể. Ví dụ: để xem nhật ký cho SSH daemon, bạn có thể sử dụng tùy chọn -u
(unit):
sudo journalctl -u sshd.service
Điều này sẽ hiển thị tất cả các mục nhật ký liên quan đến SSH daemon.
Bạn cũng có thể lọc nhật ký dựa trên một khoảng thời gian cụ thể. Để xem nhật ký trong 30 phút qua, bạn có thể sử dụng các tùy chọn -n
(number) và -s
(since):
sudo journalctl -n 100 -s "30 minutes ago"
Điều này sẽ hiển thị 100 mục nhật ký gần đây nhất từ 30 phút qua.
Một tùy chọn lọc hữu ích khác là tùy chọn -b
(boot), cho phép bạn xem nhật ký cho một phiên khởi động cụ thể. Ví dụ: để xem nhật ký cho phiên khởi động hiện tại, bạn có thể sử dụng:
sudo journalctl -b
Bạn cũng có thể kết hợp nhiều tùy chọn lọc để tinh chỉnh thêm tìm kiếm của mình. Ví dụ: để xem các mục nhật ký lỗi và nghiêm trọng cho SSH daemon trong 30 phút qua, bạn có thể sử dụng:
sudo journalctl -u sshd.service -p err..crit -n 100 -s "30 minutes ago"
Bằng cách khám phá các tùy chọn lọc này, bạn có thể điều hướng và phân tích hiệu quả nhật ký hệ thống để khắc phục sự cố, giám sát tình trạng hệ thống và hiểu rõ hơn về môi trường Linux của bạn.
Trong bước tiếp theo, chúng ta sẽ đi sâu hơn vào các trường hợp sử dụng nâng cao hơn và các ví dụ thực tế về lệnh journalctl
.
Phân tích Nhật ký bằng Lệnh journalctl
Trong bước cuối cùng này, chúng ta sẽ khám phá các trường hợp sử dụng nâng cao hơn của lệnh journalctl
để phân tích nhật ký hệ thống một cách hiệu quả.
Một tính năng mạnh mẽ của journalctl
là khả năng xem nhật ký ở định dạng có cấu trúc. Theo mặc định, journalctl
hiển thị nhật ký ở định dạng dễ đọc, nhưng bạn có thể sử dụng tùy chọn -o
(output) để thay đổi định dạng đầu ra. Ví dụ: để xem nhật ký ở định dạng JSON, bạn có thể sử dụng:
sudo journalctl -o json
Điều này sẽ hiển thị các mục nhật ký ở định dạng JSON có cấu trúc, có thể hữu ích cho phân tích theo chương trình hoặc tích hợp với các công cụ khác.
Một tính năng hữu ích khác là khả năng xem nhật ký cho một quy trình hoặc ứng dụng cụ thể. Bạn có thể sử dụng tùy chọn -u
(unit) để lọc nhật ký theo một dịch vụ hoặc system unit cụ thể, như chúng ta đã thấy trong bước trước. Ngoài ra, bạn có thể sử dụng tùy chọn -t
(identifier) để lọc nhật ký theo một ID quy trình (PID) hoặc tên tệp thực thi cụ thể. Ví dụ: để xem nhật ký cho quy trình sshd
, bạn có thể sử dụng:
sudo journalctl -t sshd
Điều này sẽ hiển thị tất cả các mục nhật ký liên quan đến quy trình sshd
.
Bạn cũng có thể sử dụng các tùy chọn --since
và --until
để lọc nhật ký theo một khoảng thời gian cụ thể. Ví dụ: để xem nhật ký trong 24 giờ qua, bạn có thể sử dụng:
sudo journalctl --since "1 day ago"
Điều này sẽ hiển thị tất cả các mục nhật ký từ 24 giờ qua.
Cuối cùng, bạn có thể sử dụng tùy chọn --follow
(-f
) để liên tục theo dõi các mục nhật ký trong thời gian thực, tương tự như lệnh tail -f
. Điều này có thể hữu ích để theo dõi các sự kiện trực tiếp hoặc khắc phục sự cố khi chúng xảy ra.
sudo journalctl -f
Bằng cách kết hợp các tính năng nâng cao này, bạn có thể phân tích và khắc phục sự cố hệ thống một cách hiệu quả bằng lệnh journalctl
. Hãy nhớ rằng, bạn càng thực hành với journalctl
, bạn sẽ càng cảm thấy thoải mái hơn trong việc điều hướng và giải thích nhật ký hệ thống.
Tóm tắt
Trong lab này, trước tiên chúng ta đã khám phá mục đích và chức năng của lệnh journalctl
trong Linux. Chúng ta đã học được rằng lệnh journalctl
được sử dụng để xem và phân tích nhật ký hệ thống được duy trì bởi systemd journal, thu thập và lưu trữ nhật ký từ kernel, các dịch vụ hệ thống và các ứng dụng của người dùng. Sau đó, chúng ta đã chạy lệnh journalctl
mà không có bất kỳ tùy chọn nào để xem toàn bộ lịch sử nhật ký và thảo luận về các tính năng chính của lệnh, bao gồm khả năng lọc nhật ký dựa trên các tiêu chí khác nhau và xem nhật ký cho các dịch vụ cụ thể.
Tiếp theo, chúng ta sẽ khám phá các tùy chọn lọc nâng cao có sẵn với lệnh journalctl
và tìm hiểu cách phân tích nhật ký bằng nhiều lệnh khác nhau.