Логи событий

Логи событий SOBERIS предоставляют детальную информацию о всех HTTP-запросах, обрабатываемых системой. Они позволяют отслеживать производительность, анализировать пользовательскую активность и диагностировать проблемы в реальном времени.
Важность мониторинга событий
Логи событий критически важны для обеспечения отслеживаемости запросов, анализа производительности и быстрого выявления проблем.
Архитектура логирования событий

Система логирования событий SOBERIS автоматически записывает информацию о каждом HTTP-запросе, включая заголовки, тело запроса и ответа, время обработки и метаданные.
Компоненты системы
  • RequestLogService: Основной сервис для асинхронного логирования запросов
  • MongoDB коллекции: Динамические коллекции по методам и эндпоинтам
  • Метаданные трассировки: Correlation ID, Originator, Message ID
  • Фильтрация данных: Исключение чувствительных заголовков
Типы событий
  • started: Событие начала обработки запроса. Фиксирует входящие параметры и заголовки.
  • completed: Успешное завершение запроса с кодом состояния 2xx и временем обработки.
  • failed: Неудачная обработка запроса с ошибками 4xx/5xx и информацией об исключениях.
Структура базы данных

База данных: sbrs_event_log_db

Логи событий хранятся в отдельной базе данных MongoDB с динамическим созданием коллекций на основе HTTP-методов и путей эндпоинтов.
# Схема именования коллекций:
# log_[method]_[endpoint_path]

# Примеры:

• log_post_sbrs_data_insert_one
• log_get_sbrs_schema_list
• log_put_sbrs_data_update_one
Поля документа лога:
API для поиска логов событий

Система предоставляет REST API для поиска и фильтрации логов событий с поддержкой различных критериев.
# Эндпоинт поиска:
POST /sbrs-log/search-event-logs
Обязательные заголовки
Параметры поиска
# Структура запроса:
{
  "event": "log_post_sbrs_data_insert_one",
  "eventType": "completed",
  "dateFrom": 1672531200000,
  "dateTo": 1672617600000,
  "chainId": "main-chain",
  "messageId": "msg-12345",
  "sender": "web-client",
  "limit": 100
}
  • event: Название коллекции события
  • dateFrom / dateTo: Временной диапазон (Unix timestamp)
  • sender: Источник запроса (только латиница)
  • eventType: Тип события
  • messageId: UUID идентификатор сообщения
  • limit: Максимальное количество записей
Пример запроса
curl -X POST "https://api.soberis.com/sbrs-log/search-event-logs" \
  -H "Content-Type: application/json" \
  -H "SBRS-Correlation-Id: 550e8400-e29b-41d4-a716-446655440000" \
  -H "SBRS-Originator: web-app" \
  -H "SBRS-Message-Id: msg-12345" \
  -d '{
    "eventType": "failed",
    "dateFrom": 1672531200000,
    "dateTo": 1672617600000,
    "limit": 50
  }'
Ответ API
{
    "logs": [
        {
            "_id": {
                "timestamp": 1672565123456,
                "date": "2023-01-01T12:52:03.456Z"
            },
            "eventType": "failed",
            "method": "POST",
            "uri": "/sbrs-data/insert-one",
            "statusCode": 400,
            "processingTimeMs": 1523,
            "correlationId": "550e8400-e29b-41d4-a716-446655440000",
            "messageId": "msg-12345",
            "originator": "web-app",
            "headers": {
                "content-type": "application/json",
                "user-agent": "SBRS-Client/1.0"
            },
            "requestBody": "{\"data\": \"invalid\"}",
            "responseBody": "{\"error\": \"Validation failed\"}",
            "timestamp": "2023-01-01T12:52:03.456Z",
            "_class": "com.soberis.model.RequestLog"
        }
    ]
}
Получение списка коллекций

Для получения актуального списка доступных коллекций событий используется отдельный эндпоинт.
# Эндпоинт:
POST /sbrs-log/get-log-collections Content-Type: application/json{
  "logType": "event"
}
# Пример ответа:
{
  "collections": [
    "log_post_sbrs_data_insert_one",
    "log_get_sbrs_schema_list",
    "log_put_sbrs_data_update_one",
    "log_delete_sbrs_data_delete_one",
    "log_post_sbrs_data_search"
  ]
}
Настройка TTL (Time To Live)

Логи событий поддерживают автоматическое удаление через TTL индексы для управления дисковым пространством.
# Установка TTL
POST /sbrs-index/set-log-ttl
{
  "logType": "event",
  "ttlMs": 2592000000
}
# Получение TTL
POST /sbrs-index/get-log-ttl
{
  "logType": "event"
}
Рекомендуемые значения TTL
  • 24 часа: 86400000 мс (для отладки)
  • 7 дней: 604800000 мс (для текущего мониторинга)
  • 30 дней: 2592000000 мс (для исторического анализа)
Производительность и оптимизация

Асинхронное логирование

Все операции логирования выполняются асинхронно для минимизации влияния на производительность основного приложения.
  • Неблокирующая запись: Логирование не блокирует выполнение запросов
  • Буферизация: Данные записываются в буфер и сбрасываются пакетами
  • Отказоустойчивость: Ошибки логирования не влияют на основную логику
  • Мониторинг производительности: Отслеживание времени записи логов
Фильтрация чувствительных данных

Система автоматически исключает чувствительные заголовки и данные из логов для обеспечения безопасности.
Исключаемые заголовки:
  • authorization
  • cookie
  • x-auth-token
  • sbrs-api-key
  • bearer
  • access-token
  • refresh-token
Лучшие практики
  • Регулярно анализируйте логи для выявления проблем производительности
  • Используйте correlation ID для трассировки сложных запросов
  • Мониторьте дисковое пространство и настройте адекватные TTL
Интеграция с веб-интерфейсом

Система SOBERIS включает в себя веб-интерфейс для удобного просмотра и анализа логов событий.
Возможности интерфейса:
  • Поиск и фильтрация по всем полям
  • Временные диапазоны с календарным интерфейсом
  • Группировка по типам событий
Устранение неполадок
Проблема: Логи не записываются
Возможные причины и решения:
  • Проверьте подключение к MongoDB
  • Убедитесь в корректности настроек коллекций
  • Проверьте права доступа к базе данных
  • Проверьте логи приложения на наличие ошибок асинхронного сервиса
Проблема: Медленная работа поиска
Решения для оптимизации:
  • Ограничьте временной диапазон поиска
  • Используйте фильтрацию по коллекциям
  • Настройте TTL для удаления старых записей
Проблема: Переполнение дискового пространства
Действия по управлению размером:
  • Настройте агрессивные TTL политики
  • Оптимизируйте размер записываемых данных
Made on
Tilda