如何在AWS Cloudwatch中创建自定义指标以观察EFS计量大小?

时间:2019-03-26 13:23:39

标签: amazon-web-services amazon-cloudwatch amazon-efs

标题几乎说明了一切-由于EFS计量大小(使用)不是我可以在Cloudwatch中使用的指标,因此我需要创建一个自定义指标,以查看EFS中的最后计量文件大小。

是否可以这样做?还是有更好的方法来监视我的EFS大小?

1 个答案:

答案 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
    })

我还建议您阅读以下参考资料,以获取有关创建自定义指标的更多详细信息。

参考文献