如何在运行 Amazon Linux 或 Amazon Linux 2 的 EC2 实例上将用户数据输出发送到控制台日志?

上次更新时间:2020 年 8 月 14 日

我尝试排查我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的引导问题。如何记录用户数据调用日志,然后将它发送到控制台日志中?

简短描述

要在不通过 SSH 访问实例的情况下排查 EC2 实例引导问题,您可以向用户数据 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!

这篇文章对您有帮助吗?


您是否需要账单或技术支持?