Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Все решения
    • Все решения для Cloud Logging
    • В детализации по биллинг-аккаунту стало неожиданно отображаться потребление по сервису Cloud Logging
    • Как настроить отправку журналов работы сторонних приложений в Cloud Logging

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

  • Описание задачи
  • Решение
  1. Cloud Logging
  2. Как настроить отправку журналов работы сторонних приложений в Cloud Logging

Как настроить отправку журналов работы сторонних приложений в Cloud Logging

Статья создана
Yandex Cloud
Обновлена 16 августа 2024 г.
  • Описание задачи
  • Решение

Описание задачиОписание задачи

Необходимо отправлять журналы работы сторонних приложений и сервисов в Yandex Cloud Logging.

РешениеРешение

Для записи пользовательских логов вы можете воспользоваться примером для Yandex Cloud Functions.

{% cut "Пример облачной функции с уровнями логирования" %}
Параметры версии функции в этом примере такие:

  • Среда выполнения: python38;
  • Точка входа: index.handler;
  • Память: 128 МБ;
  • Таймаут: 3 секунды;
  • Сервисный аккаунт: <ID_сервисного_аккаунта>.

Примечание

Используемый для запуска функции сервисный аккаунт должен иметь роли logging.writer и functions.functionInvoker.
О том, как назначить данные роли для аккаунта, читайте в разделах:

  • Управление правами доступа к лог-группе;
  • Управление доступом в Cloud Functions
import logging
from pythonjsonlogger import jsonlogger


class YcLoggingFormatter(jsonlogger.JsonFormatter):
    def add_fields(self, log_record, record, message_dict):
        super(YcLoggingFormatter, self).add_fields(log_record, record, message_dict)
        log_record['logger'] = record.name
        log_record['level'] = str.replace(str.replace(record.levelname, "WARNING", "WARN"), "CRITICAL", "FATAL")


def handler(event, context):
    logHandler = logging.StreamHandler()
    logHandler.setFormatter(YcLoggingFormatter('%(message)s %(level)s %(logger)s'))

    logger = logging.getLogger('MyLogger')
    logger.propagate = False
    logger.addHandler(logHandler)
    logger.setLevel(logging.DEBUG)

    logger.debug("My log message of level DEBUG", extra={"my-key": "my-value"})
    logger.info("My log message of level INFO", extra={"my-key": "my-value"})
    logger.warning("My log message of level WARNING", extra={"my-key": "my-value"})
    logger.error("My log message of level ERROR", extra={"my-key": "my-value"})
    logger.fatal("My log message of level FATAL", extra={"my-key": "my-value"})
    
    cloud_logging_service = yandexcloud.SDK().client(LogReadingServiceStub)
    logs = {}
    criteria = Criteria(log_group_id='<id_log_группы>', resource_ids=['<id_ресурса>'])
    read_request = ReadRequest(criteria=criteria)

    logs = cloud_logging_service.Read(read_request)
    return logs

Также логи можно выгрузить командой yc logging read --group-id <ID_группы> --folder-id <ID_каталога> --since "YYYY-MM-DDT00:00:00Z" --until "YYYY-MM-DDT23:59:59Z" --filter 'resource_id: <ID_MDB_КЛАСТЕРА>' --limit 1000
Вы можете применить к этому запросу собственные фильтры, для этого ознакомьтесь с синтаксисом языка запросов.

Важно

Лимит выдачи журналов, возвращаемых этой командой – 1000 строк. Если строк журналов, хранимых в Yandex Cloud Logging за этот период окажется более 1000, самые ранние из них не войдут в эту выборку.

Рекомендуем выгружать журналы с указанием интервала в 15 минут, поскольку в них может содержаться большое количество событий.

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

Предыдущая
В детализации по биллинг-аккаунту стало неожиданно отображаться потребление по сервису Cloud Logging
Следующая
Все решения для Compute Cloud
Проект Яндекса
© 2025 ООО «Яндекс.Облако»