Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Настройка доступа к ObjectStorage
    • Подключение внешних словарей
    • Подключение собственной геобазы
    • Управление моделями машинного обучения
    • Управление схемами формата данных
    • Подключение к DataLens
    • Изменение версии ClickHouse
    • Управление хостами ZooKeeper
    • Управление хостами ClickHouse
    • Управление базами данных
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Управление группами шардов
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Добавление данных в БД
    • Шардирование таблиц
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Data Proc
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Object Storage при помощи DataLens
    • Настройка кластера под Graphite
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for ClickHouse
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Словари
    • Шардирование
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for ClickHouse
    • Политика работы с версиями ClickHouse
    • Настройки ClickHouse
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • FormatSchemaService
      • MlModelService
      • ResourcePresetService
      • UserService
      • VersionsService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • addZookeeper
        • backup
        • create
        • createExternalDictionary
        • createShardGroup
        • delete
        • deleteExternalDictionary
        • deleteHosts
        • deleteShard
        • deleteShardGroup
        • get
        • getShard
        • getShardGroup
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShardGroups
        • listShards
        • move
        • rescheduleMaintenance
        • restore
        • start
        • stop
        • streamLogs
        • update
        • updateHosts
        • updateShard
        • updateShardGroup
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • FormatSchema
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • MlModel
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Versions
        • Overview
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о ClickHouse
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Практические руководства
  2. Анализ логов Object Storage при помощи DataLens

Анализ логов Object Storage при помощи DataLens

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте бакет для хранения логов
  • Включите экспорт логов
  • Подготовьте источник данных
    • Создайте кластер ClickHouse
    • Измените настройки пользователя
    • Создайте таблицу в БД
  • Создайте подключение в DataLens
  • Создайте датасет в DataLens
  • Создайте чарты в DataLens
    • Создайте первый чарт
    • Создайте второй чарт
    • Создайте третий чарт
  • Создайте дашборд в DataLens и добавьте на него чарты
  • Как удалить созданные ресурсы

Для бакета Yandex Object Storage можно включить логирование действий. В логах хранится информация по операциям с бакетом и объектами, которые в нем находятся. Анализ логов бакета может быть полезен, например, если вам нужно выявить причины резкого повышения нагрузки или понять общую картину распределения трафика.

Построить визуализации, необходимые для анализа, можно с помощью сервиса бизнес-аналитики Yandex DataLens. Предварительно сохраненные логи необходимо перенести в БД ClickHouse, которая будет использоваться в качестве источника для DataLens.

Чтобы проанализировать логи и представить результаты в виде интерактивных графиков:

  1. Подготовьте облако к работе.
  2. Создайте бакет для хранения логов.
  3. Включите экспорт логов.
  4. Подготовьте источник данных.
  5. Создайте подключение в DataLens.
  6. Создайте датасет в DataLens.
  7. Создайте чарты в DataLens.
  8. Создайте дашборд в DataLens.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость входят:

  • плата за хранение данных в Object Storage, операции с ними и исходящий трафик (см. тарифы Object Storage);
  • плата за постоянно запущенный кластер Managed Service for ClickHouse (см. тарифы Managed Service for ClickHouse).

Создайте бакет для хранения логов

Чтобы создать бакет:

Консоль управления
AWS CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором хотите создать бакет.
  2. В списке сервисов выберите Object Storage.
  3. Нажмите кнопку Создать бакет.
  4. Укажите Имя бакета: bucket-logs.
  5. В полях Доступ на чтение объектов и Доступ к списку объектов выберите Публичный.
  6. Нажмите кнопку Создать бакет.
  1. Если у вас еще нет AWS CLI, установите и сконфигурируйте его.

  2. Создайте бакет bucket-logs:

    aws --endpoint-url https://storage.yandexcloud.net \
      s3 mb s3://bucket-logs
    

    Результат:

    make_bucket: bucket-logs
    
  3. Включите публичный доступ к чтению объектов и их списка:

    aws --endpoint-url https://storage.yandexcloud.net \
      s3api put-bucket-acl \
      --bucket bucket-logs \
      --acl public-read
    
  1. Добавьте в конфигурационный файл параметры бакета bucket-logs:

    resource "yandex_storage_bucket" "bucket-logs" {
      bucket = "bucket-logs"
      acl    = "public-read"
    }
    

    Подробнее о ресурсе yandex_storage_bucket см. в документации провайдера Terraform.

  2. Проверьте корректность настроек.

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

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  3. Создайте бакет.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Используйте метод REST API create.

Включите экспорт логов

Чтобы включить экспорт логов в бакет bucket-logs:

AWS CLI
API
  1. Создайте файл log-config.json со следующим содержимым:

    {
     "LoggingEnabled": {
        "TargetBucket": "bucket-logs",
        "TargetPrefix": "s3-logs/"
     }
    }
    
  2. Выполните команду:

    aws s3api put-bucket-logging \
      --endpoint-url storage.yandexcloud.net \
      --bucket <имя целевого бакета> \
      --bucket-logging-status file://log-config.json
    

Используйте метод REST API putBucketLogging.

Подготовьте источник данных

