Python boto3를 이용한 AWS 리소스 컨트롤 - Cloudwatch metric check

2020-01-09

.

import boto3
cloudwatch = boto3.client('cloudwatch')
paginator = cloudwatch.get_paginator('list_metrics')
for response in paginator.paginate(Namespace = 'AWS/EC2'):
    print(response['Metrics'])
import psutil

vmem = psutil.virtual_memory()
print(vmem.percent)
26.2
import boto3
import psutil
vmem = psutil.virtual_memory()

cloudwatch.put_metric_data(
    MetricData = [
        {
            'MetricName' : 'Memory Usage',
            'Dimensions' : [
                {
                    'Name' : 'Demension Name',
                    'Value' : '%'
                },
            ],
            'Unit' : 'None',
            'Value' : vmem.percent
        },
    ],
    Namespace = 'CUSTOMEC2/Memory'
)
while True:
    import boto3
    import psutil
    
    vmem = psutil.virtual_memory()
    print(vmem.percent)
    
    cloudwatch = boto3.client('cloudwatch')
    
    cloudwatch.put_metric_data(
    MetricData =[
        {
            'MetricName' : 'Memory Usage',
            'Dimensions' : [
                {
                    'Name' : 'Demension Name',
                    'Value' : '%'
                },
            ],
            'Unit' : 'None',
            'Value' : vmem.percent
        },
    ],
    Namespace = 'CUSTOMEC2/Memory'
    )
    
    from time import sleep
    sleep(60)
import boto3
import pprint

session = boto3.session.Session(profile_name = 'default')
cw_logs = session.client(service_name = 'logs', region_name = 'ap-northeast-2')
print(pprint.pprint(cw_logs.describe_log_groups()))
import boto3
import pprint

session = boto3.session.Session(profile_name = 'default')
cw_logs = session.client(service_name = 'logs', region_name = 'ap-northeast-2')
logs_paginator = cw_logs.get_paginator('describe_log_groups')
page_iterator = logs_paginator.paginate()

for page in page_iterator:
    try:
        print(pprint.pprint(page['logGroups']).get('logGroupName'))
    except Exception as e:
        print(e)
import boto3
cloudwatch = boto3.client('cloudwatch', region_name='ap-northeast-2')
json = '{ \
      "width":600, \
      "height":395, \
      "metrics":[ \
         [ \
            "AWS/EC2", \
            "CPUUtilization", \
            "InstanceId", \
            "i-0847f9d92855bb54b", \
            { \
               "stat":"Average" \
            } \
         ] \
      ], \
      "period":300, \
      "start":"2020-01-05T00:00:00", \
      "end":"2020-01-07T23:59:59", \
      "stacked":false, \
      "yAxis":{ \
         "left":{ \
            "min":1, \
            "max":100 \
         }, \
         "right":{ \
            "min":0 \
         } \
      }, \
      "title":"CPU Utilization", \
      "annotations":{ \
         "horizontal":[ \
            { \
               "color":"#ff6961", \
               "label":"Trouble threshold start", \
               "fill":"above", \
               "value":80 \
            } \
         ], \
         "vertical":[ \
            { \
               "visible":true, \
               "color":"#9467bd", \
               "label":"Bug fix deployed", \
               "value":"2019-10-15T15:25:26Z", \
               "fill":"after" \
            } \
         ] \
      } \
   }'
response = cloudwatch.get_metric_widget_image(MetricWidget=json)
with open ('custom10.png', 'wb') as f:
    f.write(response["MetricWidgetImage"])
def humanbytes(B):
    B =  float(B)
    KiB = float(1024)
    MiB = float(KiB ** 2)
    GiB = float(KiB ** 3)
    TiB = float(KiB ** 4)

    if B < KiB:
        return '{0} {1}'.format(B, 'Bytes' if 0 == B > 1 else 'Byte')
    elif KiB <= B < MiB:
        return '{0:.2f} KiB'.format(B / KiB)
    elif MiB <= B < GiB:
        return '{0:.2f} MiB'.format(B / MiB)
    elif GiB <= B < TiB:
        return '{0:.2f} GiB'.format(B / GiB)
    elif TiB <= B:
        return '{0:.2f} KiB'.format(B / TiB)
    
