如何在运行 Amazon Linux 或 Amazon Linux 2 的 EC2 实例上将用户数据输出发送到控制台日志?
上次更新日期:2021 年 2 月 4 日
我尝试排查我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的引导问题。如何记录用户数据调用日志,然后将它发送到控制台日志中?
简短描述
要解决有关 EC2 实例引导的问题而不必通过 SSH 访问实例,您可以将代码添加到用户数据 bash 脚本,该脚本将所有输出重定向到 /var/log/user-data.log 和 /dev/console。在运行代码后,您可以在控制台中查看用户数据调用日志。
注意:此解决方法仅适用于 Amazon Linux 和 Amazon Linux 2。有关运行 RHEL 7 或 RHEL 8 的实例的信息,请参阅如何为运行 RHEL 7 或 RHEL 8 的 EC2 实例记录用户数据日志,然后将其发送到控制台日志?
解决方法
输入以下命令以将用户数据输出重定向到控制台:
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
yum -y update
echo "Hello from user-data!"
下行将会重定向用户数据输出:
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
下面是示例控制台输出:
<13>Nov 13 13:49:59 user-data: amazon-ssm-agent.x86_64 0:2.3.228.0-1.amzn2
<13>Nov 13 13:49:59 user-data: irqbalance.x86_64 2:1.5.0-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: kernel-tools.x86_64 0:4.14.77-80.57.amzn2
<13>Nov 13 13:49:59 user-data: kmod.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: kmod-libs.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: lz4.x86_64 0:1.7.5-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: nss.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-sysinit.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-tools.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: openssl.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data: openssl-libs.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data:
<13>Nov 13 13:49:59 user-data: Complete!
<13>Nov 13 13:49:59 user-data: + echo 'Hello from user-data!
注意: 发布的系统(控制台)日志输出不会持续更新。基于 Nitro 系统构建的实例支持检索最新的串行控制台输出。有关更多信息,请参见实例控制台输出。