Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Построение пайплайна CI/CD в GitLab
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Визуализация логов в Grafana с помощью плагина Cloud Logging
    • Канареечный релиз функции Cloud Functions
    • Интерактивная отладка функций Cloud Functions
    • Создание функции Node.js с помощью TypeScript
    • Запуск контейнерного приложения в Serverless Containers
    • Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
    • Использование API Gateway для настройки синтеза речи в SpeechKit
    • Подключение к YDB из функции Cloud Functions на Python
    • Подключение к базе данных YDB из функции Cloud Functions на Node.js
    • Защита API Gateway при помощи Smart Web Security
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows
    • Настройка реагирования в Cloud Logging и Yandex Cloud Functions
    • Настройка интеграций Workflows с Tracker, YandexGPT и Yandex Cloud Postbox
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте окружение
  • Создайте бакет для хранения журналов
  • Создайте поток данных
  • Создайте трансфер
  • Установите Fluentd
  • Подключите Fluentd к потоку данных
  • Проверьте отправку и получение данных
  • Как удалить созданные ресурсы
  1. Бессерверные технологии
  2. Хранение журналов работы приложения

Хранение журналов работы приложения

Статья создана
Yandex Cloud
Обновлена 7 марта 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте окружение
  • Создайте бакет для хранения журналов
  • Создайте поток данных
  • Создайте трансфер
  • Установите Fluentd
  • Подключите Fluentd к потоку данных
  • Проверьте отправку и получение данных
  • Как удалить созданные ресурсы

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

Обычно приложения не отправляют журналы в системы хранения напрямую, а используют агрегаторы: fluentd, fluentbit, logstash и другие. Агрегаторы могут записывать данные непосредственно в системы хранения, но для увеличения надежности данные отправляются сначала в промежуточный буфер (шина потоков данных, брокер сообщений), а уже оттуда — в системы хранения.

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

С помощью этой инструкции вы научитесь сохранять журналы работы приложений в Yandex Object Storage.

Чтобы настроить хранение журналов работы приложения:

  1. Подготовьте облако к работе.
  2. Настройте окружение.
  3. Создайте бакет для хранения журналов.
  4. Создайте поток данных.
  5. Создайте трансфер.
  6. Установите Fluentd.
  7. Подключите Fluentd к потоку данных.
  8. Проверьте отправку и получение данных.

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

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

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

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

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

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

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

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

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

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

  1. Создайте сервисный аккаунт и назначьте ему роль editor на ваш каталог.
  2. Создайте статический ключ доступа.

Идентификатор и секретный ключ понадобятся вам на следующих шагах.

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

  1. В консоли управления выберите каталог, в котором хотите создать бакет.
  2. В списке сервисов выберите Object Storage.
  3. Нажмите кнопку Создать бакет.
  4. Укажите имя бакета.
  5. В полях Доступ на чтение объектов, Доступ к списку объектов и Доступ на чтение настроек выберите Ограниченный.
  6. В поле Класс хранилища выберите Холодное.
  7. Нажмите кнопку Создать бакет.

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

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

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

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

  1. На странице созданного потока данных нажмите кнопку Действия и выберите Создать трансфер данных.
  2. Создайте эндпоинт-источник:
    1. В поле Направление выберите Источник.
    2. Укажите имя эндпоинта.
    3. В списке Тип базы данных выберите Yandex Data Streams.
    4. Выберите базу данных для источника.
    5. Введите имя созданного ранее потока данных.
    6. Выберите созданный ранее сервисный аккаунт.
    7. Нажмите кнопку Создать.
  3. Создайте эндпоинт-приемник:
    1. Нажмите кнопку Создать эндпоинт.
    2. В поле Направление выберите Приемник.
    3. Укажите имя эндпоинта.
    4. В списке Тип базы данных выберите Object Storage.
    5. Введите имя созданного ранее бакета.
    6. Выберите созданный ранее сервисный аккаунт.
    7. Нажмите кнопку Создать.
  4. Создайте трансфер:
    1. На панели слева выберите Трансферы.
    2. Нажмите кнопку Создать трансфер.
    3. Введите имя трансфера.
    4. Выберите созданный ранее эндпоинт-источник.
    5. Выберите созданный ранее эндпоинт-приемник.
    6. Нажмите кнопку Создать.
    7. Нажмите на значок рядом с именем созданного трансфера и выберите Активировать.

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

Установите FluentdУстановите Fluentd

  1. Скачайте и установите Fluentd.
  2. Установите плагин Fluentd для поддержки протокола AWS Kinesis Data Streams. По этому протоколу будет осуществляться поставка данных.
sudo td-agent-gem install fluent-plugin-kinesis

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

  1. На странице созданного потока данных нажмите кнопку Подключиться и перейдите на вкладку Fluentd.
  2. Скопируйте пример файла конфигурации и вставьте его в файл /etc/td-agent/td-agent.conf. Вместо <key_id> и <secret> введите полученные ранее идентификатор и секретный ключ.
Пример файла конфигурации
<system>
  log_level debug
</system>
<source>
  @type http
  @id input_http
  port 8888
</source>
<match kinesis>
  @type copy
  <store>
    @type stdout
  </store>
  <store>
    @type kinesis_streams

    aws_key_id <key_id>
    aws_sec_key <secret>

    # kinesis stream name
    stream_name /ru-central1/b1gia92mbaom********/etnhstu01nin********/my-stream

    # region
    region ru-central-1

    endpoint https://yds.serverless.yandexcloud.net

    <buffer>
      flush_interval 5s
    </buffer>
  </store>
</match>

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

Чтобы отправить данные в поток через Fluentd, выполните команду:

curl --request POST --data 'json={"user_id":"user1", "score": 100}' http://localhost:8888/kinesis

Если настройка выполнена успешно, в логе работы Fluentd /var/log/td-agent/td-agent.log появятся сообщения о получении данных и записи их в Yandex Data Streams по протоколу AWS Kinesis Data Streams:

...
2022-04-20 19:36:37.770311035 +0000 kinesis: {"user_id":"user1","score":100}
2022-04-20 19:36:42 +0000 [debug]: #0 /ru-central1/b1gia92mbaom********/etnhstu01nin********/my-stream: Write chunk 5dd1b1ca1bd788e49185aa681e8132b9 /   1 records /    0 KB
2022-04-20 19:36:42 +0000 [debug]: #0 /ru-central1/b1gia92mbaom********/etnhstu01nin********/my-stream: Finish writing chunk
...

В созданном бакете появится файл, который содержит отправленное сообщение.

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

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

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

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

Предыдущая
Ввод данных в системы хранения
Следующая
Развертывание веб-приложения с использованием Java Servlet API
Проект Яндекса
© 2025 ООО «Яндекс.Облако»