Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Cloud Logging
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Добавление записей
    • Чтение записей
    • Управление лог-группой
      • Создание лог-группы
      • Управление правами доступа к лог-группе
      • Изменение срока хранения записей
      • Получение списка лог-групп
      • Мониторинг
      • Удаление лог-группы
  • Практические руководства
    • Все руководства
    • Передача логов кластера Yandex Managed Service for Kubernetes в Cloud Logging
    • Передача логов с ВМ в Cloud Logging
    • Передача логов с COI в Cloud Logging
    • Репликация логов в Object Storage с помощью Fluent Bit
  • Концепции
    • Лог-группа
    • Язык фильтрующих выражений
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • LogGroupService
      • LogIngestionService
      • LogReadingService
      • OperationService
    • REST (англ.)
      • Overview
      • LogGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listAccessBindings
        • listOperations
        • listResources
        • setAccessBindings
        • stats
        • update
        • updateAccessBindings
  • Вопросы и ответы
  1. Практические руководства
  2. Репликация логов в Object Storage с помощью Fluent Bit

Репликация логов в Object Storage с помощью Fluent Bit

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте окружение
  • Создайте бакет
  • Создайте поток данных
  • Создайте трансфер
  • Установите Fluent Bit
  • Подключите Fluent Bit к потоку данных
  • Проверьте отправку и получение данных
  • Как удалить созданные ресурсы

Агрегаторы данных позволяют транслировать данные, такие как логи, с виртуальных машин в сервисы просмотра логов и хранения данных.

С предлагаемой инструкцией вы научитесь автоматически реплицировать логи с виртуальной машины в бакет Object Storage с помощью обработчика логов Fluent Bit.

Решение, которое описано ниже, работает по следующей схеме:

  1. На рабочей ВМ запущен Fluent Bit как systemd-модуль.
  2. Fluent Bit собирает логи в соответствии с настройками конфигурации и отправляет их в поток Data Streams по протоколу Amazon Kinesis Data Streams.
  3. В рабочем каталоге настроен трансфер Data Transfer, который забирает данные из потока и сохраняет в бакет Object Storage.

Чтобы настроить репликацию логов:

  1. Подготовьте облако к работе.
  2. Настройте окружение.
  3. Создайте бакет Object Storage, в котором будут храниться логи.
  4. Создайте поток данных Data Streams.
  5. Создайте трансфер Data Transfer.
  6. Установите Fluent Bit.
  7. Подключите Fluent Bit к потоку данных.
  8. Проверьте отправку и получение данных.

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

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

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

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

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

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

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

В стоимость поддержки хранения данных входит:

  • плата за обслуживание потока данных (см. тарифы Data Streams);
  • плата за перенос данных между источниками и приемниками (см. тарифы Data Transfer);
  • плата за хранение данных (см. тарифы Object Storage).

Настройте окружение

  1. Создайте сервисный аккаунт, например logs-sa, с ролью editor на каталог.

  2. Создайте статический ключ доступа для сервисного аккаунта. Сохраните идентификатор и секретный ключ. Они понадобятся, чтобы авторизоваться в AWS.

  3. Создайте ВМ из публичного образа Ubuntu 20.04. В блоке Доступ укажите сервисный аккаунт, который создали на предыдущем шаге.

  4. Подключитесь к ВМ по SSH.

  5. Установите на ВМ утилиту AWS CLI.

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

    aws configure
    
  7. Последовательно введите:

    • AWS Access Key ID [None]: — идентификатор ключа сервисного аккаунта.
    • AWS Secret Access Key [None]: — секретный ключ сервисного аккаунта.
    • Default region name [None]: — регион ru-central1.

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

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать бакет.
  2. Выберите сервис Object Storage.
  3. Нажмите кнопку Создать бакет.
  4. Введите имя бакета, например logs-bucket.
  5. В поле Класс хранилища выберите Холодное.
  6. Нажмите кнопку Создать бакет.

