我如何将用户数据输出发送到 Amazon Linux 1、Amazon Linux 2 或 Amazon Linux 2023 的 EC2 实例上的控制台日志?

1 分钟阅读
0

我想记录用户数据调用并将其发送到我的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例上的控制台日志。

简短描述

​要解决有关 EC2 实例引导的问题而不必通过 SSH 访问实例,您可以将代码添加到用户数据 bash 脚本,该脚本将所有输出重定向到 /var/log/user-data.log/dev/console。当代码运行时,您可以在控制台中看到用户数据调用日志。

**注意:**此解决方法仅适用于 Amazon Linux 1、Amazon Linux 2 和 Amazon Linux 2023。有关运行 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

默认情况下,用户数据脚本和 cloud-init 指令仅在首次启动实例时运行。有关更多信息,请参阅如何利用用户数据在每次重启 Amazon EC2 Linux 实例时自动运行脚本?

以下是控制台输出示例:

<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 系统上构建的实例支持检索最新的串行控制台输出。有关更多信息,请参阅实例控制台输出

相关信息

启动时在您的 Linux 实例上运行命令

AWS 官方
AWS 官方已更新 2 年前