如何將使用者資料輸出傳送至 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 官方已更新 1 年前