Python boto3를 이용한 CPUCreditBalance 값 모니터링
모니터링 대상 인스턴스는 t3a.medium이며, CPUCreditBalance 테이블은 아래와 같다.
T3a | 시간당 지급되는 CPU 크레딧 |
누적 가능한 최대 지급된 크레딧* |
vCPU*** | vCPU당 기준 사용률 |
t3a.nano | 6 | 144 | 2 | 5%** |
t3a.micro | 12 | 288 | 2 | 10%** |
t3a.small | 24 | 576 | 2 | 20%** |
t3a.medium | 24 | 576 | 2 | 20%** |
import boto3
from datetime import datetime
from datetime import timedelta
client = boto3.client('cloudwatch')
def CPUCreditBalance_Ec2(isinstance_id):
response = client.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUCreditBalance',
Dimensions=[
{
'Name': 'InstanceId',
'Value': isinstance_id
},
],
StartTime=datetime.today() - timedelta(days=1) , # 전일기준
EndTime=datetime.today(),
Period=3600, # 주기 (초)
Statistics=['Average'],
Unit='Count')
return response
dct = {}
for value in CPUCreditBalance_Ec2('isinstance_id')['Datapoints']:
dct[value['Timestamp'] + timedelta(hours=9)] = value['Average'] # 한국시간 UTC
for t, v in sorted(dct.items()): # 오래된 시간부터 정렬
print(str(t)[:16], '\t', v )
2023-02-02 05:06 576.0
2023-02-02 06:06 576.0
2023-02-02 07:06 576.0
2023-02-02 08:06 576.0
2023-02-02 09:06 576.0
2023-02-02 10:06 576.0
2023-02-02 11:06 576.0
2023-02-02 12:06 576.0
2023-02-02 13:06 576.0
2023-02-02 14:06 576.0
2023-02-02 15:06 576.0
2023-02-02 16:06 576.0
2023-02-02 17:06 576.0
2023-02-02 18:06 576.0
2023-02-02 19:06 576.0
결과값을 텔레그램과 같은 알람수단과 연동하면 모니터링이 확장될 수 있겠다.
'AWS Infra' 카테고리의 다른 글
[ AWS ] Python boto3를 이용하여 Target Group Health 모니터링 (0) | 2023.04.25 |
---|---|
[ AWS ] Python boto3를 이용하여 S3 object 스토리지 클래스 변경 (0) | 2023.03.21 |
[ AWS ] Python boto3를 이용하여 s3 log 압축파일(gz) DataFrame 만들기 - CloudFront Logs (0) | 2023.03.16 |
[ Python ] Python을 이용한 ElastiCache Redis Hash Data Export & Import (0) | 2023.02.28 |
[ AWS ] Python boto3를 이용하여 EC2 CPU 사용율 구하기 (0) | 2023.02.02 |
[ AWS ] Python Boto3를 이용한 CloudFront Invalidation (무효화) (0) | 2023.01.13 |
[ AWS ] S3 특정 확장자 파일만 업로드 하는 버킷정책 (0) | 2023.01.13 |
[ AWS ] Python boto3를 이용한 S3 파일 업로드 / 다운로드 (0) | 2022.12.28 |