개요
AWS는 각 리소스의 모니터링 탭이나 Cloudwatch를 통해 AWS가 지원하는 지표 정보, 예로 들어 EC2의 경우 CPU 사용륭이나 상태 검사 실패 건 등의 정보를 확인할 수 있다.
이러한 정보는 AWS 콘솔 뿐만 아니라 aws cli를 이용해 확인할 수도 있는데, 이 글에서는 해당 명령어 사용 방법에 대해 정리한다.
GetMetricData VS GetMetricStatistics
AWS cli/API를 사용하여 AWS CloudWatch 지표를 검색하는 방법으로는 GetMetricData 또는 GetMetricStatistics를 사용할 수 있다.
GetMetricData는 대규모 데이터를 빠르게 검색할 수 있을 뿐만 아니라 지표 수식도 지원하지만, 프리 티어에 포함되어 있지 않다.
호출당 지표 수 | 호출당 데이터 포인트 수 | 지표 수식 지원 | 정렬된 결과를 여러 페이지로 반환 | 프리 티어 한도에 포함됨 | |
GetMetricData | 500 | 100,800 | 예 | 예 | 아니요 |
GetMetricStatistics | 1 | 1,440 | 아니요 | 아니요 | 예 |
비용 차이도 있을 뿐만 아니라, GetMetricData을 호출할 권한도 없기 때문에 이 글에서는 GetMetricStatistics 사용 방법을 정리할 것이다.
GetMetricStatistics
지정된 메트릭에 대한 통계를 가져온다. aws cli로는 get-metric-statistics에 해당한다.
aws cloudwatch get-metric-statistics \
--namespace <value> \
--metric-name <value> \
[--dimensions <value>] \
--start-time <value> \
--end-time <value> \
--period <value> \
[--statistics <value>] \
[--extended-statistics <value>] \
[--unit <value>] \
각 옵션에 대한 설명은 다음과 같다.
- namespace : 메트릭의 네임스페이스.
예 ) AWS/EC2, AWS/RDS, AWS/S3 등 - metric-name : 지표 이름
예 ) EC2의 CPUUtilization 등 - demensions : 지표 차원. 'Name=string,Value=string' 형식으로 여러 차원을 나열할 수 있다. 차원은 공백으로 구분한다.
- start-time : 반환할 첫 번째 데이터의 시작 시간. ISO 8601 UTC 형식이어야 한다.
예 ) 2016-10-03T23:00:00Z - end-time : 반환할 데이터의 마지막 시간. ISO 8601 UTC 형식이어야 한다. start-time과 end-time 범위 내의 데이터가 반환된다.
- period : 데이터를 반환하는 시간 간격. 가령 start-time이 2016-10-03T23:00:00Z, end-time이 2016-10-03T23:05:00Z, period가 60이면 1분 간격의 데이터를 5개 반환된다.
- statistics : 메트릭 통계. 최대값, 최솟값, 평균값 등에 해당한다.
- unit : 측정값의 단위.
예 ) Seconds, Byte, Gigabytes 등
명령어 예시 ) EC2 CPU 사용률 확인
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--statistics Maximum \
--start-time 2016-10-18T23:18:00 \
--end-time 2016-10-19T23:18:00
--period 360
# 결과
{
"Datapoints": [
{
"Timestamp": "2016-10-19T00:18:00Z",
"Maximum": 0.33000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2016-10-19T03:18:00Z",
"Maximum": 99.670000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2016-10-19T07:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
...
],
"Label": "CPUUtilization"
}
💡 각 리소스, 서비스의 네임스페이스, 지표, 차원, 단위 등에 대한 정보는 AWS 공식 문서의 각 서비스 사용 설명서 중 CloudWatch를 사용한 모니터링, CloudWatch 지표 문서 등에서 찾을 수 있다.
예시 )
- EC2 : 인스턴스에 사용 가능한 CloudWatch 지표 나열
- RDS : Amazon RDS에 대한 Amazon CloudWatch 지표
- SQS : Amazon SQS에 사용할 수 있는 CloudWatch 지표
단순 지표 목록은 Amazon CloudWatch Application Insights에서 지원하는 로그 및 지표에서 찾을 수 있다.
참고 문서
https://aws.amazon.com/ko/premiumsupport/knowledge-center/cloudwatch-getmetricdata-api/
https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html