Создайте кластер ClickHouse

Консоль управления
CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором хотите создать кластер.

  2. В списке сервисов выберите Managed Service for ClickHouse.

  3. В открывшемся окне нажмите Создать кластер.

  4. Укажите настройки кластера ClickHouse:

    1. В блоке Базовые параметры:

      • Укажите имя кластера s3-logs.
      • Выберите версию 21.3 LTS.
    2. В блоке Класс хоста выберите тип виртуальной машины burstable и тип хоста b2.nano.

    3. В блоке Размер хранилища оставьте значение 10 ГБ.

    4. В блоке База данных укажите имя БД s3_data, имя пользователя user и пароль. Запомните имя БД.

    5. В блоке Хосты нажмите значок . Включите опцию Публичный доступ и нажмите кнопку Сохранить.

    6. В блоке Дополнительные настройки включите опции:

      • Доступ из DataLens.
      • Доступ из консоли управления.
  5. После всех настроек нажмите кнопку Создать кластер.

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать кластер:

  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

    yc vpc subnet list
    

    Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.

  2. Укажите параметры кластера в команде создания:

    yc managed-clickhouse cluster create \
       --name s3-logs \
       --environment production \
       --network-name <имя сети> \
       --host type=clickhouse,zone-id=<зона доступности>,subnet-id=<идентификатор подсети> \
       --clickhouse-resource-preset b2.nano \
       --clickhouse-disk-type network-ssd \
       --clickhouse-disk-size 10 \
       --user name=user,password=<пароль пользователя> \
       --database name=s3_data \
       --datalens-access=true \
       --websql-access=true \
       --version 21.3
    
  1. Добавьте в конфигурационный файл описание кластера и его хостов:

    resource "yandex_mdb_clickhouse_cluster" "s3-logs" {
      name                = "s3-logs"
      environment         = "PRODUCTION"
      version             = "21.3"
      network_id          = yandex_vpc_network.<имя сети в Terraform>.id
    
      clickhouse {
        resources {
          resource_preset_id = "b2.nano"
          disk_type_id       = "network-ssd"
          disk_size          = 10
        }
      }
    
      database {
        name = "s3_data"
      }
    
      user {
        name     = "user"
        password = "<пароль>"
        permission {
          database_name = "s3_data"
        }
      }
    
      host {
        type      = "CLICKHOUSE"
        zone      = "<зона доступности>"
        subnet_id = yandex_vpc_subnet.<имя подсети в Terraform>.id
      }
    
      access {
        datalens  = true
        web_sql   = true
      }
    }
    

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  2. Проверьте корректность настроек.

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

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  3. Создайте кластер:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

Используйте метод REST API create.

Измените настройки пользователя

Консоль управления
  1. На странице созданного кластера ClickHouse в меню слева перейдите на вкладку Пользователи.
  2. Нажмите значок и выберите Настроить.
  3. Перейдите в раздел Дополнительные настройки → Settings.
  4. В поле Date time input format выберите значение best_effort.
  5. Нажмите кнопку Сохранить.

Создайте таблицу в БД

Консоль управления
  1. На странице созданного кластера ClickHouse в меню слева перейдите на вкладку SQL.

  2. Введите имя пользователя БД и пароль.

  3. Нажмите кнопку Подключиться.

  4. В окне справа напишите SQL-запрос:

    CREATE TABLE s3_data.s3logs
    (
       bucket String,              -- Имя бакета.
       bytes_received Int64,       -- Размер запроса в байтах.
       bytes_send Int64,           -- Размер ответа в байтах.
       handler String,             -- Метод запроса в формате REST.<HTTP-метод>.<субъект>.
       http_referer String,        -- URL-адрес источника запроса.
       ip String,                  -- IP-адрес пользователя.
       method String,              -- Метод HTTP-запроса.
       object_key String,          -- Ключ объекта, закодированный методом URL-кодировки.
       protocol String,            -- Версия протокола передачи данных.
       range String,               -- HTTP-заголовок, который определяет диапазон байт для загрузки из объекта.
       requester String,           -- Идентификатор пользователя.
       request_args String,        -- Аргументы URL-запроса.
       request_id String,          -- Идентификатор запроса.
       request_path String,        -- Полный путь запроса.
       request_time Int64,         -- Время обработки запроса, в миллисекундах.
       scheme String,              -- Тип протокола передачи данных.
                                   -- Возможные значения:
                                   -- * http — протокол прикладного уровня передачи данных.
                                   -- * https — протокол прикладного уровня передачи данных с поддержкой шифрования.
       ssl_protocol String,        -- Протокол обеспечения безопасности.
       status Int64,               -- HTTP-код ответа.
       storage_class String,       -- Класс хранилища объекта.
       timestamp DateTime,         -- Дата и время операции с бакетом, в формате ГГГГ-ММ-ДДTЧЧ:ММ:ССZ.
       user_agent String,          -- Клиентское приложение (User Agent), которое выполнило запрос.
       version_id String,          -- Версия объекта.
       vhost String                -- Виртуальный хост запроса.
                                   -- Возможные значения:
                                   -- * storage.yandexcloud.net.
                                   -- * <имя бакета>.storage.yandexcloud.net.
                                   -- * website.yandexcloud.net.
                                   -- * <имя бакета>.website.yandexcloud.net.
    )
    ENGINE = S3(
          'https://storage.yandexcloud.net/bucket-logs/s3-logs/*',
          'JSONEachRow'
       );
    
  5. Нажмите кнопку Выполнить.

