Ich möchte den Benutzerdatenaufruf protokollieren und an die Konsolenprotokolle meiner Amazon-Elastic-Compute-Cloud-Linux-Instance (Amazon EC2) senden.
Kurzbeschreibung
Ändere dein Bash-Skript „user-data“ so, dass alle Ausgaben auf die Konsole umgeleitet werden, um Probleme mit deiner EC2-Instance 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: Diese Auflösung gilt nur für Amazon Linux 1, Amazon Linux 2 und Amazon Linux 2023. Informationen zu Instances, auf denen RHEL 7 oder RHEL 8 ausgeführt wird, findest du unter Wie kann ich Benutzerdatenausgaben an die Konsolenprotokolle einer EC2-Instance senden, auf der RHEL 7 oder RHEL 8 ausgeführt wird?
Lösung
Führe die folgenden Schritte aus:
-
Stoppe die Instance.
-
Wähle Aktionen, Instance-Einstellungen und dann Benutzerdaten bearbeiten aus.
-
Füge das folgende Skript hinzu und wähle dann Speichern aus.
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/os-release | grep PRETTY_NAME
echo "Hello from user-data!"
--//--
Hinweis: Das Skript zur Umleitung der Benutzerdatenausgabe beginnt mit der Zeile #!/bin/bash -xe. Das vorherige Skript ist eine Cloud-Init-Konfigurationsdatei, die bei jedem Start der Instance ein Shell-Skript ausführt. Weitere Informationen findest du unter Wie kann ich Benutzerdaten verwenden, um bei jedem Neustart meiner Amazon-EC2-Linux-Instance automatisch ein Skript auszuführen? Im vorherigen 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
Es folgt eine Beispiel-Konsolenausgabe einer Amazon Linux 2023-Instance:
<13>Aug 13 18:43:39 user-data: + cat /etc/os-release
<13>Aug 13 18:43:39 user-data: + grep PRETTY_NAME
<13>Aug 13 18:43:39 user-data: PRETTY_NAME="Amazon Linux 2023.5.20240805"
<13>Aug 13 18:43:39 user-data: + echo 'Hello from user-data!'
<13>Aug 13 18:43:39 user-data: Hello from user-data!
Hinweis: Die veröffentlichte Systemprotokollausgabe (Konsole) wird nicht kontinuierlich aktualisiert. Instances, die auf dem Nitro-System basieren, unterstützen den Abruf der neuesten seriellen Konsolenausgabe. Weitere Informationen findest du unter Instance-Konsolenausgabe.
Ähnliche Informationen
Befehle ausführen, wenn du eine EC2-Instance mit Benutzerdateneingabe startest