Перейти к содержимому

Обзор

В Object Storage вы можете отслеживать и анализировать все действия с бакетом и объектами в нем. Информация об этих действиях записывается в логи.

Логирование помогает:

  • контролировать доступ пользователей к данным, выявлять подозрительные действия и принимать необходимые меры:
  • анализировать взаимодействие сайтов и приложений с Object Storage;
  • собирать статистику использования Object Storage.

По умолчанию логирование в бакетах отключено. Прежде чем его активировать, нужно:

  1. Создать целевой бакет, в котором будут храниться логи.
  2. Указать префикс для логов в целевом бакете.
Внимание

Если для целевого бакета настроена политика доступа, нужно добавить в нее правило, которое разрешает всем учетным записям выполнять операцию PutObject.

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

Когда в бакете включено логирование и пользователь выполняет какую-либо операцию с этим бакетом:

  • Object Storage фиксирует все детали (кто, когда, что и как запрашивал);
  • запись о запросе сохраняется в целевом бакете с указанным префиксом (например, logs/). Имя лога включает дату в формате ГГГГ-ДД-ЧЧ-ММ-СС и идентификатор, например logs/2025-01-15-13-34-34-1f12b0a2-eea3-464c-b655-2dc4d6df2cfb.

Логи сохраняются в формате JSON. Одна запись в логе соответствует одной операции с бакетом.

Сохраненные таким образом логи можно анализировать как вручную, так и с помощью специализированных инструментов (Splunk, Elasticsearch и т.п.).

Для удобства работы к логам можно применять правила жизненного цикла: например, устанавливать срок, по прошествии которого логи будут удаляться.

json
{
"bucket": "bucket",
"bytes_received": 0,
"bytes_send": 285,
"handler": "REST.GET.OBJECT",
"http_referer": "",
"ip": "<IP-адрес, с которого был выполнен запрос>",
"method": "GET",
"object_key": "logs/2025-01-08-13-04-34-849cace2-11fa-4528-82be-eada4ebc7fd0",
"protocol": "HTTP/2",
"range": "",
"requester": "projects/<имя проекта>serviceAccounts/<имя сервисного аккаунта>",
"request_args": "x-id=GetObject",
"request_id": "9bfbacc1-245f-4857-a380-61220c3f5fd6",
"request_path": "/logs/2025-01-08-13-04-34-849cace2-11fa-4528-82be-eada4ebc7fd0?x-id=GetObject",
"request_time": 51,
"scheme": "https",
"ssl_protocol": "TLSv1.3",
"status": 200,
"storage_class": "",
"timestamp": "2025-01-08T13:15:33Z",
"user_agent": "aws-sdk-go-v2/1.32.6 ua/2.1 os/linux lang/go#1.23.4 md/GOOS#linux md/GOARCH#amd64 api/s3#1.71.0 m/E",
"version_id": "",
"vhost": "bucket.storage.mwsapis.ru"
}
ПараметрТипЗначение
bucketStringИмя бакета, к которому был выполнен запрос
bytes_receivedInt64Объем данных, полученных от клиента в запросе
bytes_sendInt64Объем данных, отправленных клиенту в ответе на запрос
handlerStringHTTP-метод, использованный в запросе (в формате REST.<метод>.<объект операции>)
http_refererStringИсточник запроса - например, URL, с которого был выполнен запрос
ipStringIP-адрес, с которого был выполнен запрос
methodStringHTTP-метод, использованный в запросе (в формате REST.<метод>.<объект операции>)
object_keyStringКлюч запрошенного объекта
protocolStringВерсия HTTP-протокола, использованная в запросе клиента
rangeStringДиапазон байтов, запрошенный клиентом (например, при частичной загрузке объекта)
requesterStringИдентификатор, который указывает, кто именно выполнил запрос. Это может быть сервисный аккаунт, пользователь или приложение
request_idStringУникальный идентификатор запроса
request_argsStringАргументы запроса
request_pathStringПолный путь запроса (включая ключ объекта и параметры строки запроса)
request_timeInt64Время выполнения запроса в миллисекундах
statusInt64Код ответа
storage_classStringКласс хранения запрошенного объекта (значение этого поля будет пустым)
schemeStringТип протокола HTTP (http или https)
ssl_protocolStringВерсия протокола обеспечения безопасности
timestampStringДата и время выполнения операции в формате ISO 8601
user_agentStringКлиентское приложение, выполнившее запрос
version_idStringИдентификатор запрошенной версии объекта
vhostStringВиртуальный хост, использованный в запросе. Как правило, это URL бакета
МетодОбъект операцииОписание
PUTBUCKETСоздание бакета
GETBUCKET_LIST_V2Получение списка объектов в бакете
DELETEBUCKETУдаление бакета
GETBUCKET_VERSIONINGПолучение информации о статусе версионирования в бакете
PUTBUCKET_VERSIONINGВключение или приостановка версионирования в бакете
GETBUCKET_TAGGINGПолучение списка тегов бакета
PUTBUCKET_TAGGINGДобавление тегов бакета
DELETEBUCKET_TAGGINGУдаление тегов бакета
GETBUCKET_POLICYПросмотр текущей политики бакета
PUTBUCKET_POLICYДобавление политики бакета
DELETEBUCKET_POLICYУдаление политики бакета
PUTOBJECTЗагрузка объекта с помощью утилит командной строки, API, SDK
POSTOBJECTЗагрузка объекта через веб-консоль
GETOBJECTСкачивание объекта
DELETEOBJECTУдаление объекта
COPYOBJECTCоздание копии объекта
HEADOBJECTПолучение метаданных объекта
DELETEOBJECT_TAGGINGУдаление тегов объектов
GETOBJECT_TAGGINGПолучение тегов объекта
PUTOBJECT_TAGGINGНазначение тегов объекта
GETMULTIPARTПолучение списка текущих составных загрузок
POSTINIT_MULTIPARTИнициация составной загрузки: получение идентификатора для выполнения всех последующих операций
POSTCOMPLETE_MULTIPARTЗавершение составной загрузки
DELETEABORT_MULTIPARTОстановка составной загрузки
PUTUPLOAD_PARTЗагрузка части объекта при составной загрузке
GETUPLOAD_PARTПолучение списка загруженных во время составной загрузки частей объекта
  • Информация о запросах к объектам в бакете записывается в логи с задержкой до нескольких часов.
  • Полнота логирования не гарантируется. Не все операции отражаются в логах.
  • Если для бакета настроены правила жизненного цикла, все действия, выполняемые в рамках этих правил, не логируются. Например, если правила предписывают удалять объекты по истечении установленного срока, операция удаления не будет отражены в логах.
  • Для хранения логов можно использовать только бакеты, в которых выключена блокировка объектов. При попытке выбрать бакет с включенной блокировкой выводится сообщение об ошибке.
  • Настройки логирования после изменения вступают в силу не моментально, а через некоторое время (от нескольких минут до нескольких часов). Если вы изменили в настройках логирования целевой бакет, логи в течение некоторого времени будут сохраняться в старом целевом бакете.