AWS Infra

[ AWS ] Python boto3를 이용하여 값 CPUCreditBalance 구하기

Pydole 2023. 2. 2. 20:07

 

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%**

 

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html#CPU-credit-accrual-limit

 

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 - Amazon Elastic Compute Cloud

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 기존 Amazon EC2 인스턴스 유형은 고정된 CPU 리소스를 제공하는 반면, 성능 순간 확장 가능 인스턴스는 기본 수준의 CPU 사용률을 제공하면서

docs.aws.amazon.com

 

 

 


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

 


 

 

결과값을 텔레그램과 같은 알람수단과 연동하면 모니터링이 확장될 수 있겠다.

 

telegram boto3