본문 바로가기
🌴 DevOps/Cloud

[Cloudwatch] Cloudwatch로 모니터링? Custom Metric 생성

by 카프리썬_ 2020. 5. 18.
728x90

Cloduwatch 개념

AWS 리소스와 AWS에서 실시간으로 실행 중인 애플리케이션을 모니터링

 

Cloduwatch 동작원리

1. AWS 리소스들이 동작함,

2. AWS 리소스의 datapoint -> Cloudwatch의 metric으로 전송함 (Dimension 매칭해서)

3. Cloudwatch는 AWS가 보낸 datapoint를 일정주기(Period)마다 수집 함

4. datapoint기반으로 Cloudwatch의 metric을 생성함

5. metric기반으로 통계정보(Statistics)를 만듦

6. 이 값을 바탕으로 그래프생성, 알람생성

 

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/cloudwatch_architecture.html

 

Cloduwatch 세부개념

1) NameSpace

지표용 컨테이너로, Cloudwatch가 수집한 datapoint에 지정하는 서비스명

기본 네임스페이스 없음

명명규칙 : AWS/service

ex) AWS/EC2

 

2) Metric (지표)

모니터링할 변수로, Cloudwatch가 수집한 datapoint의 세트

ex) CPU사용량 Metric : Cloudwathch가 EC2의 CPU 사용량에 대해 수집한 datapoint들의 모임

 

3) Dimension (차원)

지표의 자격증명에 속하는 이름/값 페어

즉, Metric의 특징을 설명하는 범주

Dimension을 사용해서 어떻게 통계정보를 만들지 설계할 수 있음

Cloudwatch가 반환하는 결과를 필터링하는 목적

ex) InstanceID : EC2인스턴스에 대한 정보를 얻을때 필터링할 기준 

 

만약에, 차원을 지정하지 않으면 Cloudwatch가 지정된 지표에 대한 모든 데이터를 수집하고, 통계정보만듬 

(Custom Metric에 대해서는 차원간 데이터 수집x)

 

*차원조합 

차원이 다르면, 다른 지표로 처리함

CloudWatch는 각각의 고유한 차원의 조합을 별도의 지표로 처리

 

4) Statistics (통계)
지정한 기간(Period)동안 수집한 datapoint로 '어떤값'을 산출할것인가!

  • Minimum : 지정한 기간동안 수집한 datapoint 중 가장 작은 값
  • Maximum : 지정한 기간동안 수집한 datapoint 중 가장 큰 값
  • Sum : 지정한 기간동안 수집한 datapoint들의 합계
  • SampleCount : 지정한 기간동안 수집한 datapoint들의 총 개수
  • Average : Sum/SampleCount값

5) Unit (단위)

통계에 대한 측정단위

Bytes, Seconds, Count  Percent

Custom Metric을 만들때 지정하지 않으면 None 단위로 사용

 

6) Period (기간) 

통계정보를 만들기 위해 얼마동안 datapoint를 수집할 것인가

지정한 기간동안 수집한 datapoint를 가지고 통계정보를 만듬

초단위

최소1초, 최대 1일(86400초) 기본값 60초

 

7) 지표보존기간

Period (기간)이 60초미만 : 3시간동안 보존

Period (기간)이 60초 : 15일동안 사용

Period (기간)이 5분 : 63일동안 사용

Period (기간)이 1시간 : 15개월동안 사용

 

8) 백분위수


Custom Metric 생성 (Amazon Linux2)

1) 패지키 설치(perl)

sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

2) perl 스크립트 다운 

curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O

3) perl 스크립트 설치

unzip CloudWatchMonitoringScripts-1.2.2.zip && \

rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon

4) 모니터링 스크립트 파일구조

awscreds.template : 액세스키 ID 및 보안액세스 키 저장하는 AWS Credentail 파일 템플릿

CloudWatchClient.pm : 다른스크립트에서 Cloudwatch 호출하기 위한 perl모듈

mon-get-instance-stats.pl : Cloudwatch에 쿼리해서 스크립트가 실행된 ec2 인스턴스에 대한 최신 통계값

mon-put-instance-data.pl : AWS 인스턴스에 대한 시스템지표(메모리,스왑,디스크사용률)를 수집해서 CW 한테 전송 

 

5) mon-put-instance-data.pl 실행

옵션

  • --mem-util : MemoryUtilization 측정치를 수집 (%단위)
  • --mem-used : MemoryUsed 측정치 수집(MB 단위)
  • --mem-avail : MemoryAvailable 측정치를 수집(MB 단위)
  • --mem-used-incl-cache-buff : MemoryUtilization/MemoryUsed/MemoryAvailable 측정치 수집할 때 캐시 및 버퍼메모리 사용량까지 포함해서 수집한다 옵션
  • --swap-util : SwapUtilization 측정치를 수집(%단위)
  • --swap-used : SwapUsed 측정치를 수집(MB 단위)

Q. 근데 실제로 proc/meminfo에서 확인한 측정치랑 왜 다르지

 

사전에 aws configure로 access-key / sercret-key 입력

(1) 메모리 Metric

IAM 롤 추가

 

참고

AWS 공식문서 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/mon-scripts.html#mon-scripts-permissions

 

Amazon EC2 Linux 인스턴스의 메모리 및 디스크 메트릭 모니터링 - Amazon Elastic Compute Cloud

CloudWatch 에이전트를 사용하여 지표와 로그를 수집하는 것이 좋습니다. 아직도 기존 모니터링 스크립트를 사용하여 Linux 인스턴스에서 정보를 수집하는 고객에게는 모니터링 스크립트에 대한 정

docs.aws.amazon.com

 

반응형