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

2 分钟阅读
0

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

简短描述

要对 EC2 实例相关问题进行故障排除,请修改您的用户数据 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 实例上的控制台日志?

解决方法

完成以下步骤:

  1. 停止实例

  2. 依次选择 Actions(操作)和 Instance Settings(实例设置),然后选择 Edit User Data(编辑用户数据)。

  3. 添加以下脚本,然后选择 Save(保存)。

    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!"
    
    --//--

    **注意:**重定向用户数据输出的脚本以 #!/bin/bash -xe 行开头。前面的脚本为 cloud-init 配置数据,每次启动实例时都会运行 Shell 脚本。有关详细信息,请参阅如何在每次重新启动 Amazon EC2 Linux 实例时使用用户数据自动运行脚本?在前面的命令中,以下行用于重定向用户数据输出:

    exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

    以下是 Amazon Linux 2023 实例的示例控制台输出:

    <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!

    **注意:**发布的系统(控制台)日志输出不会持续更新。在 Nitro 系统上构建的实例支持检索最新的串行控制台输出。有关更多信息,请参阅实例控制台输出

相关信息

在启动包含用户数据输入的 EC2 实例时运行命令

AWS 官方
AWS 官方已更新 6 个月前