사용자 데이터 출력을 RHEL을 실행하는 EC2 인스턴스의 콘솔 로그로 전송하려면 어떻게 해야 합니까?
Amazon Elastic Compute Cloud(Amazon EC2) Linux RHEL 7, RHEL 8 또는 RHEL 9 인스턴스 부트스트랩 문제를 해결하려고 합니다. 사용자 데이터 호출을 로깅한 다음 콘솔 로그로 전송하고 싶습니다.
간략한 설명
EC2 인스턴스 부트스트랩의 문제를 해결하려면 모든 출력을 리디렉션하도록 사용자 데이터 Bash 스크립트를 수정하십시오. 출력을 /var/log/user-data.log 및 /dev/console 모두로 리디렉션합니다. 스크립트가 실행되면 콘솔에서 직접 사용자 데이터 호출 로그를 볼 수 있습니다.
**참고:**다음 해결 방법은 RHEL 7, RHEL 8, RHEL 9에만 해당됩니다. Amazon Linux, Amazon Linux 2 및 Amazon Linux 2023에 대한 자세한 내용은 Amazon Linux 1, Amazon Linux 2 또는 Amazon Linux 2023용 EC2 인스턴스에서 사용자 데이터 출력을 콘솔 로그로 보내려면 어떻게 해야 합니까?를 참조하십시오.
해결 방법
RHEL을 실행하는 EC2 인스턴스의 콘솔 로그에 사용자 데이터 출력을 보내려면 다음 단계를 완료하십시오.
-
Amazon EC2 콘솔을 엽니다.
-
기존 인스턴스에 연결하거나 새 인스턴스를 시작합니다. 그런 다음 SSH를 사용하여 인스턴스에 연결합니다.
-
/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
RHEL 9
# cat /etc/default/grub GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295" GRUB_TIMEOUT=0 GRUB_ENABLE_BLSCFG=true GRUB_DEFAULT=saved
-
/boot/grub2/grub.cfg 파일을 다시 생성하려면 다음 스크립트를 실행합니다.
RHEL 7# grub2-mkconfig -o /boot/grub2/grub.cfgGenerating 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
RHEL 9
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Adding boot menu entry for UEFI Firmware Settings ... done
-
(선택 사항) 인스턴스가 재부팅될 때마다 사용자 데이터를 실행하려면 MIME 멀티파트 파일을 사용하여 사용자 데이터 스크립트와 cloud-init 지시문을 구성합니다.
참고: 기본적으로 사용자 데이터 스크립트와 cloud-init 지시문은 EC2 인스턴스 시작의 첫 번째 부팅 주기 동안에만 실행됩니다. -
사용자 데이터 출력을 콘솔로 리디렉션하려면 다음 명령을 실행하여 사용자 데이터 필드를 편집합니다.
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/redhat-release echo "Hello from user-data!" --//--
참고: 사용자 데이터 출력을 리디렉션하는 스크립트는 #!/bin/bash -xe 줄로 시작합니다. 위 스크립트는 인스턴스가 시작될 때마다 실행되는 셸 스크립트가 있는 cloud-init 구성 데이터입니다. 이전 명령에서 다음 줄은 사용자 데이터 출력을 리디렉션합니다.
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
-
인스턴스를 시작한 다음 콘솔 로그 출력을 봅니다. 다음 예와 유사한 콘솔 출력이 표시됩니다.
RHEL 7<13>May 21 03:11:44 user-data: + cat /etc/redhat-release <13>May 21 03:11:44 user-data: Red Hat Enterprise Linux Server release 7.9 (Maipo) <13>May 21 03:11:44 user-data: + echo 'Hello from user-data!' <13>May 21 03:11:44 user-data: Hello from user-data!
RHEL 8
<13>May 21 03:11:21 user-data: + cat /etc/redhat-release <13>May 21 03:11:21 user-data: Red Hat Enterprise Linux release 8.6 (Ootpa) <13>May 21 03:11:21 user-data: + echo 'Hello from user-data!' <13>May 21 03:11:21 user-data: Hello from user-data!
RHEL 9
<13>May 21 03:12:34 user-data: + cat /etc/redhat-release <13>May 21 03:12:34 user-data: Red Hat Enterprise Linux release 9.3 (Plow) <13>May 21 03:12:34 user-data: + echo 'Hello from user-data!' <13>May 21 03:12:34 user-data: Hello from user-data!
중요: 사용자 데이터는 콘솔에서 볼 수 있습니다. 보내는 데이터에 기밀 정보를 넣지 마십시오.
관련 정보
관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 2년 전lg...
- 질문됨 2년 전lg...