Количество запросов к объектам
Получите статистику запросов к объектам Object Storage с помощью языка запросов S3 Select.
Примечание
Чтобы получить информацию о запросах к объектам, включите механизм логирования.
Перед началом работы
Получение статистики запросов
-
Выполните запрос в Object Storage и сохраните результат выполнения в файл:
-
Для удобства работы сохраните:
-
Имя бакета, в котором хранится объект с логами, в переменную
$bucket
:bucket=<имя_бакета>
-
Ключ объекта с логами в переменную
$key
:key=<ключ_объекта>
-
Выражение для запроса данных объекта на языке S3 Select в переменную
$query
:query='<выражение_для_запроса>'
Примеры выражений:
-
Поиск запросов по коду ответа:
SELECT "timestamp", request_id, handler, object_key, status, request_time FROM S3Object WHERE status >= 400
-
Поиск долго обрабатываемых запросов:
SELECT "timestamp", request_id, handler, object_key, status, request_time FROM S3Object WHERE request_time >= 1000
-
Среднее время обработки запросов (с использованием агрегатной функции
AVG
):SELECT AVG(request_time) AS "avg" FROM S3Object
-
-
-
Выполните команду:
aws --endpoint https://storage.yandexcloud.net s3api select-object-content \ --bucket $bucket \ --key $key \ --expression "$query" \ --expression-type 'SQL' \ --input-serialization 'JSON={Type=LINES}' \ --output-serialization 'JSON={}' \ "output.json"
-
-
Если в запросе не использовались агрегатные функции, выведите количество запросов для каждого ключа объекта. Для этого выполните агрегирующий запрос при помощи утилиты
jq
:jq .object_key output.json | uniq -c | sort -nr
Результат:
9 "path/logs/2021-02-10-22-02-25-199f57b5-5601-3210-5d9a-1apl1e5z6b4f" 7 "path/logs/2021-01-28-11-40-11-580g57b5-9903-1108-6a7a-1ghj1e0e8b0f" 3 "path/logs/2020-12-09-10-05-31-123f57b5-1853-4120-8d7a-5bcc1e9e9b4f" 1 "path/logs/2020-12-09-08-11-10-123f57b5-1773-9310-1d2a-5bcc1e9e9b4f" 1 "path/logs/2020-12-01-14-42-11-493f57b5-1093-4120-8d7a-5bcc1e9e9b4f"