안녕하세요
이번 시간에는 Python matplotlib 이용해서 AWS CloudWatch에서 수집한 메트릭을 시각화할 때
X축이나 Y축 값이 너무 길 때 해결하는 방법에 대해서 실습을 진행하겠습니다.
우선 포스팅 제목이 무슨 뜻인지부터 제대로 설명드리겠습니다.
1. 문제점
start_time = (now - datetime.timedelta(hours=1)).isoformat()
end_time = now.isoformat()
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'm1',
'MetricStat': {
'Metric': {
'Namespace': 'CWAgent',
'MetricName': 'mem_used_percent',
'Dimensions': [
{
'Name': 'InstanceId',
'Value': instance_id
},
]
},
'Period': 300,
'Stat': 'Average',
'Unit': 'Percent'
},
'ReturnData': True
},
],
StartTime=start_time,
EndTime=end_time
)
timestamps = response['MetricDataResults'][0]['Timestamps']
values = response['MetricDataResults'][0]['Values']
plt.figure(figsize=(10, 5))
plt.plot(timestamps, values)
plt.xlabel('Time')
plt.ylabel('Memory Used Percent (%)')
plt.title('EC2 Memory Used Percent')
plt.show()
만약 AWS CloudWatch를 통해 수집하고 있는 메트릭으로 1시간 동안 수집하는데 Period 값이 5분(300)이라면 이렇게 12개의 값이 표시됩니다. 순서대로 5, 10, 15, 20... 1시간의 값입니다. 이렇게 수집된 12개의 값을 출력해 본 결과 다음과 같이 소수점 10자리를 넘어가는 긴 숫자가 표시됩니다. 이러면 어떤 문제가 발생하는지 살펴볼까요?
y축을 보시면 수집된 값은 [18.xxxxxxxxxxxx] 값인데 실제로 표시될 때 0.0005, 0.0010 이렇게 표시되고
가장 위쪽에 [+1.838e1] 이렇게 표시되는 모습입니다. 만약 CloudWatch를 운영하고 있는 운영자라면 다음과 같은 숫자를 보고 정상인지 아닌지 모니터링하는 것이 쉽지는 않아 보입니다. 해결 방법은 y축의 가로 너비를 값만큼 넓히거나 y축의 값을 반올림 처리하는 방법을 생각해 볼 수 있습니다. 저는 그중에서 반올림 처리하여 해결해 보겠습니다.
2. 해결 방법
start_time = (now - datetime.timedelta(hours=1)).isoformat()
end_time = now.isoformat()
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'm1',
'MetricStat': {
'Metric': {
'Namespace': 'CWAgent',
'MetricName': 'mem_used_percent',
'Dimensions': [
{
'Name': 'InstanceId',
'Value': instance_id
},
]
},
'Period': 300,
'Stat': 'Average',
'Unit': 'Percent'
},
'ReturnData': True
},
],
StartTime=start_time,
EndTime=end_time
)
timestamps = response['MetricDataResults'][0]['Timestamps']
values = response['MetricDataResults'][0]['Values']
round_values = []
for value in values:
round_values.append(round(value, 5))
plt.figure(figsize=(10, 5))
plt.plot(timestamps, round_values)
plt.xlabel('Time')
plt.ylabel('Memory Used Percent (%)')
plt.title('EC2 Memory Used Percent')
plt.show()
Python에서 내장 함수로 지원하고 있는 round 함수를 통해 values 값을 소수점 5번째 자리에서 반올림 처리하였습니다.
3. 결과
y축의 값이 길지 않아 이렇게 [18.xxxx] 형태로 그래프가 생성되는 모습을 확인할 수 있습니다.
이번 시간에는 matplotlib를 사용하여 Cloudwatch로 수집한 메트릭 데이터를 시각화할 때 x축이나 y축 값의 표기가 제대로 되지 않을 때 반올림 처리하여 해결하는 방법에 대해 알아봤습니다.
감사합니다.
'Cloud > Amazon Cloud' 카테고리의 다른 글
[AWS] AWS CLI에 대해 알아보고 설치 및 IAM 생성 후 기본 설정하기 (0) | 2023.04.25 |
---|---|
[AWS] Boto3를 이용해 CloudWatch에서 메트릭 데이터 가져오기 (0) | 2023.04.13 |
[AWS] AWS Hands-On 101 lab 2(4) - 커스텀 AMI 생성, EIP 변경하기 (0) | 2022.12.23 |
[AWS] AWS Hands-On 101 lab 2(3) - 스토리지 서비스 구성(EBS), Session Manager를 이용한 EC2 인스턴스 접속, Web Root Path 변경하기 (0) | 2022.12.22 |
[AWS] AWS Hands-On 101 lab 2(2) - 컴퓨팅 서비스 구성(IAM, EC2, EIP) (0) | 2022.12.22 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!