Как определить объект, который потребляет наибольшую пропускную способность в сегменте AWS S3? - PullRequest
1 голос
/ 04 февраля 2020

Каков наилучший способ идентифицировать объект, который потребляет наибольшую полосу пропускания в сегменте S3, с тысячами других объектов?

1 Ответ

0 голосов
/ 06 февраля 2020

Под «пропускной способностью» я буду подразумевать, что вы имеете в виду пропускную способность, используемую при доставке файлов из S3 в какое-то место на Inte rnet (как при использовании S3 для обслуживания ресурсов c).

Чтобы отследить это, вам нужно включить S3 logs access , который создает файлы журналов в другом сегменте , которые показывают все операции с вашим основным блоком (или путем в нем) ).

Вот два примера зарегистрированных операций GET. Первый из них - от анонимного доступа Inte rnet с использованием URL-адреса publi c S3, а второй использует CLI AWS для загрузки файла. Я отредактировал или изменил любые идентифицирующие поля, но вы должны быть в состоянии выяснить формат из того, что осталось.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx com-example-mybucket [04/Feb/2020:15:50:00 +0000] 3.4.5.6 - XXXXXXXXXXXXXXXX REST.GET.OBJECT index.html "GET /index.html HTTP/1.1" 200 - 90 90 9 8 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - ECDHE-RSA-AES128-GCM-SHA256 - com-example-mybucket.s3.amazonaws.com TLSv1.2
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx com-example-mybucket [05/Feb/2020:14:51:44 +0000] 3.4.5.6 arn:aws:iam::123456789012:user/me XXXXXXXXXXXXXXXX REST.GET.OBJECT index.html "GET /index.html HTTP/1.1" 200 - 90 90 29 29 "-" "aws-cli/1.17.7 Python/3.6.9 Linux/4.15.0-76-generic botocore/1.14.7" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader com-example-mybucket.s3.amazonaws.com TLSv1.2

Итак, чтобы получить то, что вы хотите:

  1. Включить ведение журнала
  2. Подождите, пока в журнал будет записан репрезентативный объем данных По крайней мере, 24 часа, если вы не используете веб-сайт большого объема (и учтите, что для появления записей журнала может потребоваться до часа).
  3. Извлеките все строки, содержащие REST.GET.OBJECT
  4. Из них извлеките имя файла и количество байтов (в данном случае файл имеет размер 90 байтов).
  5. Для каждого файла умножьте количество байтов на количество раз, которое оно появляется в заданный период.

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

Обновление: вы также можете использовать Athena для запроса этих данных. Вот AWS сообщение в блоге , которое описывает процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...