<1> 목표
CloudWatch로 서버의 기본 모니터링을 하고자 한다.
<2> 작업 순서
1. 모니터링 하기 위한 사전 준비
2. Cloud Watch로 기본 모니터링 하기
3. CloudWatch 사용자 지정 모니터링 추가하기
1. 모니터링 하기 위한 사전 준비
1) 테스트 VM 1대 생성
EC2 중지, 삭제 등 모니터링 잘 되는지 테스트용
비용 안나오게 t2.micro로 생성한다.
2) AWS SNS 서비스 설정
메일로 받을시 수신 메일 사전 설정
AWS SNS > Topic 만들기 > topasvga1-mail
topasvga1로 확인 요청 메일이 간다 > 확인한다. (Confirm subscrption)
3) S3 버킷 생성
로그 저장용
cloudwatch-log1.serverchk.com
2. Cloud Watch로 기본 모니터링 하기
1) 기본 모니터링 상태는 EC2 인스턴스 > Monitoring Tab 에서 확인한다.
서버 생성되면 CloudWatch 에서 기본 모니터링은 진행된다.
항목 : CPU Utillization , Disk Reads, Disk Write , Network in , Network Out , Status Check Failed (Any, Instance, System)
1) 디폴트 5분주기로 모니터링 된다. 최소 1분으로 모니터링가능 (유료)
2) 데이터는 2주 동안만 보관합니다.
2) 빠른 모니터링을 위해서는 1분 단위 모니터링으로 변경하기 - 과금 된다.
Enable Detailed monitoring > Yes Enable 하면 1분 단위로 모니터링 한다.
3) 알람 설정하기
EC2 > Instance 클릭 Monitoring > Create Alarm > CPU가 1% 이상이면 알람오게 설정해보자.
기본적으로 CloudWatch Alarms : No Alarms configured 라고 나온다.
Name of alarm : testmon-web01-cpu-1-over-awsec2-i-05a79b076efabc69a-CPU-Utilization
4) Apache 웹서버 설치
Yum으로 설치하기
yum install httpd -y
/usr/sbin/httpd
ps -ef |grep httpd
vi /etc/httpd/conf/httpd.conf
cd /var/www/html
vi index.html
ps -ef |grep httpd
/usr/sbin/httpd stop
/usr/sbin/httpd -k restart
또는
소스 파일을 다운로드 받고, 컴파일해 설치하기
1 cd /tmp
2 ftp ftp.sayclub.co.kr
3 yum install ftp
4 ftp ftp.sayclub.co.kr
5 ls
6 tar zxvf httpd-2.4.38.tar.gz
7 cd httpd-2.4.38/
8 yum install apr*
9 yum install gcc
10 yum install pcre*
11 ./configure --prefix=/usr/local/apache
12 make ; make install
5) 웹서버 설치를 위해 파일을 받는 동안 CPU가 1% 알람 메일이 와있다.,
3. CloudWatch 사용자 지정 모니터링 추가하기
1) CloudWatch 기본 모니터링에서 안되는것
Cloud watch 에 존재하지 않는것은 메모리 사용량과 빈공간 , 스왑이다.
여기서 사용자지정 지표를 만들어 모니터링하자.
// 참고: 예전엔 스크립트로 메모리를 모니터링 했다.
// 최근엔 에이전트에서 메모리 사용 수집이 된다. 에이전트로 하자.
2) 스크립트로 메모리 모니터링하자.
Cloud watch 사용자 지정 모니터링 설정하기.
아마존 리눅스 서버의 경우.
- EC2 로그인 한다.
# yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64
# unzip CloudWatchMonitoringScripts-1.2.2.zip
# cd aws-scripts-mon
- IAM role을 만들고 서버에 할당한다.
IAM > IAM role을 만든다.
admin 권한을 role에 추가한다. // 우선 되는걸 확인하기 위해 admin권한을 주었다.
서버에 role을 준다.
EC2 > Instance Settings > Attach/Replace IAM Role
- 스크립트 실행한다.
aws-scripts-mon]# ./mon-put-instance-data.pl --mem-used --mem-avail
Successfully reported metrics to CloudWatch. Reference Id: e4b65b5b-77b6-11e9-831a-6b19662a0a9b
- 크론텝에 등록이나 작업실행도구에서 정기적으로 실행하면 메모리 현황을 볼수 있다.
# crontab -e
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron
- CloudWatch > Metrics > All metrics > Linux System > Memory Utilization 확인한다.
CloudWatch > Metrics > All metrics > Linux System > Memory Used
CloudWatch > Metrics > All metrics > Linux System > Memory Available 본다.
<3> CloudWatch가 조합해서 알람도 받을수 있습니다.
(2020년 3월 초 기능 업데이트)
https://aws.amazon.com/ko/about-aws/whats-new/2020/03/amazon-cloudwatch-now-allows-you-to-combine-multiple-alarms/?nc1=h_ls
<4> 비용이 나오지 않도록 실습종료후 만들어진 EC2는 반드시 삭제한다.!!!
https://brunch.co.kr/@topasvga/1581
감사합니다.