Управление логами

Система SBRS включает в себя комплексную архитектуру логирования, которая обеспечивает сбор, хранение, поиск и управление всеми типами логов приложения. Система поддерживает три основных типа логов: серверные логи, логи событий и сервисные логи.
Обзор системы логирования

Система SBRS включает в себя комплексную архитектуру логирования, которая обеспечивает сбор, хранение, поиск и управление всеми типами логов приложения. Система поддерживает три основных типа логов: серверные логи, логи событий и сервисные логи.
Архитектура логирования
  • MongoDB для хранения логов с поддержкой шардинга
  • Асинхронная обработка логов для высокой производительности
  • TTL (Time To Live) индексы для автоматического управления жизненным циклом логов
  • REST API для поиска и управления логами
Типы логов

Серверные логи
Логи уровня приложения и системы
  • База данных: sbrs_server_log_db
  • Коллекция: server_log
  • Поля: level, message, loggerName
  • Поддержка stack trace

Логи событий
HTTP запросы и события системы
  • База данных: sbrs_event_log_db
  • Динамические коллекции
  • Поля: method, uri, statusCode
  • Время обработки запросов

Сервисные логи
Бизнес-логика и сервисные операции
  • База данных: sbrs_service_log_db
  • Коллекции по типам операций
  • Поля: eventType, correlationId
  • Трассировка запросов
Поиск логов

API для поиска логов
# Поиск серверных логов
POST /sbrs-log/search-server-logs Headers: SBRS-Correlation-Id: unique-correlation-id SBRS-Originator: system-name SBRS-Message-Id: unique-message-id Content-Type: application/json Body: {
    "level": "ERROR",
    "dateFrom": 1705536000000,
    "dateTo": 1705622400000,
    "loggerName": "com.soberis.service",
    "message": "Exception",
    "threadName": "main",
    "sourceClass": "UserService",
    "hasException": true,
    "limit": 1000
}
# Поиск логов событий
POST /sbrs-log/search-event-logs Headers: SBRS-Correlation-Id: unique-correlation-id SBRS-Originator: system-name SBRS-Message-Id: unique-message-id Content-Type: application/json Body: {
    "event": "post_users",
    "eventType": "completed",
    "dateFrom": 1705536000000,
    "dateTo": 1705622400000,
    "chainId": "correlation-id",
    "messageId": "message-id",
    "sender": "originator-name",
    "limit": 1000
}
# Получение коллекций логов
POST /sbrs-log/get-log-collections Headers: SBRS-Correlation-Id: unique-correlation-id SBRS-Originator: system-name SBRS-Message-Id: unique-message-id Content-Type: application/json Body: {
    "logType": "server"
}Response: {
    "collections": [
        "server_log",
        "application_log",
        "error_log"
    ]
}
Управление TTL (Time To Live)

Система поддерживает автоматическое управление жизненным циклом логов через TTL индексы. Это позволяет автоматически удалять устаревшие записи и оптимизировать использование дисковых ресурсов.

Установка TTL
POST /sbrs-index/set-log-ttl Headers: SBRS-Correlation-Id: unique-correlation-id SBRS-Originator: system-name SBRS-Message-Id: unique-message-id Content-Type: application/json Body: {
    "logDb": "sbrs_server_log_db",
    "ttl": 2592000000
}Response: {
    "sbrsMessageType": "success",
    "sbrsStatusMessage": "Successfully set TTL for 3 collections in database 'sbrs_server_log_db'",
    "logDb": "sbrs_server_log_db",
    "ttl": 2592000000,
    "processedCollections": 3,
    "successfulCollections": [
        "server_log",
        "application_log",
        "audit_log"
    ],
    "failedCollections": [],
    "operation": "SET_TTL"
}
Получение текущего TTL
POST /sbrs-index/get-log-ttl Headers: SBRS-Correlation-Id: unique-correlation-id SBRS-Originator: system-name SBRS-Message-Id: unique-message-id Content-Type: application/json Body: {
    "logDb": "sbrs_server_log_db"
}Response: {
    "sbrsMessageType": "success",
    "sbrsStatusMessage": "TTL retrieved successfully",
    "logDb": "sbrs_server_log_db",
    "ttl": 2592000000
}
Справка по TTL
  • 0 мс - удаляет TTL (записи хранятся бессрочно)
  • 86400000 мс (24 часа) - для отладочных логов
  • 604800000 мс (7 дней) - для обычных операционных логов
  • 2592000000 мс (30 дней) - для аудиторских логов
Безопасность и роли

Доступ к функциям управления логами контролируется через систему ролей. Для работы с API логов требуются соответствующие права доступа.

Требуемые роли
  • READ_METRICS - для поиска и просмотра логов
  • UPDATE_LOG_TTL - для управления TTL логов
Устранение неполадок
Проблема: TTL не работает
Диагностика TTL:
  • Проверить наличие TTL индексов в коллекции
  • Убедиться, что поле timestamp имеет корректный тип Date
  • Проверить, что MongoDB имеет права на создание индексов
  • Учесть, что TTL работает с задержкой до 60 секунд
Made on
Tilda