Логирование

Автор: S0ER

Логирование

Логирование - это один из основных источников информаци о работе системы. Правильная расстановка акцентов при проектировании подсистемы логирования - значимая часть работы архитектора.

Сегодня мы поговорим о том, как правильно спроектировать подсистему логирования, которая бы отвечала не только за сбор информации, но и позволяла решать практические задачи в работе сиетмы.

Какие задачи решает логирование

  • Отладка системы
  • Сбор аналитической информации
  • Оперативное состояние системы
  • Аудит действий и состояния системы
        C4Context
title Простейшая схема логирования 

Person(user, "Пользователь системы", "Произвольный пользователь системы")

Enterprise_Boundary(b1, "Границы системы") {

  System(SystemE, "Система обслуживающая пользователей")

  System_Boundary(s1, "Подсистема А") {
    System(SystemApp1, "Сервер приложений А")
    System(SystemLog1, "Система логирования А", "Локальная подсистема логов")
  }

  System_Boundary(s2, "Подсистема Б") {
    System(SystemApp2, "Сервер приложений Б")
    System(SystemLog2, "Система логирования Б", "Локальная подсистема логов")
  }

}

BiRel(user, SystemE, "Uses")
BiRel(SystemE, SystemApp1, "Uses")
BiRel(SystemE, SystemApp2, "Uses")

BiRel(SystemApp1, SystemLog1, "Uses")
BiRel(SystemApp2, SystemLog2, "Uses")

        

Типы логов

  • Технические логи
  • Бизнсовые логи
  • Логи по безопасности

Форматы

  • Неструктурированный текст
  • Структурированный текст
    • собственный формат
    • json
    • xml
  • Бинарный

Элементы логов

  • Сообщения
    • События
    • Команды и результаты их выполнения
    • Ошибки
  • Трассировка
  • Стек состояния

Идентификация сообщений

  • Сквозная идентификация
  • Сквозная идентификация с последовательностью
  • Логическая идентификация
  • Контекстная идентификация

Способы ведения логов

  • Текстовый
    • Многострочные логи
    • Однострочные логи
  • Бинарный

Типовые элементы сообщений

  • Дата и время
  • Коды сообщений
  • Протоколы и форматы
  • Текстовые расшифровки
  • Уровень критичности или важности
  • Пользователи и роли
  • Идентификаторы

Анонимизация бизнесовой информации и информативность логов

  • Замена значений на идентификаторы
    • идентификация по классам сообщений
    • идентификация сущностей
    • идентификация ошибок
  • Текстовые комментарии
    • сокращения и аббревиатуры

Автоматизация сбора логов для анализа

  • Регулярные выражения
  • Структурированные логи

Сбор логов

Сбор логов для отчеждения (например, для анализа в сторонних организациях) должен выполняться специализированными утилитами, с учетом следующих требований:

  • Централизованное или распределенное
  • С поддержкой фильтрации или нет
  • С автоматической анониизацией

Требования безопасности

  • Сегментацич логов
  • Анонимизация
  • Управление уровнем доступа
  • Ротация логов