import boto3
import pprint

session = boto3.session.Session(profile_name = 'default')
cw_logs = session.client(service_name = 'logs', region_name = 'ap-northeast-2')
logs_paginator = cw_logs.get_paginator('describe_log_groups')
page_iterator = logs_paginator.paginate()

for page in page_iterator:
    try:
        for lg in page['logGroups']:
            print(lg)
            print(lg['logGroupName'])
            print(humanbytes(lg['storedBytes']))
            print(lg['metricFilterCount'])
    except Exception as e:
        print(e)
{'logGroupName': '/aws-glue/crawlers', 'creationTime': 1569656201811, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws-glue/crawlers:*', 'storedBytes': 17109}
/aws-glue/crawlers
16.71 KiB
0
{'logGroupName': '/aws-glue/testconnection/output/datalab-rds', 'creationTime': 1569655653024, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws-glue/testconnection/output/datalab-rds:*', 'storedBytes': 1783}
/aws-glue/testconnection/output/datalab-rds
1.74 KiB
0
{'logGroupName': '/aws/codebuild/build-web', 'creationTime': 1571017068743, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/codebuild/build-web:*', 'storedBytes': 8116}
/aws/codebuild/build-web
7.93 KiB
0
{'logGroupName': '/aws/codebuild/web-build', 'creationTime': 1571012662516, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/codebuild/web-build:*', 'storedBytes': 70183}
/aws/codebuild/web-build
68.54 KiB
0
{'logGroupName': '/aws/codebuild/web-build-3', 'creationTime': 1566034147096, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/codebuild/web-build-3:*', 'storedBytes': 57615}
/aws/codebuild/web-build-3
56.26 KiB
0
{'logGroupName': '/aws/codebuild/web-build-test', 'creationTime': 1566030872328, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/codebuild/web-build-test:*', 'storedBytes': 638}
/aws/codebuild/web-build-test
638.0 Byte
0
{'logGroupName': '/aws/codebuild/web-build2', 'creationTime': 1566031914831, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/codebuild/web-build2:*', 'storedBytes': 1279}
/aws/codebuild/web-build2
1.25 KiB
0
{'logGroupName': '/aws/lambda/android-realtime-lambda', 'creationTime': 1561548257931, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/lambda/android-realtime-lambda:*', 'storedBytes': 16112}
/aws/lambda/android-realtime-lambda
15.73 KiB
0
{'logGroupName': '/aws/sagemaker/NotebookInstances', 'creationTime': 1569894199003, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:/aws/sagemaker/NotebookInstances:*', 'storedBytes': 70620}
/aws/sagemaker/NotebookInstances
68.96 KiB
0
{'logGroupName': 'RDSOSMetrics', 'creationTime': 1570172479329, 'retentionInDays': 30, 'metricFilterCount': 0, 'arn': 'arn:aws:logs:ap-northeast-2:161461013751:log-group:RDSOSMetrics:*', 'storedBytes': 0}
RDSOSMetrics
0.0 Byte
0
import boto3

session = boto3.session.Session(profile_name = 'default')
elb_cli = session.client(service_name = 'elb', region_name = 'ap-northeast-2')
response = elb_cli.describe_load_balancers()
for response in response['LoadBalancerDescriptions']:
    pprint.pprint(response['LoadBalncerName'])
    ## pprint
import boto3

session = boto3.session.Session(profile_name = 'default')
elb_cli = session.client(service_name = 'elb', region_name = 'ap-northeast-2')
response = elb_cli.describe_load_balancers()
for response in response['LoadBalancerDescriptions']:
    print(response['LoadBalncerName'])
    ## print