Русская Википедия:Журналирование
Журналирование — процесс записи в хронологическом порядке событий, происходящих с каким-то объектом или в рамках какого-то процесса, в специальный файл или базу данных, называемые журналом. Часто называется аудитом.
Цели и задачи журналирования
Основная цель журналирования — это обеспечение возможности контроля и анализа состояния и поведения объекта или процесса, с которым связан журнал. По записям в журнале можно понять, что сейчас происходит с наблюдаемым объектом или процессом, или же восстановить, что с ним происходило в какой-то интересующий момент времени.
Журналирование может выполнять различные задачи в зависимости от контекста применения:
— Отладка и тестирование. Журналы помогают разработчикам и тестировщикам обнаруживать и исправлять ошибки в программном обеспечении, а также проверять его работоспособность и соответствие требованиям.
— Мониторинг и диагностика. Журналы служат администраторам и специалистам по поддержке, дабы отслеживать состояние и производительность системы, а также выявлять и устранять проблемы, связанные с ее функционированием.
— Безопасность и защита. Журналы дают возможность специалистам по безопасности обнаруживать и предотвращать атаки на систему, а также расследовать уже случившиеся инциденты, найти предпосылки к ним, восстановить предшествующий их возникновению ход событий и обнаружить те элементы, взаимодействие с которыми сделало их возможным.
— Учёт и отчётность. Журналы могут помочь менеджерам и аудиторам отслеживать действия пользователей и операторов системы, а также формировать статистические и финансовые отчеты по результатам их работы.
Объекты и события журналирования
В информационных технологиях в качестве объектов журналирования могут выступать различные компоненты информационной системы:
— Файловая система. Журнал файловой системы содержит информацию о создании, удалении или изменении файлов и каталогов на диске.
— Операционная система. Журнал операционной системы содержит информацию о запуске, остановке или завершении процессов, а также о возникновении ошибок или исключительных ситуаций в системе.
— Приложение. Журнал приложения содержит информацию о действиях, выполняемых приложением, а также о его взаимодействии с другими приложениями или системами.
— Сервер. Журнал сервера содержит информацию о запросах, поступающих на сервер, а также о его ответах и результатах обработки запросов.
— Сетевое оборудование. Журнал сетевого оборудования содержит информацию о сетевых пакетах, проходящих через него, а также о его настройках и состоянии.
В качестве событий журналирования могут выступать любые действия или факты, связанные с объектом журналирования:
— Вход или выход пользователя в систему. Журнал регистрации содержит информацию о том, кто, когда и откуда вошел или вышел из системы.
— Добавление, удаление или изменение данных. Журнал данных содержит информацию о том, кто, когда и что добавил, удалил или изменил в базе данных или файловой системе.
— Запрос к серверу. Журнал запросов содержит информацию о том, кто, когда и что запрашивал у сервера.
— Ответ сервера. Журнал ответов содержит информацию о том, что и каким образом сервер ответил на запрос.
— Передача файла. Журнал передачи файлов содержит информацию о том, кто, когда и какой файл передал или получил по сети.
— Блокировка или разрешение сетевого пакета. Журнал фильтрации сетевого трафика содержит информацию о том, какой пакет был заблокирован или разрешен сетевым оборудованием.
Форматы и структура журналов
Журналы могут иметь различные форматы и структуру в зависимости от способа их хранения и обработки:
— Текстовый формат. Журнал представляет собой текстовый файл, в котором каждая строка соответствует одному событию журналирования. Строка может иметь определенный формат, например, CSV (comma-separated values) или JSON (JavaScript Object Notation), или же быть произвольной длины и содержания. Текстовый формат удобен для чтения человеком, но может быть неэффективным для хранения и обработки больших объемов данных.
— Бинарный формат. Журнал представляет собой бинарный файл, в котором каждое событие журналирования кодируется определенным образом. Бинарный формат удобен для хранения и обработки больших объемов данных, но может быть нечитаемым для человека без специальных инструментов.
— База данных. Журнал представляет собой таблицу или коллекцию в базе данных, в которой каждая запись соответствует одному событию журналирования. База данных может быть реляционной (например, MySQL или PostgreSQL) или нереляционной (например, MongoDB или Cassandra). База данных может обеспечивать эффективный доступ к данным по различным критериям, а также поддерживать различные операции над данными, такие как агрегация, сортировка или группировка.
Каждое событие журналирования в базе данных или файле обычно содержит следующие элементы:
— Метка времени. Это дата и время, когда произошло событие журналирования. Метка времени позволяет упорядочить события по хронологии и определить интервалы между ними.
— Источник. Это идентификатор объекта или процесса, который сгенерировал событие журналирования. Источник позволяет отслеживать происхождение события и связывать его с конкретным компонентом системы.
— Уровень. Это степень важности или серьезности события журналирования. Уровень позволяет фильтровать события по их приоритету и определять их влияние на систему. Существуют различные системы классификации уровней, например, DEBUG, INFO, WARN, ERROR, FATAL.
— Сообщение. Это текстовое описание события журналирования, которое может содержать дополнительные детали или параметры, связанные с событием. Сообщение позволяет понять суть и контекст события.
Примеры нереляционных баз данных
В настоящее время существует множество нереляционных баз данных различных типов и категорий:
— MongoDB. Это документоориентированная база данных, которая хранит данные в формате BSON (бинарный JSON). MongoDB поддерживает гибкие схемы данных, индексацию, агрегацию, транзакции, репликацию и шардирование.
— Cassandra. Это распределенная база данных типа «ключ-значение», которая обеспечивает высокую доступность и масштабируемость данных. Cassandra поддерживает модель данных по столбцам, консистентный хешинг, тюнинговую непротиворечивость и CQL (язык запросов Cassandra).
— Redis. Это база данных в памяти типа «ключ-значение», которая обеспечивает высокую производительность и гибкость данных. Redis поддерживает различные типы значений, такие как строки, списки, множества, хеши и гиперлоглоги, а также операции над ними, такие как атомарные инкременты, публикация/подписка и Lua-скрипты.
— Neo4j. Это графовая база данных, которая хранит данные в виде вершин и ребер графа. Neo4j поддерживает гибкие схемы данных, индексацию, транзакции, репликацию и Cypher (язык запросов Neo4j).
— Elasticsearch. Это поисковая база данных, которая хранит данные в виде документов JSON и обеспечивает полнотекстовый поиск, фасетный поиск, геопространственный поиск и аналитику. Elasticsearch поддерживает гибкие схемы данных, индексацию, репликацию и шардирование.
Ссылки
— Журналирование — Викисловарь
— Журналирование. Почему нужны журналы и зачем их защищать?
— Нереляционные данные и базы данных NoSQL — Azure Architecture Center | Microsoft Learn
— Что такое NoSQL? | Нереляционные базы данных, модели данных
— Нереляционные СУБД — ROI4CIO
— Нереляционные данные и базы данных NoSQL — Azure Architecture Center