RHEL 7 또는 RHEL 8을 실행하는 EC2 인스턴스의 콘솔 로그로 사용자 데이터 출력을 전송하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) Linux RHEL 7 또는 RHEL 8 인스턴스 부트스트랩 문제를 해결하려고 합니다. 사용자 데이터 호출을 로깅한 다음 콘솔 로그로 전송하고 싶습니다.

간략한 설명

EC2 인스턴스 부트스트랩의 문제를 해결하려면 모든 출력을 /var/log/user-data.log/dev/console로 리디렉션하는 코드를 사용자 데이터 bash 스크립트에 추가하세요. 이 조치는 SSH를 통해 해당 인스턴스에 액세스할 수 없는 경우에도 수행할 수 있습니다. 코드를 실행하면 콘솔에 사용자 데이터 간접 호출 로그가 표시됩니다.

참고: 이 해결 방법은 RHEL 7 및 RHEL 8에만 해당됩니다. Amazon Linux 및 Amazon Linux 2에 대해 자세히 알아보려면 Amazon Linux 또는 Amazon Linux 2를 실행하는 EC2 인스턴스에서 사용자 데이터 출력을 콘솔 로그로 보내려면 어떻게 해야 하나요?를 참조하세요.

해결 방법

  1. Amazon EC2 콘솔을 엽니다.

  2. 새 인스턴스를 시작하고 SSH를 해당 인스턴스에 연결합니다.

  3. /etc/default/grub에서 GRUB_CMDLINE_LINUX 줄을 수정하고 "console=ttyS0,115200n8 console=tty0"을 "console=tty1 console=ttyS0"으로 변경합니다.

    RHEL 7

    # cat /etc/default/grub
    GRUB_TIMEOUT=1
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau crashkernel=auto"
    GRUB_DISABLE_RECOVERY="true"

    RHEL 8

    # cat /etc/default/grub
    GRUB_TIMEOUT=1
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto"
    GRUB_DISABLE_RECOVERY="true"
    GRUB_ENABLE_BLSCFG=true
  4. /boot/grub2/grub.cfg 파일을 다시 생성합니다.

    RHEL 7

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-1062.1.2.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-1062.1.2.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-026767dbe06a4910a5ce3bd0def903c0
    Found initrd image: /boot/initramfs-0-rescue-026767dbe06a4910a5ce3bd0def903c0.img
    done

    RHEL 8

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    done
  5. 인스턴스를 중지합니다.

  6. 수정된 인스턴스에서 새 AMI를 생성합니다.

  7. 새 AMI에서 새로운 인스턴스를 시작합니다.

  8. 사용자 데이터 출력 콘솔을 리디렉션하려면 다음 명령을 입력합니다.

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

    다음 예시와 유사한 콘솔 출력이 표시됩니다.

    RHEL 7:

      subscription-manager.x86_64 0:1.24.26-3.el7_8
      subscription-manager-rhsm.x86_64 0:1.24.26-3.el7_8
      subscription-manager-rhsm-certificates.x86_64 0:1.24.26-3.el7_8
      sudo.x86_64 0:1.8.23-9.el7
      systemd.x86_64 0:219-73.el7_8.8
      systemd-libs.x86_64 0:219-73.el7_8.8
      systemd-sysv.x86_64 0:219-73.el7_8.8
      teamd.x86_64 0:1.29-1.el7
      tuned.noarch 0:2.11.0-8.el7
      tzdata.noarch 0:2020a-1.el7
      util-linux.x86_64 0:2.23.2-63.el7
      yum.noarch 0:3.4.3-167.el7
      yum-utils.noarch 0:1.1.31-54.el7_8
    
    Replaced:
      iwl7265-firmware.noarch 0:22.0.7.0-72.el7
    
    Complete!
    + echo 'Hello from user-data!'
    Hello from user-data!

    RHEL 8:

    Installed:
      grub2-tools-efi-1:2.02-82.el8_2.1.x86_64
    
      kernel-4.18.0-193.13.2.el8_2.x86_64
    
      kernel-core-4.18.0-193.13.2.el8_2.x86_64
    
      kernel-modules-4.18.0-193.13.2.el8_2.x86_64
    
      linux-firmware-20191202-97.gite8a0f4c9.el8.noarch
    
    Complete!
    +
    echo 'Hello from user-data!'
    Hello from user-data!

    참고: 콘솔에서 사용자 데이터를 볼 수 있으므로, 전송하는 데이터에 기밀 정보가 포함되지는 않았는지 확인하세요.

관련 정보

시작 시 Linux 인스턴스에서 명령 실행

AWS 공식
AWS 공식업데이트됨 7달 전
댓글 없음