Логи серверные

Серверные логи SOBERIS обеспечивают полное логирование событий уровня приложения, включая ошибки, предупреждения, информационные сообщения и трассировку исключений. Система автоматически собирает метаданные о методах, классах и потоках выполнения.
Критическая важность серверных логов
Серверные логи являются основным инструментом диагностики приложения и выявления проблем производительности, ошибок конфигурации и сбоев системы.
Архитектура серверного логирования

Система серверного логирования SOBERIS построена на основе Logback с интеграцией MongoDB. Все события автоматически записываются в асинхронном режиме с полным сохранением контекста выполнения.
Компоненты системы
  • MongoDbAppender: Logback аппендер для асинхронного сохранения логов
  • AsyncServerLogService: Сервис для неблокирующей обработки логов
  • MongoDB коллекция: Централизованное хранение в коллекции server_log
  • Метаданные класса: Автоматическое извлечение информации о методах и исключениях
Уровни логирования
  • TRACE: Детальная отладочная информация для трассировки выполнения кода.
  • DEBUG: Отладочная информация для диагностики проблем разработки.
  • INFO: Информационные сообщения о нормальной работе приложения.
  • WARN: Предупреждения о потенциальных проблемах или неожиданных ситуациях.
  • ERROR: Ошибки выполнения, которые не приводят к остановке приложения.
  • FATAL: Критические ошибки, приводящие к аварийному завершению приложения.
Структура базы данных

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

Серверные логи хранятся в специализированной базе данных MongoDB с единой коллекцией server_log, которая содержит все уровни логирования с полными метаданными.
Поля документа серверного лога:
API для поиска серверных логов

Система предоставляет мощный REST API для поиска серверных логов с возможностью фильтрации по всем полям и гибким временным критериям.
# Эндпоинт поиска:
POST /sbrs-log/search-server-logs
Обязательные заголовки
Параметры поиска
# Структура запроса:
{
"level": "ERROR",
"dateFrom": 1705536000000,
"dateTo": 1705622400000,
"loggerName": "com.soberis.service.UserService",
"message": "Database connection failed",
"threadName": "http-nio-8080-exec-1",
"sourceClass": "UserService",
"sourceMethod": "findById",
"hasException": true,
"limit": 500
}
  • level: Уровень логирования для фильтрации
  • dateFrom / dateTo: Временной диапазон (Unix timestamp)
  • threadName: Имя потока выполнения
  • sourceMethod: Имя метода источника
  • limit: Максимальное количество записей
  • loggerName: Имя логгера (поиск по подстроке)
  • message: Поиск по тексту сообщения
  • sourceClass: Имя класса источника
  • hasException: Фильтр логов с исключениями
Пример запроса
curl -X POST "https://api.soberis.com/sbrs-log/search-server-logs" \
-H "SBRS-Correlation-Id: search-$(date +%s)" \
-H "SBRS-Originator: log-viewer" \
-H "SBRS-Message-Id: server-log-search-$(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"level": "ERROR",
"dateFrom": 1705536000000,
"dateTo": 1705622400000,
"hasException": true,
"limit": 100
}'
Ответ API
{
    "logs": [
        {
            "id": "65a7f5c0e1234567890abcdef",
            "level": "ERROR",
            "message": "Failed to connect to database: Connection timeout",
            "loggerName": "com.soberis.repository.UserRepository",
            "timestamp": "2024-01-17T10:30:15.123Z",
            "threadName": "http-nio-8080-exec-3",
            "sourceClass": "UserRepository",
            "sourceMethod": "findByUsername",
            "exceptionMessage": "java.sql.SQLTimeoutException: Connection timeout",
            "stackTrace": "java.sql.SQLTimeoutException: Connection timeout\n\tat com.mysql.cj.jdbc.ConnectionImpl...",
            "hostName": "sbrs-app-01",
            "applicationName": "soberis-core"
        }
    ],
    "totalCount": 1,
    "searchCriteria": {
        "level": "ERROR",
        "dateFrom": 1705536000000,
        "dateTo": 1705622400000,
        "hasException": true,
        "limit": 100
    }
}
Конфигурация логирования

Конфигурация включает настройки MongoDB подключения, параметры логирования и настройки аппендера.

Настройки MongoDB для серверных логов
# Конфигурация подключения:
app:
mongo-server-log:
enabled: true
connection-string: "mongodb://localhost:27017/?replicaSet=rs0"
database-name: "sbrs_server_log_db"
bean-name: "serverLogMongoTemplate"

# enabled: Включение/отключение MongoDB аппендера для серверных логов
# connection-string: Строка подключения к MongoDB с настройкой replica set
# database-name: Имя базы данных для хранения серверных логов
# bean-name: Имя Spring Bean для MongoTemplate
Настройки Logback аппендера
# Конфигурация аппендера:
app:
logback:
enabled: true
default-log-level: "INFO"
log-configuration-messages: true
mongo-appender:
name: "MONGODB"
logger-name: "root"
enabled: true

# enabled: Включение системы логирования через Logback
# default-log-level: Минимальный уровень логирования по умолчанию
# log-configuration-messages: Вывод сообщений о конфигурации логирования
# mongo-appender: Настройки MongoDB аппендера для Logback
Настройки сервиса серверных логов
# Конфигурация сервиса:
app:
server-log:
application-name: "SBRS-Backend"
collection-name: "server_log"
error-message: "Failed to save server log to MongoDB"
default-host: "unknown-host"
stack-trace-limit: 20

# application-name: Имя приложения для записи в логи
# collection-name: Имя коллекции MongoDB для серверных логов
# error-message: Сообщение об ошибке при сохранении логов
# default-host: Имя хоста по умолчанию если не удается определить
# stack-trace-limit: Лимит строк для stack trace в логах
Настройки аппендера логирования
# Дополнительные параметры:
app:
logging:
appender:
application-name: "SBRS-Backend"
min-level: "INFO"
stack-trace-limit: 20
excluded-loggers:
- "org.mongodb"
- "com.mongodb"
- "ServerLogService"
- "AsyncServerLogService"
- "MongoDbAppender"
error-message-prefix: "Error in MongoDbAppender: "

# min-level: Минимальный уровень логирования для обработки
# excluded-loggers: Список логгеров исключенных из обработки
# error-message-prefix: Префикс для сообщений об ошибках аппендера
Лучшие практики
Рекомендации по логированию
  • Логируйте входные параметры и результаты важных операций
  • Настройте соответствующие уровни логирования для разных сред
Интеграция с веб-интерфейсом

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