Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Wie kann ich Benutzerdatenausgaben an die Konsolenprotokolle einer EC2-Instance senden, auf der RHEL ausgeführt wird?
Ich möchte eine Fehlerbehebung für meinen Amazon Elastic Compute Cloud (Amazon EC2) Linux RHEL 7-, RHEL 8- oder RHEL 9-Instance-Bootstrap durchführen. Ich möchte den Aufruf von Benutzerdaten protokollieren und das Ergebnis in die Konsolenprotokolle übertragen.
Kurzbeschreibung
Ändere dein Bash-Skript „user-data“ so, dass alle Ausgaben umgeleitet werden, um Probleme mit deiner EC2-Instance-Bootstrap zu beheben. Leite die Ausgabe sowohl nach /var/log/user-data.log als auch nach /dev/console um. Sobald das Skript ausgeführt wird, kannst du die Protokolle der Benutzerdatenaufrufe direkt in deiner Konsole einsehen.
Hinweis: Die folgende Auflösung gilt nur für RHEL 7, RHEL 8 und RHEL 9. Informationen zu Amazon Linux 2 und Amazon Linux 2023 findest du unter Wie sende ich Benutzerdatenausgaben an die Konsolenprotokolle einer EC2-Instance für Amazon Linux 1, Amazon Linux 2 oder Amazon Linux 2023?
Lösung
Gehe wie folgt vor, um die Benutzerdatenausgabe an die Konsolenprotokolle einer EC2-Instance zu senden, auf der RHEL ausgeführt wird:
-
Öffne die Amazon-EC2-Konsole.
-
Stelle eine Verbindung zu einer vorhandenen Instance her oder starte eine neue Instance. Dann verwende SSH, um eine Verbindung zur Instance herzustellen.
-
Bearbeite die Zeile GRUB_CMDLINE_LINUX in /etc/default/grub und ändere console=ttyS0,115200N8 console=tty0 in 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 -
Führe das folgende Skript aus, um die Datei /boot/grub2/grub.cfgneu zu erstellen:
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 -
(Optional) Um die Benutzerdaten bei jedem Neustart der Instance auszuführen, konfiguriere das Benutzerdatenskript und die cloud-init-Anweisungen mit einer mehrteiligen MIME-Datei.
Hinweis: Standardmäßig werden Benutzerdatenskripts und Cloud-Init-Direktiven nur während des ersten Startzyklus eines EC2-Instance-Starts ausgeführt. -
Um die Benutzerdatenausgabe an die Konsole umzuleiten, führe den folgenden Befehl aus, um das Benutzerdatenfeld zu bearbeiten:
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!" --//--Hinweis: Das Skript zur Umleitung der Benutzerdatenausgabe beginnt mit der Zeile #!/bin/bash -xe. Das vorhergehende Skript besteht aus cloud-Init-Konfigurationsdaten, bei denen das Shell-Skript bei jedem Start der Instance ausgeführt wird. Im vorangegangenen Befehl leitet die folgende Zeile die Benutzerdatenausgabe um:
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 -
Starte die Instance und sieh dir dann die Protokollausgabe der Konsole an. Du erhältst eine Ausgabe der Konsole, die dem folgenden Beispiel ähnelt:
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!
Wichtig: Die Benutzerdaten sind in der Konsole sichtbar. Nimm keine vertraulichen Informationen in die von dir gesendeten Daten auf.
Ähnliche Informationen
Führen Sie Start-Befehle beim Hochfahren einer Linux-Instance aus
- Themen
- Compute
- Tags
- LinuxAmazon EC2
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Monaten