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

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

Система сервисного логирования SOBERIS записывает информацию о выполнении бизнес-операций, включая параметры операций, результаты выполнения, время обработки и контекстную информацию для корреляции с другими системными компонентами.
Компоненты системы
  • LogSearchService: Основной сервис для поиска и анализа сервисных логов
  • MongoDB коллекции: Специализированные коллекции по типам операций
  • Метаданные корреляции: Chain ID, Message ID, Sender для трассировки
  • Контекстная информация: Параметры операций и результаты выполнения
Типы сервисных операций
  • started: Начало выполнения сервисной операции. Фиксирует входные параметры и контекст.
  • completed: Успешное завершение операции с результатами и метриками производительности.
  • failed: Неудачное выполнение операции с детальной информацией об ошибках.
Структура базы данных

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

Сервисные логи хранятся в отдельной базе данных MongoDB с коллекциями, организованными по типам бизнес-операций и сервисов.
# Схема именования коллекций:
# service_[operation_type]_[context]

# Примеры:

• service_data_validation
• service_business_process
• service_integration_call
Поля документа сервисного лога:
API для поиска сервисных логов

Система предоставляет REST API для поиска и фильтрации сервисных логов с поддержкой различных критериев поиска.
# Эндпоинт поиска:
POST /sbrs-log/search-service-logs
Обязательные заголовки
Параметры поиска
# Структура запроса:
{
"event": "service_data_validation",
"eventType": "completed",
"dateFrom": 1672531200000,
"dateTo": 1672617600000,
"chainId": "business-process-chain",
"messageId": "msg-business-123",
"sender": "data-service",
"limit": 100
}
  • event: Название коллекции события
  • dateFrom / dateTo: Временной диапазон (Unix timestamp)
  • sender: Источник запроса (только латиница)
  • messageId: UUID идентификатор сообщения
  • limit: Максимальное количество записей
  • eventType: Максимальное количество записей
  • chainId: Максимальное количество записей
Пример запроса
curl -X POST "https://api.soberis.com/sbrs-log/search-service-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,
"chainId": "business-process-chain",
"limit": 50
}'
Ответ API
{
    "logs": [
        {
            "_id": {
                "timestamp": 1672565123456,
                "date": "2023-01-01T12:52:03.456Z"
            },
            "eventType": "failed",
            "chainId": "business-process-chain",
            "messageId": "msg-business-123",
            "sender": "data-service",
            "operationType": "data_validation",
            "parameters": {
                "entityId": "12345",
                "validationRules": [
                    "required",
                    "format"
                ]
            },
            "errorDetails": {
                "errorCode": "VALIDATION_FAILED",
                "errorMessage": "Field 'email' format is invalid",
                "stackTrace": "ValidationException at line 42"
            },
            "duration": 1523,
            "timestamp": "2023-01-01T12:52:03.456Z",
            "_class": "com.soberis.model.ServiceLog"
        }
    ]
}
Получение списка коллекций

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

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

Связывание логов через корреляционные поля

Сервисные логи тесно интегрированы с логами событий и серверными логами через общие идентификаторы корреляции.
Стратегии корреляции
  • Correlation ID: Связывает все события в рамках одного пользовательского запроса
  • Message ID: Уникальный идентификатор для каждого сообщения в системе
  • Chain ID: Идентификатор цепочки операций для сложных бизнес-процессов
  • Временные метки: Позволяют восстановить последовательность событий
# Пример связи с логами событий
1. HTTP запрос (event log):
correlationId: "req-123"

2. Сервисная операция (service log):
chainId: "req-123"
messageId: "business-op-456"

3. Результат операции (event log):
correlationId: "req-123"
# Пример связи с серверными логами
1. Сервисная операция (service log):
messageId: "business-op-456"

2. Ошибка в логике (server log):
threadName: содержит "business-op-456"
loggerName: "com.soberis.service"

3. Обработка ошибки (service log):
messageId: "business-op-456"
eventType: "failed"
Производительность и оптимизация

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

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

Ключевые метрики сервисных операций
Бизнес-метрики
  • Время выполнения бизнес-операций
  • Частота выполнения различных операций
  • Корреляция операций с пользовательской активностью
Техническая надежность
  • Процент успешных сервисных операций
  • Частота и типы ошибок в бизнес-логике
  • Производительность цепочек операций
Интеграция с веб-интерфейсом

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