AWS Infra

[ AWS ] Python boto3를 이용하여 ELB Metric 모니터링

Pydole 2023. 5. 10. 14:14

 

 

Python Boto3를 이용하여  ELB 2XX Count 통계를 추출해보고, 효율적으로 모니터링해보자.

 

메소드는 cloudwatch.get_metric_statistics이용하고, MetricName은 HTTPCode_Target_2XX_Count 을 사용하면 된다.

 

ELB 콘솔 cloudwatch에서도 아래지표와 같이 볼 수 있는데, 이 데이터를 Python으로 추출해보자

 

 

 

 


 

from datetime import datetime
from datetime import timedelta

cloudwatch = boto3.client('cloudwatch')  

elb = 'string'   # elb의 arn의 app이하 부분부터 넣어주면 된다.


def elb_2XX_Count(elb):
    response = cloudwatch.get_metric_statistics(
            Namespace='AWS/ApplicationELB',
            MetricName='HTTPCode_Target_2XX_Count',
            Dimensions=[
                {
                 'Name': 'LoadBalancer',
                 'Value': elb},
                ],
            StartTime=datetime.today() - timedelta(days=1),
            EndTime=datetime.today(),
            Period=300,                   # Second
            Statistics=['Sum'],
            Unit='Count')

    return response['Datapoints']

dct = {}


# 기본적으로 UTC로 추출되기 때문에, 서울시간으로 변경하고, 시간순으로 정렬한다.

for value in elb_2XX_Count(elb):
    dct[value['Timestamp'] + timedelta(hours=9)] = value['Sum']

for t, v in sorted(dct.items()):
    print(str(t)[:16], '\t', v )

 

 

600초 주기로 하였기 때문에, 5분 SUM 통계로 추출되어 진다.

 

2023-05-09 23:11 	 884.0
2023-05-09 23:16 	 771.0
2023-05-09 23:21 	 695.0
2023-05-09 23:26 	 623.0
2023-05-09 23:31 	 575.0
2023-05-09 23:36 	 564.0
2023-05-09 23:41 	 544.0
2023-05-09 23:46 	 489.0
2023-05-09 23:51 	 522.0
2023-05-09 23:56 	 438.0
2023-05-10 00:01 	 650.0

...
...
...

2023-05-10 13:11 	 381.0
2023-05-10 13:16 	 490.0
2023-05-10 13:21 	 524.0
2023-05-10 13:26 	 636.0
2023-05-10 13:31 	 798.0
2023-05-10 13:36 	 769.0
2023-05-10 13:41 	 643.0
2023-05-10 13:46 	 514.0
2023-05-10 13:51 	 596.0
2023-05-10 13:56 	 559.0
2023-05-10 14:01 	 840.0
2023-05-10 14:06 	 647.0