标题几乎说明了一切-由于EFS计量大小(使用)不是我可以在Cloudwatch中使用的指标,因此我需要创建一个自定义指标,以查看EFS中的最后计量文件大小。
是否可以这样做?还是有更好的方法来监视我的EFS大小?
答案 0 :(得分:3)
我建议使用Lambda,每小时运行约一小时,然后将数据发送到CloudWatch。
此代码收集所有EFS文件系统,并将其大小(以kb为单位)连同文件系统名称一起发送到Cloudwatch。对其进行修改以满足您的需求:
import json
import boto3
region = "us-east-1"
def push_efs_size_metric(region):
efs_name = []
efs = boto3.client('efs', region_name=region)
cw = boto3.client('cloudwatch', region_name=region)
efs_file_systems = efs.describe_file_systems()['FileSystems']
for fs in efs_file_systems:
efs_name.append(fs['Name'])
cw.put_metric_data(
Namespace="EFS Metrics",
MetricData=[
{
'MetricName': 'EFS Size',
'Dimensions': [
{
'Name': 'EFS_Name',
'Value': fs['Name']
}
],
'Value': fs['SizeInBytes']['Value']/1024,
'Unit': 'Kilobytes'
}
]
)
return efs_name
def cloudtrail_handler(event, context):
response = push_efs_size_metric(region)
print ({
'EFS Names' : response
})
我还建议您阅读以下参考资料,以获取有关创建自定义指标的更多详细信息。