Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何將使用者資料輸出傳送至執行 RHEL 的 EC2 執行個體上的控制台日誌?
我想對 Amazon Elastic Compute Cloud (Amazon EC2) Linux RHEL 7、RHEL 8 或 RHEL 9 執行個體啟動程序進行疑難排解。我想記錄使用者資料調用情況,然後將其傳送至主控台日誌。
簡短描述
若要對 EC2 執行個體啟動程序的問題進行疑難排解,請修改使用者資料 bash 指令碼,以重新導向所有輸出。將輸出重新導向到 /var/log/user-data.log 和 /dev/console。執行指令碼時,您可以直接在主控台中檢視使用者資料調用日誌。
**注意:**以下解決方案僅適用於 RHEL 7、RHEL 8 和 RHEL 9。如需 Amazon Linux 2 和 Amazon Linux 2023 的資訊,請參閱如何將使用者資料輸出傳送到 Amazon Linux 1、Amazon Linux 2 或 Amazon Linux 2023 的 EC2 執行個體上的主控台日誌?
解決方法
若要將使用者資料輸出傳送至執行 RHEL 之 EC2 執行個體上的主控台日誌,請完成下列步驟:
-
開啟 Amazon EC2 console (Amazon EC2 主控台)。
-
編輯 /etc/default/grub 中的 GRUB_CMDLINE_LINUX 行,並將「console=ttyS0,115200n8 console=tty0」變更為「console=tty1 console=ttyS0」:
RHEL 7# cat /etc/default/grub GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau crashkernel=auto" GRUB_DISABLE_RECOVERY="true"RHEL 8
# cat /etc/default/grub GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=trueRHEL 9
# cat /etc/default/grub GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295" GRUB_TIMEOUT=0 GRUB_ENABLE_BLSCFG=true GRUB_DEFAULT=saved -
若要重新建立 ** /boot/grub2/grub.cfg ** 檔案,請執行下列指令碼:
RHEL 7# grub2-mkconfig -o /boot/grub2/grub.cfgGenerating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-1062.1.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-1062.1.2.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-026767dbe06a4910a5ce3bd0def903c0 Found initrd image: /boot/initramfs-0-rescue-026767dbe06a4910a5ce3bd0def903c0.img doneRHEL 8
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... doneRHEL 9
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Adding boot menu entry for UEFI Firmware Settings ... done -
(選用) 若要在每次執行個體重新啟動時執行使用者資料,請使用 MIME 多部分檔案設定使用者資料指令碼和 cloud-init 指令。
**注意:**預設情況下,使用者資料指令碼和 cloud-init 指令僅在 EC2 執行個體啟動的第一個啟動週期內執行。 -
若要將使用者資料輸出重新導向至主控台,請執行下列命令來編輯使用者資料欄位:
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash -xe exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 cat /etc/redhat-release echo "Hello from user-data!" --//--**注意:**重新導向使用者資料輸出的指令碼以 #!/bin/bash -xe 行開頭。上述指令碼是 cloud-init 組態資料,每次執行個體啟動時都會執行 shell 指令碼。在上述命令中,以下行會重新導向使用者資料輸出:
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 -
啟動執行個體,然後查看主控台日誌輸出。您會收到類似以下範例的主控台輸出:
RHEL 7<13>May 21 03:11:44 user-data: + cat /etc/redhat-release <13>May 21 03:11:44 user-data: Red Hat Enterprise Linux Server release 7.9 (Maipo) <13>May 21 03:11:44 user-data: + echo 'Hello from user-data!' <13>May 21 03:11:44 user-data: Hello from user-data!RHEL 8
<13>May 21 03:11:21 user-data: + cat /etc/redhat-release <13>May 21 03:11:21 user-data: Red Hat Enterprise Linux release 8.6 (Ootpa) <13>May 21 03:11:21 user-data: + echo 'Hello from user-data!' <13>May 21 03:11:21 user-data: Hello from user-data!RHEL 9
<13>May 21 03:12:34 user-data: + cat /etc/redhat-release <13>May 21 03:12:34 user-data: Red Hat Enterprise Linux release 9.3 (Plow) <13>May 21 03:12:34 user-data: + echo 'Hello from user-data!' <13>May 21 03:12:34 user-data: Hello from user-data!
**重要:**您的使用者資料可在主控台中顯示。不要在傳送的資料中加入機密資訊。
相關資訊
相關內容
- 已提問 1 年前
- 已提問 2 年前
- 已提問 2 年前