Создайте поток данных

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать поток данных.
  2. Выберите сервис Data Streams.
  3. Нажмите кнопку Создать поток.
  4. Укажите существующую бессерверную базу данных YDB или создайте новую. Если вы создали новую базу данных, нажмите кнопку Обновить, чтобы обновить список баз.
  5. Введите имя потока данных, например logs-stream.
  6. Нажмите кнопку Создать.

Дождитесь запуска потока данных. Когда поток станет готов к использованию, его статус изменится с CREATING на ACTIVE.

Создайте трансфер

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать трансфер.
  2. Выберите сервис Data Transfer.
  3. Создайте эндпоинт-источник:
    1. Нажмите кнопку Создать эндпоинт.
    2. В поле Направление выберите Источник.
    3. Введите имя эндпоинта, например logs-source.
    4. В списке Тип базы данных выберите Yandex Data Streams.
    5. Выберите базу данных для источника.
    6. Введите имя созданного ранее потока данных logs-stream.
    7. Выберите созданный ранее сервисный аккаунт logs-sa.
    8. Нажмите кнопку Создать.
  4. Создайте эндпоинт-приемник:
    1. Нажмите кнопку Создать эндпоинт.
    2. В поле Направление выберите Приемник.
    3. Введите имя эндпоинта, например logs-receiver.
    4. В списке Тип базы данных выберите Object Storage.
    5. Введите имя созданного ранее бакета logs-bucket.
    6. Выберите созданный ранее сервисный аккаунт logs-sa.
    7. Нажмите кнопку Создать.
  5. Создайте трансфер:
    1. На панели слева выберите Трансферы.
    2. Нажмите кнопку Создать трансфер.
    3. Введите имя трансфера, например logs-transfer.
    4. Выберите созданный ранее эндпоинт-источник logs-source.
    5. Выберите созданный ранее эндпоинт-приемник logs-receiver.
    6. Нажмите кнопку Создать.
    7. Нажмите на значок рядом с именем созданного трансфера и выберите Активировать.

Дождитесь активации трансфера. Когда трансфер станет готов к использованию, его статус сменится с Создается на Реплицируется.

Установите Fluent Bit

Примечание

