Логирование
Автор: 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
- Бинарный
Элементы логов
- Сообщения
- События
- Команды и результаты их выполнения
- Ошибки
- Трассировка
- Стек состояния
Идентификация сообщений
- Сквозная идентификация
- Сквозная идентификация с последовательностью
- Логическая идентификация
- Контекстная идентификация
Способы ведения логов
- Текстовый
- Многострочные логи
- Однострочные логи
- Бинарный
Типовые элементы сообщений
- Дата и время
- Коды сообщений
- Протоколы и форматы
- Текстовые расшифровки
- Уровень критичности или важности
- Пользователи и роли
- Идентификаторы
Анонимизация бизнесовой информации и информативность логов
- Замена значений на идентификаторы
- идентификация по классам сообщений
- идентификация сущностей
- идентификация ошибок
- Текстовые комментарии
- сокращения и аббревиатуры
Автоматизация сбора логов для анализа
- Регулярные выражения
- Структурированные логи
Сбор логов
Сбор логов для отчеждения (например, для анализа в сторонних организациях) должен выполняться специализированными утилитами, с учетом следующих требований:
- Централизованное или распределенное
- С поддержкой фильтрации или нет
- С автоматической анониизацией
Требования безопасности
- Сегментацич логов
- Анонимизация
- Управление уровнем доступа
- Ротация логов