AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何將使用者資料輸出傳送至執行 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!
**重要:**您的使用者資料可在主控台中顯示。不要在傳送的資料中加入機密資訊。
相關資訊
相關內容
已提問 2 年前
已提問 3 年前
