Amazon CloudWatch란?
Amazon Web Services(AWS) 리소스와 AWS에서 실시간으로 실행 중인 애플리케이션을 모니터링합니다.
지표를 감시해 알림을 보내거나 임계값을 위반한 경우 모니터링 중인 리소스를 자동으로 변경하는 경보를 생성할 수 있습니다.
- CloudWatch로 인스턴스 모니터링
- Amazon EC2는 기본적으로 측정치 데이터를 5분 동안 CloudWatch에 전송합니다.
- CPUUtilization : 인스턴스에서 현재 사용 중인 할당된 EC2 컴퓨팅 유닛(ECU)의 비율(%)입니다 , 단위: 백분율
[실습 전 사전 준비 사항]
신규 VPC 생성 : SecondVPC 생성
1. 서비스 -> VPC -> 'VPC 마법사 시작' 클릭
2. '단일 퍼블릭 서브넷이 있는 VPC' -> 선택
3. 아래 내용처럼 입력 후 'VPC 생성' 클릭
IPv4 CIDR 블록 : 10.20.0.0/16
VPC 이름 : SecondVPC
퍼블릭 서브넷의 IPv4 CIDR : 10.20.1.0/24
가용 영역 : ap-northeast-2a
서브넷 이름 : SecondVPC-Subnet1
[실습] 인스턴스 배포 및 모니터링/알람
1. 인스턴스 배포
https://watermelon-sugar.tistory.com/14 1주 차 글을 참고
1주 차 인스턴스 생성과 다른 부분은 단계 3 : 인스턴스 세부 정보 구성, 단계 5 : 태그 추가 부분만 바꿔주시길 바랍니다.
단계 3 : 인스턴스 세부 정보 구성
- 네트워크 : SecondVPC
- 서브넷 : 'SecondVPC' 선택 시 자동으로 1개 있는 서브넷 선택됨
- 퍼블릭 IP 자동 할당 : 활성화
- 고급 세부 정보
사용자 데이터에 아래 내용을 복사 붙여 넣기 -> 인스턴스 시작 시 명령 실행합니다.
(호스트 네임을 바꿔주고 웹서버를 설치, 실행해주는 명령어입니다.)
#!/bin/bash
hostnamectl --static set-hostname AFOS2-WebSrv
yum install httpd -y
systemctl start httpd && systemctl enable httpd
echo "<h1>Welcome to AFOS2 Web Server</h1>" > /var/www/html/index.html
단계 5 : 태그 추가
- 키: Name & 값 : WebSrv
나머지는 1주차 구성과 똑같이 인스턴스 생성
2. 인스턴스의 퍼블릭 IP를 확인 후 SSH 프로그램으로 접속
저는 MobaXterm로 접속해보겠습니다.
프로그램 실행 후 아래와 같이 설정 후 OK클릭
접속이 잘된 것을 확인할 수 있습니다.
3. EC2 퍼블릭 IP로 웹브라우저 접속 확인
- 인스턴스 생성할 때 넣었던 스트립트 명령 적용 확인
- EC2 기본 정보 확인
서비스 -> EC2 -> 인스턴스 클릭 -> 모니터링 -> CPU사용률(%) 확인
# CPU 확인
cat /proc/cpuinfo
[root@ip-172-31-43-250 ~]# cat /proc/cpuinfo |egrep '(processor|name)'
processor : 0
model name : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
# 메모리 확인 1GiB
[root@ip-172-31-43-250 ~]# cat /proc/meminfo |grep MemTotal
MemTotal: 1006900 kB
# 다양한 시스템 관련 부하 확인 툴 설치
# sudo 는 슈퍼유저의 권한으로 실행
[ec2-user@ip-172-31-46-223 ~]$ sudo yum -y install htop
# htop 으로 CPU Memory 등 시스템 자원 확인
[ec2-user@ip-172-31-46-223 ~]$ htop
# 프라이빗 IP 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ ip -br -c addr show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 172.31.46.223/20 fe80::880:baff:fe0f:2598/64
[ec2-user@ip-172-31-46-223 ~]$ ip a
# 퍼블릭 IP 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ curl ipinfo.io
# 스토리지 확인 : 부트볼륨(EBS) 정보 확인
[ec2-user@ip-172-31-46-223 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
[ec2-user@ip-172-31-46-223 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 460K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 1.4G 6.7G 18% /
tmpfs 99M 0 99M 0% /run/user/0
tmpfs 99M 0 99M 0% /run/user/1000
# 서비스 제공 확인(포트 Listen) : SSH(서버 서비스 중, TCP 22 포트 사용) , HTTP(서버 서비스 중, TCP 80 포트 사용)
# 예시) ss -t(TCP) -l(Listen) -n(숫자로 출력)
[ec2-user@ip-172-31-46-223 ~]$ ss -tl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 *:http *:*
...
[ec2-user@ip-172-31-46-223 ~]$ ss -tln
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80 *:*
...
4. EC2 CPUUtilization(사용률) 경보(Alarm) 생성
EC2 1분간격 모니터링 설정(약간의 추가 비용 발생) : EC2 -> 모니터링 및 문제 해결 -> 세부 모니터링 관리[활성화]
서비스 -> CloudWatch 검색 -> 경보 -> 경보 생성
[ 단계 1 ] 지표 및 조건 지정 -> '지표 선택' -> ' EC2 ' 인스턴스별 지표 , 'CPUUtilization' 검색 후 '인스턴스ID' 확인
탭 메뉴 중 '그래프로 표시된 지표(1)' 클릭 -> 기간 1분
'그래프 옵션' 클릭 -> 위젯 유형에 '누적 면접' 클릭 -> 하단 [지표 선택] 클릭
임계값 유형 : 정적
경보 조건 : 보다 큼(> 임계값)
...보다 : 50
추가구성 - 누락된 데이터 처리 : 누락된 데이터를 양호(임계값 위반 안 함) 으로 처리
[단계 2] 작업 구성 -> 아래 설정 후 맨 하단 다음 클릭
경보 상태 트리거 : 경보 상태 SNS 주제 선택 : 새 주제 생성 새 주제 생성 이름 : EC2_CPU_High_Alarms_Topic 알림을 수신할 이메일 엔드포인트 : '각자 자신의 개인 이메일, 이메일2...' ← @kakao.com 이메일 권장 카톡 즉시 확인 가능
이메일을 확인 하고 Confirm subscription 클릭
EC2 작업 : EC2 작업 추가 -> 경보상태 -> 이 인스턴스 재부팅 -> 맨 하단 '다음' 클릭
[단계 3] 경보 이름 : WebSrv-CPU-High-Alarm -> 아래 '다음' 클릭
[단계 4] 맨 아래 '경보 생성' 클릭
5. CPU 부하 발생
- CPU 부하 툴 설치
sudo amazon-linux-extras install -y epel sudo yum install -y stress-ng stress-ng -h
EC2 - 모디터링 - CPU 사용률(%) 확인 -> 오른쪽 중간 상단 ' 자동 새로 고침 ' 간격 10초
(옵션) EC2 Shell 에서 top, htop 로 CPU 상태 확인
- CPU 부하 발생
sudo stress-ng --cpu 1 --cpu-load 70% --timeout 10m --metrics --times --verify
6. 알람 이메일 확인 & EC2 자동 재부팅 확인
CPU 부하 발생 후 알람 이메일과 EC2의 재부팅을 확인 할 수 있었습니다.
실습 완료 후 반드시 EC2를 삭제 해주세요!! -> 인스턴스 클릭 -> 인스턴스 종료 ->
종료 & CloudWatch 경보 -> 작업 -> 삭제
참고 : AFOS 스터디
'Cloud > AWS' 카테고리의 다른 글
[AFOS 2기] 1주차 - 1 : AWS EC2(가상서버) 배포 및 사용 (0) | 2021.06.22 |
---|---|
단일 퍼블릭 서브넷이 있는 VPC 생성 (0) | 2021.06.22 |
댓글