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