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