Создайте подключение в DataLens

Консоль управления
  1. На странице созданного кластера ClickHouse в меню слева перейдите на вкладку DataLens.

  2. В открывшемся окне нажмите кнопку Создать подключение.

  3. Заполните настройки подключения:

    1. Добавьте название подключения: s3-logs-con.
    2. В поле Кластер выберите s3-logs.
    3. В поле Имя хоста выберите хост ClickHouse из выпадающего списка.
    4. Введите имя пользователя БД и пароль.
  4. Нажмите Проверить подключение.

  5. После проверки подключения в правом верхнем углу нажмите кнопку Создать.

Создайте датасет в DataLens

  1. Во всплывающем окне в правом нижнем углу нажмите кнопку Создать датасет.

  2. В созданном датасете перенесите таблицу s3_data.s3logs на рабочую область.

  3. Перейдите на вкладку Поля.

  4. Нажмите кнопку Добавить поле.

  5. Создайте расчетное поле с типом файла:

    • Название поля — object_type.
    • Формула — SPLIT([object_key], '.', -1).
  6. Нажмите кнопку Создать.

  7. В правом верхнем углу нажмите кнопку Сохранить.

  8. Введите имя датасета s3-dataset и нажмите Создать.

  9. После сохранения датасета в правом верхнем углу нажмите Создать чарт.

Создайте чарты в DataLens

Создайте первый чарт

Чтобы визуализировать количество запросов к бакету разными методами, создайте чарт — круговую диаграмму:

  1. Выберите тип визуализации Круговая диаграмма.
  2. Перетащите поле method из раздела Измерения в секцию Цвет.
  3. Перетащите поле request_id из раздела Измерения в секцию Показатели.
  4. В правом верхнем углу нажмите Сохранить.
  5. В открывшемся окне введите название чарта S3 - Method pie и нажмите Сохранить.

Создайте второй чарт

Чтобы визуализировать соотношение количества запросов по типу объекта, создайте чарт — столбчатую диаграмму:

  1. Скопируйте чарт, получившийся на предыдущем шаге:

    1. В правом верхнем углу нажмите значок галочки рядом с кнопкой Сохранить .
    2. Нажмите Сохранить как.
    3. В открывшемся окне введите название нового чарта S3 - Object type bars и нажмите кнопку Сохранить.
  2. Выберите тип визуализации Столбчатая диаграмма. Поля method и request_id автоматически попадут в секции X и Y соответственно.

  3. Удалите поле method из секции X и перетащите туда поле object_type.

  4. В правом верхнем углу нажмите Сохранить.

Создайте третий чарт

Чтобы визуализировать распределение исходящего трафика по дням, создайте чарт — столбчатую диаграмму:

  1. Скопируйте чарт, получившийся на предыдущем шаге:

    1. В правом верхнем углу нажмите значок галочки рядом с кнопкой Сохранить .
    2. Нажмите Сохранить как.
    3. В открывшемся окне введите название нового чарта S3 - Traffic generated by days и нажмите кнопку Сохранить.
  2. Перетащите поле object_type из секции X в секцию Фильтры.

  3. В открывшемся окне выберите типы объектов, которые нужно отобразить на диаграмме, и нажмите кнопку Применить фильтр.

  4. Перетащите поле timestamp из раздела Измерения в секцию X.

  5. Удалите поле request_id из секции Y и перетащите туда поле bytes_send.

  6. В правом верхнем углу нажмите Сохранить.

Создайте дашборд в DataLens и добавьте на него чарты

Создайте дашборд, на котором будут размещены чарты:

  1. Перейдите на главную страницу DataLens.
  2. Нажмите кнопку Создать дашборд.
  3. Введите название дашборда S3 Logs Analysis и нажмите кнопку Создать.
  4. В правом верхнем углу нажмите кнопку Добавить и выберите Чарт.
  5. В поле Чарт нажмите Выбрать и выберите из списка чарт S3 - Method pie.
  6. Нажмите кнопку Добавить. Чарт появится на дашборде.
  7. Повторите предыдущие шаги для чартов S3 - Object type bars и S3 - Traffic generated by days.

Как удалить созданные ресурсы

Если вам больше не нужны созданные ресурсы, удалите бакет bucket-logs и кластер s3-logs.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте бакет для хранения логов
  • Включите экспорт логов
  • Подготовьте источник данных
  • Создайте кластер ClickHouse
  • Измените настройки пользователя
  • Создайте таблицу в БД
  • Создайте подключение в DataLens
  • Создайте датасет в DataLens
  • Создайте чарты в DataLens
  • Создайте первый чарт
  • Создайте второй чарт
  • Создайте третий чарт
  • Создайте дашборд в DataLens и добавьте на него чарты
  • Как удалить созданные ресурсы