В данном руководстве используется актуальная версия Fluent Bit v1.9.

  1. Чтобы установить Fluent Bit на ВМ, выполните команду:

    curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
    

    Подробнее о том, как установить Fluent Bit, см. в официальной документации.

  2. Запустите сервис fluent-bit:

    sudo systemctl start fluent-bit
    
  3. Проверьте статус сервиса fluent-bit, он должен быть активен:

    sudo systemctl status fluent-bit
    

    Результат должен содержать статус active (running) и логи встроенного плагина cpu, которые Fluent Bit по умолчанию собирает сразу после установки:

    ● fluent-bit.service - Fluent Bit
     Loaded: loaded (/lib/systemd/system/fluent-bit.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-09-08 10:23:03 UTC; 10s ago
       Docs: https://docs.fluentbit.io/manual/
    Main PID: 1328 (fluent-bit)
      Tasks: 4 (limit: 2310)
     Memory: 2.8M
     CGroup: /system.slice/fluent-bit.service
             └─1328 /opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.conf
    
     Sep 08 10:23:03 ycl-20 fluent-bit[1328]: [2022/09/08 10:23:03] [ info] [output:stdout:stdout.0] worker #0 started
     Sep 08 10:23:05 ycl-20 fluent-bit[1328]: [0] cpu.local: [1662632584.114661597, {"cpu_p"=>1.000000, "user_p"=>0.000000, >
     Sep 08 10:23:06 ycl-20 fluent-bit[1328]: [0] cpu.local: [1662632585.114797726, {"cpu_p"=>0.000000, "user_p"=>0.000000, >
     ...
     
    

Подключите Fluent Bit к потоку данных

Примечание

Если у вас установлена версия Fluent Bit ниже, чем 1.9, распространяемая как часть пакета td-agent-bit, редактируйте файлы /etc/td-agent-bit/td-agent-bit.conf, /lib/systemd/system/td-agent-bit.service и перезапускайте сервис td-agent-bit.

  1. Откройте файл /etc/fluent-bit/fluent-bit.conf:

    sudo vim  /etc/fluent-bit/fluent-bit.conf
    
  2. Добавьте блок OUTPUT с настройками плагина kinesis_streams:

    [OUTPUT]
        Name  kinesis_streams
        Match *
        region ru-central-1
        stream /<регион>/<идентификатор_каталога>/<идентификатор_базы_дфнных>/<имя_потока_данных>
        endpoint https://yds.serverless.yandexcloud.net
    

    Где:

    • stream — идентификатор потока данных Data Streams.

      Например, укажите идентификатор потока /ru-central1/aoeu1kuk2dhtaupdb1es/cc8029jgtuabequtgtbv/logs-stream, если:

      • logs-stream — имя потока;
      • ru-central1 — регион;
      • aoeu1kuk2dhtaupdb1es — идентификатор каталога;
      • cc8029jgtuabequtgtbv — идентификатор базы данных YDB.

    Подробнее о том, как настроить Fluent Bit см. в официальной документации.

  3. Откройте файл /lib/systemd/system/fluent-bit.service:

    sudo vim  /lib/systemd/system/fluent-bit.service
    
  4. Добавьте в блок SERVICE переменные окружения, которые содержат пути к файлам с ключами доступа:

    Environment=AWS_CONFIG_FILE=/home/<имя_пользователя>/.aws/config
    Environment=AWS_SHARED_CREDENTIALS_FILE=/home/<имя_пользователя>/.aws/credentials
    

    Где <имя_пользователя> — логин, который вы указали в настройках виртуальной машины.

  5. Перезапустите сервис fluent-bit:

    sudo systemctl daemon-reload
    sudo systemctl restart fluent-bit
    
  6. Проверьте статус сервиса fluent-bit. В нем не должно быть сообщений об ошибках:

    sudo systemctl status fluent-bit
    

    Результат:

    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: Fluent Bit v1.9.8
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: * Copyright (C) 2015-2022 The Fluent Bit Authors
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: * Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: * https://fluentbit.io
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [fluent bit] version=1.9.8, commit=, pid=3450
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [storage] version=1.2.0, type=memory-only, sync=normal, checksum=disabled, max_chunks_up=128
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [cmetrics] version=0.3.6
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [sp] stream processor started
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [output:kinesis_streams:kinesis_streams.1] worker #0 started
    Sep 08 16:51:19 ycl-20 fluent-bit[3450]: [2022/09/08 16:51:19] [ info] [output:stdout:stdout.0] worker #0 started
    

Проверьте отправку и получение данных

Консоль управления
  1. В консоли управления перейдите в каталог, в котором создали поток данных, трансфер и бакет.
  2. Выберите сервис Data Streams.
  3. Выберите поток данных logs-stream.
  4. Перейдите на вкладку Мониторинг и посмотрите графики активности потока.
  5. Выберите сервис Data Transfer.
  6. Выберите трансфер logs-transfer.
  7. Перейдите на вкладку Мониторинг и посмотрите графики активности трансфера.
  8. Выберите сервис Object Storage.
  9. Выберите бакет logs-bucket.
  10. Проверьте, что в бакете появились объекты. Скачайте и посмотрите полученные файлы с логами.

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

Чтобы перестать платить за созданные ресурсы:

  1. Удалите трансфер.
  2. Удалите эндпоинты.
  3. Удалите поток данных.
  4. Удалите бакет.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте окружение
  • Создайте бакет
  • Создайте поток данных
  • Создайте трансфер
  • Установите Fluent Bit
  • Подключите Fluent Bit к потоку данных
  • Проверьте отправку и получение данных
  • Как удалить созданные ресурсы