Получение статистики запросов к объектам Yandex Object Storage с использованием Yandex Query
Из этого руководства вы узнаете, как получить статистику запросов к объектам Yandex Object Storage с использованием Yandex Query. Вы создадите бакет и настроите логирование в Object Storage, создадите соединение в Query и получите статистику с помощью SQL-запросов.
Чтобы получить статистику:
- Подготовьте облако к работе.
- Создайте бакеты.
- Включите механизм логирования.
- Настройте подключения в Query.
- Получите статистику запросов.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за хранение данных (см. тарифы Yandex Object Storage);
- плата за объем считанных данных (см. тарифы Yandex Query).
Создайте сервисный аккаунт
С помощью сервисного аккаунта Query сможет отправлять запросы к Object Storage.
Создайте сервисный аккаунт с именем yq-sa
и назначьте ему роли storage.viewer
и yq.editor
.
Создайте бакеты
Создайте два бакета: object-bucket
и logs-bucket
. Один бакет будет служить источником данных, другой — хранилищем логов.
Чтобы создать бакет:
- В консоли управления
выберите каталог, в котором хотите создать бакет. - В списке сервисов выберите Object Storage.
- Справа сверху нажмите кнопку Создать бакет.
- В поле Имя укажите имя бакета
object-bucket
. - Нажмите кнопку Создать бакет.
Аналогичным образом создайте бакет с именем logs-bucket
.
Включите механизм логирования
Чтобы получать информацию о запросах к объектам, включите механизм логирования действий с бакетом:
-
В консоли управления
выберите каталог, в котором вы создали бакеты. -
В списке сервисов выберите Object Storage.
-
Выберите бакет
object-bucket
. -
Включите механизм логирования:
- На панели слева выберите
Настройки. - Перейдите на вкладку Логирование.
- Включите опцию Запись логов.
- В поле Бакет для хранения логов выберите бакет
logs-bucket
. - Нажмите кнопку Сохранить.
- На панели слева выберите
-
На панели слева выберите
Объекты и загрузите объекты. Например, пару простых текстовых файлов.
Настройте подключения в Query
Чтобы получать данные из Object Storage, создайте соединение и привязку:
-
Перейдите в сервис Query
. -
На панели слева выберите Соединения.
-
Нажмите кнопку
Создать. -
Введите имя соединения, например
bucket-logs-connection
. -
Выберите тип соединения Object Storage и укажите Параметры типа соединения.
-
В поле Аутентификация бакета выберите
Приватный
и задайте параметры:- Облако и каталог — выберите облако и каталог, в которых вы создали бакеты.
- Бакет —
logs-bucket
. - Сервисный аккаунт —
yq-sa
.
-
Нажмите кнопку Проверить. После успешной проверки нажмите кнопку Создать.
-
Нажмите кнопку Автоматически заполнить настройки для и в выпадающем списке выберите Object Storage Access Logs.
- Введите имя привязки, например
bucket-logs-binding
. - В поле Путь укажите путь к данным статистики внутри бакета. Если данные статистики хранятся в корневой директории бакета, укажите
/
. - Нажмите кнопку Предпросмотр для проверки правильности настроек.
- Нажмите кнопку Создать для завершения создания привязки.
- Введите имя привязки, например
Получите статистику запросов
Используйте соединение, чтобы создать SQL-запросы и получить статистику запросов к объектам Object Storage:
-
Перейдите в сервис Query
. -
На панели слева выберите Соединения.
-
Выберите соединение
bucket-logs-connection
. -
В редакторе справа введите запрос:
SELECT `timestamp`, request_id, handler, object_key, status, request_time FROM `bucket-logs-binding` LIMIT 100;
Такой запрос вернет 100 записей со статистикой запросов к объектам Object Storage. Лимит записей можно снять, а результаты фильтровать с помощью
WHERE
. -
Нажмите кнопку
Выполнить и посмотрите результат.
Примеры запросов
Поиск запросов по коду ответа
SELECT `timestamp`, request_id, handler, object_key, status, request_time
FROM `bucket-logs-binding`
WHERE status >= 400
Поиск долго обрабатываемых запросов
SELECT `timestamp`, request_id, handler, object_key, status, request_time
FROM `bucket-logs-binding`
WHERE request_time >= 1000
Среднее время обработки запросов
В примере используется агрегатная функция AVG
.
SELECT AVG(request_time) AS `avg` FROM `bucket-logs-binding`
Как удалить созданные ресурсы
Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы: