Дополнительные метрики CloudWatch у AWS S3

Включение дополнительных метрик AWS S3 01Дополнительные метрики CloudWatch у AWS S3 изначально отключены, а по умолчанию доступны всего лишь две метрики. Это BucketSizeBytes и NumberOfObjects. Алерт разумно сделать разве что по первой, а вторая пригодится лишь для сведения. Полезно было бы видеть метрики, которые отражают качество взаимодействия с клиентами и такие метрики есть! Правда нюанс в том, что включать их нужно отдельно на каждый бакет. Об этом и поговорим сегодня в статье.

Дополнительные метрики CloudWatch у AWS S3

Для подключения метрик можно использовать в том числе Amazon S3 REST API и AWS CLI, но наиболее частый сценарий это конечно UI. Но не забывайте, что ручную работу можно исключить, используя Terraform. С него и начнем, как с самого изящного варианта.

Terraform

За настройку метрик CloudWatch S3 отвечает ресурс aws_s3_bucket_metric 1. Использовать его очень просто:

А для тех, кто администрирует S3 руками, внизу пошаговая инструкция.

UI

Есть официальный гайд, в котором вы найдете последовательность настройки фильтра для включения метрик, вот он – Creating a CloudWatch metrics configuration for all the objects in your bucket. Русифицированная версия отсутствует. Подписи на скриншотах внизу соответствуют пунктам шагов в инструкции.

3. Choose the Metrics tab.

4. Under Bucket metrics, choose View additional charts.

Шаг 1 - Включение дополнительных метрик AWS S3

5. Choose the Request metrics tab.

6. Choose Create filter.

Шаг 2 - Включение дополнительных метрик AWS S3

7. In the Filter name box, enter your filter name.

Names can only contain letters, numbers, periods, dashes, and underscores. We recommend using the name EntireBucket for a filter that applies to all objects.

8.Under Filter scope, choose This filter applies to all objects in the bucket.

You can also define a filter so that the metrics are only collected and reported on a subset of objects in the bucket. For more information, see Creating a metrics configuration that filters by prefix, object tag, or access point.

9. Choose Save changes.

Шаг 3 - Включение дополнительных метрик AWS S3

После этого можете возвращаться в Bucket metrics и там все увидеть.

Обзор - Включение дополнительных метрик AWS S3

При этом в CloudWatch появится новый набор метрик – Request Metrics Per Filter. Вот так это выглядит:

Просмотр - Включение дополнительных метрик AWS S3

Настройка завершена.

cloudwatch_exporter

CloudWatch отдает базовые метрики – BucketSizeBytes и NumberOfObjects – раз в сутки. На графиках это будет выглядеть как одна единственная точка за 24 часа. Для Прометея это не подходит – хочется видеть именно непрерывный график, по которому можно будет алертить.

Примечание: это значит, что мы должны забирать эту единственную точку целые 24 часа до того момента, пока не появится новая. То есть наш график будет выглядеть ежесуточными ступеньками (разумеется при наличии изменений в бакете). Чтобы cloudwatch_exporter делал именно так, нужно выставить параметр range_seconds минимум в 24 часа. Лучше с запасом. И не бойтесь забрать несколько точек враз, возвращена будет одна единственная самая свежая..

Именно поэтому у меня будут использоваться кастомные параметры для этих двух метрик:

Последний параметр нужен, чтобы экспортер не выставлял отметку времени, ведь если она будет старше 5 минут (а она будет, читай выше), то Prometheus справедливо посчитает метрику как Staleness 2 3. Этот хак и позволяет растянуть в горизонтальную линию одну единственную точку.

Обратите внимание, что метрики requests по умолчанию возвращают точки значительно чаще – раз в минуту:

Request metrics are available at one-minute intervals after some latency for processing.

Именно поэтому параметров cloudwatch_exporter по умолчанию нам достаточно. На этом все. Успехов!

Яндекс.Метрика