一名初級工程師在 AWS EC2 Linux 實例上執行日志查詢操作,但是發現沒有找到/var/log/messages/ 日志目錄。工程師確認該實例是基于 Amazon Linux 2023 的操作系統。
[ec2-user@ip-172-31-26-105 ~]$ cat /proc/version Linux version 6.1.119-129.201.amzn2023.x86_64 (mockbuild@ip-10-0-49-203) (gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), GNU ld version 2.39-6.amzn2023.0.10) #1 SMP PREEMPT_DYNAMIC Tue Dec 3 21:07:35 UTC 2024
默認情況下,在 Amazon Linux 2023 中并未安裝 rsyslog 服務,因此,/var/log 目錄中的相應文件(例如 /var/log/messages)中也不可用(Amazon Linux 2 保留此服務以實現向后兼容性)。Amazon Linux 2 和 Amazon Linux 2023 中的默認服務管理器是 systemd,它使用 systemd-journald 創建日志,systemd-journald 服務不會將信息記錄到文件中(例如 messages、secure、maillog 和 spooler 中),相反 systemd-journald 將系統信息存儲在 /var/log/journal 中。要查詢日志,可以運行 journalctl 命令。
根據消息的日志級別檢查日志,包括 emerg、alert、crit、err
[ec2-user@ip-172-31-26-105 ~]$ man journalctl
……
-p, --priority=
Filter output by message priorities or priority ranges. Takes either a single numeric or textual log level (i.e. between 0/"emerg" and 7/"debug"), or
a range of numeric/text log levels in the form FROM..TO. The log levels are the usual syslog log levels as documented in syslog(3), i.e. "emerg" (0),
"alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7).
……
[ec2-user@ip-172-31-26-105 ~]$ journalctl -p err
如果需要使用傳統的日志記錄方式,可以安裝 rsyslog 服務。
[ec2-user@ip-172-31-26-105 ~]$ sudo dnf list rsyslog Last metadata expiration check: 7:46:29 ago on Wed Dec 11 00:50:07 2024. Available Packages rsyslog.x86_64 8.2204.0-3.amzn2023.0.4 amazonlinux [ec2-user@ip-172-31-26-105 ~]$ sudo dnf install rsyslog -y Last metadata expiration check: 7:48:08 ago on Wed Dec 11 00:50:07 2024. …… Installed: …… Complete! [ec2-user@ip-172-31-26-105 ~]$ sudo dnf list rsyslog Last metadata expiration check: 7:49:06 ago on Wed Dec 11 00:50:07 2024. Installed Packages rsyslog.x86_64 [ec2-user@ip-172-31-26-105 ~]$ ls /var/log/me* /var/log/messages [ec2-user@ip-172-31-26-105 ~]$