Как создать настраиваемый показатель, следящий за размером EFS, в AWS Cloudwatch? - PullRequest
3 голосов
/ 26 марта 2019

Заголовок в значительной степени говорит сам за себя - Поскольку размер (использование) EFS-метрики не является метрикой, которую я могу использовать в Cloudwatch, мне нужно создать собственную метрику, отслеживающую размер последнего измеренного файла в EFS.

Есть ли возможность сделать это?Или, может быть, есть еще лучший способ контролировать размер моей EFS?

1 Ответ

3 голосов
/ 26 марта 2019

Я бы порекомендовал использовать Lambda, запускать его примерно каждый час и отправлять данные в CloudWatch.

Этот код собирает все файловые системы EFS и отправляет их размер (в килобайтах) в 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
    })

Я также рекомендовал бы ознакомиться с приведенной ниже ссылкой для получения дополнительной информации о создании пользовательских метрик.

Ссылки

...