AWS CloudWatch
기능요약
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html
대시보드
경보
로그그룹
지표 : 15개월 보관
애플리케이션 모니터링 : ServiceLens(인프라+트랜잭션+최종사용자), 리소스 상태, Synthetics(외부에서 고객 경험 측청)
인사이트 : Container Insights, Lambda Insights, Contributor Insights, Application Insights
getting-started 에 10분 분량의 온보딩 자습서 있음.
https://aws.amazon.com/ko/cloudwatch/getting-started/
지표
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/working_with_metrics.html
기본적으로 많은 서비스에서 리소스(예: Amazon EC2 인스턴스, Amazon EBS 볼륨, Amazon RDS DB 인스턴스)에 대한 무료 지표를 제공
지표 데이터는 15개월 동안 보관
다수의 AWS 서비스는 고객에게 무료로 CloudWatch에 기본 지표 세트를 게시하여 기본 모니터링을 제공
세부 모니터링은 일부 서비스에서만 제공됩니다. 또한 요금이 부과됩니다.
각 서비스별 CloudWatch 지표를 확인해야 함. https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html
지표는 먼저 “네임스페이스”별로 그룹화 → 각 네임스페이스 내에서 다양한 “측정기준 조합별”로 그룹화. 예를 들어 모든 EC2 지표, 인스턴스별로 그룹화된 EC2 지표 또는 Auto Scaling 그룹별로 그룹화된 EC2 지표를 볼 수 있습니다.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/getting-metric-statistics.html
특정 리소스에 대한 통계 얻기. 네임스페이스 선택 후 원하는 측정기준 조합 선택
통계정의 : https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html
합계, 평균 등에 대한 통계정의
Percentile(p), 즉 백분위수는 데이터 집합에서 값의 상대적인 위치를 나타냅니다. 예를 들어 p95는 95번째 백분위수
Trimmed mean(TM), 절사 평균은 지정된 두 경계 사이에 있는 모든 값의 평균. TM(2%:98%)은 2%의 가장 낮은 데이터 요소와 2%의 가장 높은 데이터 요소를 제거한 후 평균을 계산. TM(150:1000)은 150 이하이거나 1000을 초과하는 모든 데이터 요소를 제거한 후 평균을 계산합니다.
Trimmed mean은 웹 페이지 대기 시간과 같이 샘플 크기가 큰 지표에 가장 유용. TM(10%:99%) 형태로 사용을 해서 앞뒤의 이상치를 제외하고 판단을 할 때 사용할 수 있음.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/graph_a_metric.html
선 그래프, 누적 영역 차트, 막대 차트, 파이 차트 또는 숫자 등으로 지표 그래프 작성.
동적 레이블 사용
그래프의 시간 범위 또는 시간대 형식 변경 (local time으로 설정 가능)
Y축 최소, 최대값 설정
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/create_alarm_metric_graph.html
지표를 선택한 화면에서 바로 경보를 생성할 수 있음.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/publishingMetrics.html
AWS CLI 또는 API를 사용하여 CloudWatch에 자체 지표를 게시할 수 있음. 별도로 만들 필요가 있는 경우 사용을 하면 될 듯 함.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-metric-math.html
여러 CloudWatch 지표를 쿼리하고 수학 표현식을 활용함으로써 이러한 지표를 기반으로 새로운 시계열을 만들 수 있음.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-search-expressions.html
CloudWatch 그래프에 추가할 수 있는 수학 표현식 유형. 여러 개의 지표를 그래프에 빠르게 추가할 수 있음. 또한 처음 그래프를 생성할 때 지표가 없는 경우에도 적절한 지표를 표시에 자동으로 추가하는 동적 그래프를 생성할 수 있음.
SEARCH('{AWS/EC2,InstanceId} MetricName="CPUUtilization"', 'Average', 300)
경보
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html
지표 경보
복합 경보 : 규칙의 모든 조건이 충족되는 경우에만 ALARM 상태로 전환
지표 경보 상태 : OK, ALARM, INSUFFICIENT_DATA
(데이터 불충분)
경보를 생성할 때 다음과 같은 세 가지 설정을 지정하여 CloudWatch가 경보 상태를 변경할 시기를 평가할 수 있도록 합니다.
기간 (Period)
평가 기간(Evaluation Periods)
경보에 대한 데이터 요소(Datapoints to Alarm)
CloudWatch 경보가 누락 데이터를 처리하는 방법 구성
notBreaching
– 누락 데이터 요소를 ‘양호’하고 임계값 내에 있는 것으로 처리합니다.breaching
- 누락 데이터 요소를 ‘불량’하고 임계값을 위반한 것으로 처리합니다.ignore
- 현재 경보 상태를 유지합니다.missing
- 경보 평가 범위의 모든 데이터 요소가 누락된 경우 경보를 INSUFFICIENT_DATA 상태로 전환합니다.
최고의 옵션은 지표 유형에 따라 다릅니다. 인스턴스의 CPUUtilization
과 같은 데이터를 지속적으로 보고하는 지표의 경우 어떤 문제가 발생했음을 나타내기 위해 누락된 데이터 포인트를 breaching
으로 처리해야 할 수 있습니다. 그러나 Amazon DynamoDB의 ThrottledRequests
와 같이 오류가 발생할 때만 데이터 요소를 생성하는 지표의 경우 누락 데이터를 notBreaching
으로 처리할 수 있습니다. 기본값은 missing
입니다.
Amazon CloudWatch는 Amazon SNS를 사용하여 이메일을 전송합니다. 먼저, SNS 주제를 생성 및 구독합니다.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html
복합경보 : 다른 경보의 경보 상태를 감시하여 경보 상태를 결정하는 경보.
예) (ALARM(CPUUtilizationTooHigh) OR ALARM(DiskReadOpsTooHigh)) AND OK(NetworkOutTooHigh)
애플리케이션 모니터링
애플리케이션 및 서비스 가용성을 모니터링하기 위한 Amazon Route 53 상태 확인 및 CloudWatch Synthetics
Amazon Route 53 상태 확인을 이용하면 HTTP/HTTPS 를 통해 웹페이지 연결을 모니터링 하거나 TCP로 DNS 이름 또는 IP 주소에 대한 연결을 확인할 수 있다.
카나리아는 Route 53 상태 확인보다 개발에 더 많은 계획과 노력이 필요하지만 고도로 사용자 지정 가능한 모니터링 및 평가 접근 방식을 제공합니다. 카나리아는 또한 가상 사설 클라우드(VPC) 내에서 실행되는 사설 리소스를 지원하므로 끝점에 대한 공용 IP 주소가 없을 때 가용성 모니터링에 이상적입니다.
Amazon Route 53 상태 확인
Amazon Route 53 상태 확인은 웹 애플리케이션, 웹 서버, 기타 리소스의 상태와 성능을 모니터링 할 수 있음.
https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/dns-failover.html
상태 확인 생성시 SNS로 알람을 받을 수 있다. 만든어진 경보는 “이 경보는 us-east-1 리전에 위치”라고 나온다. 다른 region에 생성한 SNS는 검색이 안되며 아마도 us-east-1 리전에 SNS를 새로 구성해야 할 것이다.
Synthetics 모니터링
일정에 따라 실행되는 구성 가능한 스크립트인 canary를 생성하여 엔드포인트 및 API를 모니터링할 수 있습니다.
canary는 Puppeteer 또는 Selenium Webdriver를 통해 헤드리스 Google Chrome 브라우저에 대한 프로그래밍 방식 액세스를 제공합니다.
canary는 엔드포인트의 가용성과 지연 시간을 확인하고 로드 시간 데이터 및 UI 스크린샷을 저장할 수 있습니다.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Blueprints.html 제공되는 블루프린트를 이용할 수 있음.
참고자료
https://catalog.us-east-1.prod.workshops.aws/workshops/31676d37-bbe9-4992-9cd1-ceae13c5116c/ko-KR/
Amazon CloudWatch 및 AWS X-Ray의 AWS 관찰 기능에 대해 학습합니다. 워크숍은 복잡한 마이크로서비스 애플리케이션을 배포하고 모니터링을 배우는데 도움이됩니다. 기대되는 가장 핵심적인 사항은 사용자가 로깅(logging), 메트릭(metric), 컨테이너 모니터링(container monitoring) 및 트레이스기술(tracing techniques)을 명확하게 이해하게 되는 것입니다
Amazon CloudWatch로 로깅 및 모니터링 설계 및 구현