Логи в Loginom без секретов: как заставить их «говорить»

Лог — это информационный след, оставленный после выполнения какого-либо действия. С его помощью не только находят ошибки, но и анализируют скорость обработки, нагрузку, объем информации и многое другое. Хотя само действие может быть невидимым, следы от него появляются в логах.

В серверных и настольных редакциях платформы Loginom, логи — это хронологическая последовательность записей, фиксирующих время и наиболее значимые события.

Просматривая логи, можно анализировать следы, которые оставили те или иные действия. Каждое событие оставляет свой отпечаток. И если действовать как опытный охотник, можно узнать много интересного: кто где ночует, кто какими тропами ходит, кто где часто бывает. О некоторых событиях можно узнать только по следам.

Чтобы начать эффективно работать с логами, нужно знать: какие задачи они решают и когда без них нельзя, формат записи логов и где находится файл с ними, правила перезаписи и как выбрать уровень логирования. Также надо понимать, как организовать работу с ними на локальном компьютере и при коллективной работе.

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

Разработчики, используя лог-файлы, устраняют ошибки в программном обеспечении, администраторы выясняют причины отказов в работе, служба безопасности определяет виды угроз. Для непривилегированных пользователей эта информация, как правило, избыточна и для основной работы не нужна.

В основном логи в Loginom нужны для выполнения четырех типов задач: отладка, профилирование, мониторинг и обеспечение безопасности.

Отладка

Когда что-то не сработало, нужно понимать, что именно произошло и как исправить. Сценарий подобен сложному механизму. Логи — это индикаторы на каждом его узле. Если что-то не работает, логи указывают, где именно произошел сбой. Это позволяет быстро выявить причину (проблема с базой данных, нехватка памяти, ошибка в коде и т.д.) и устранить ее.

Профилирование

Профилирование — это процесс анализа скорости выполнения различных задач. Запускается программа, и требуется выяснить, какие сценарии выполняются быстро, а какие медленно. Часто сценарии зависят друг от друга.

Это особенно актуально при работе с большими объемами данных. Неправильная настройка может привести к тому, что вычисления будут занимать несколько суток. Для оценки производительности важно фиксировать и анализировать время начала и завершения выполнения задач.

Мониторинг

Мониторинг представляет собой процесс наблюдения за работой системы. Чаще всего включает сбор данных и их анализ, чтобы выявить проблемы и улучшить ситуацию.

Представим, что существует система поддержки принятия решений (СППР), которая функционирует непрерывно. Может возникнуть ситуация, когда она перестает работать с приемлемым временем отклика. Логи помогают разобраться в чем проблема: на стороне системы поддержки или к ней перестали обращаться. Например, СППР может работать штатно, а у смежной системы что-то сломалось. Или, наоборот, резко увеличилось количество обращений и платформа перестала справляться. Логи помогают понять — это спам, атака, неполадки в работе оборудования или что-то другое.

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

Безопасность

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

Логи позволяют отслеживать аутентификацию в системе, изменение учетных данных, операции по передаче данных, такие как загрузка и выгрузка файлов и тому подобное. Таким образом логи используют для контроля безопасности.

Формат записи логов для платформы Loginom

В Loginom каждая строка лог-файла представляет собой сообщение в формате:

yyyy-mm-ddThh:mm:ss.mss level GUID (process:thread>user:session:[requestID]) — message[textJSON]
  • >yyyy-mm-ddThh:mm:ss.mss — дата и время с указанием миллисекунд (дата и время разделены литерой T);
  • >level — уровень логирования;
  • >GUID — уникальный идентификатор сообщения, записанный в нижнем регистре, без скобок и дефисов;
  • >process — имя исполняемого файла;
  • >thread — идентификатор потока;
  • >user — имя пользователя, запустившего процесс;
  • >session — идентификатор сессии;
  • >requestID — идентификатор запроса (необязательный параметр; присутствует, если процесс запущен из Loginom Integrator);
  • >message — текст сообщения;
  • >textJSON — параметры, записанные в формате JSON (необязательная часть).

Пример записи логов в Loginom:

Пример записи логов в Loginom
2024-10-23T15:56:19.242 info 64b508f609b0804e883887780de60675 (loginom.exe:12560>User1:1) - Сохранен пакет "C:/Users/User1/Documents/Package2.lgp"{"PACKAGE_FILE": "C:/Users/User1/Documents/Package2.lgp"}

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

После парсинга данные из логов можно заносить в базы данных, обрабатывать, показывать, считывать нужные показатели, метрики и т.д. Например, можно посчитать количество ошибок, сколько пользователей запустило определенный сценарий, какое время уходило на его выполнение и т.д.

Местоположение лог-файлов

По умолчанию для серверной редакции (Windows) логи записываются в файл app.log папки:

C:\ProgramData\Loginom\Server\Logs

Для Desktop редакции (Windows) по умолчанию в файл app.log папки:

C:\Users\User\AppData\Roaming\Loginom\Personal\Logs

Для любой операционной системы, как Windows, так и Linux, есть возможность записать логи в файл (Тип логирования: Файл).

Выбор типа логирования в Loginom

Помимо работы с файлами, для операционной системы Linux существует еще один вариант работы с логами — это стандартный компонент Systemd с названием Journald, обеспечивающий централизованный способ управления и доступа к записям логов.

Journald популярен благодаря своей важной роли в управлении системными журналами для Linux и активно применяется. Для более полного понимания всех возможностей, функций и тонкостей этой системы ведения логов, стоит уделить данному вопросу отдельное внимание и изучить его более подробно.

Когда логи критически важны

При неудачном запуске сценария или отдельного узла в Loginom выводится сообщение об ошибке. Это способ отладки при интерактивной работе с платформой. Он помогает не во всех случаях. Как правило, нельзя обойтись без логов в процессах без визуального интерфейса и при коллективной работе.

Процессы без визуального интерфейса

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

Во многих крупных компаниях ночные графики работы полностью расписаны. В нерабочее время выполняются ETL-процессы, резервное копирование, подготовка данных, автоматическое формирование отчетов. Каждую ночь информация загружается из различных баз, обрабатывается и выгружается в другие базы.

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

Коллективная работа

Логи также критично важны, как только речь идет о коллективной работе. Выполнение задач одного пользователя может помешать работе других или наоборот. Каждый пользователь видит только часть системы, свое окно, в то время как параллельно работают коллеги, а это огромное количество других процессов.

Одновременно могут запускаться фоновые процессы, ETL-процессы, обращения к веб-сервису и многое другое. И чаще всего пользователь не может на эти процессы влиять, у него, из соображений безопасности, нет даже доступа к этой информации.

Ему недоступна вся картина. Поэтому фактически единственный способ проанализировать все эти процессы — это посмотреть на их следы, то есть на логи.

Правила перезаписи

Логи записываются в файл, но на самом деле они, чаще всего, перезаписываются. Накопление их не всегда предсказуемо (был один запуск программы или пришлось запускать ее сто раз) и через какое-то время их размер становится значительным, занимая большой объем дискового пространства. Чтобы разрастание не стало стихийным, при достижении какого-то лимита, старые лог-файлы удаляются и на их место записываются новые.

Правила перезаписи логов в Loginom регулируются двумя параметрами: максимальным размером и количеством резервных лог-файлов.

Максимальный размер лог-файла

Максимальный размер лог-файла задается в байтах.

Выбор максимального размера лог-файла в Loginom

При превышении данного размера, файл сохраняется с расширением .1 и создается новый. Например, старый файл app.log при превышении указанного размера сохранится как app.log.1, а взамен ему будет создан новый app.log, где и продолжится ведение журнала.

Ротация лог-файлов Loginom

Количество резервных лог-файлов

Количество резервных копий, создаваемых при превышении максимального размера лог-файла, задается положительным целым числом.

Выбор количества резервных копий

При превышении размера файла и создании нового файла логирования, старый файл получает расширение .1, со сдвигом старых сохраненных файлов на +1: .2, .3, ..., .<максимальный индекс>, старый резервный файл app.log.1 станет app.log.2, а если на момент добавления резервного файла уже был достигнут лимит, то самый старый файл лога удаляется.

Удаление старого лог-файла Loginom при достижении лимита

При значении количества резервных копий < 1 старые файлы логов не сохраняются.

Выбор уровня логирования

У логов в Loginom есть различная детализация. Уровень логирования — параметр, который позволяет настраивать какие события будут записываться в лог-файл. Самый компактный вариант — Авария, когда записываются только ошибки, приводящие к выходу сервера из строя. Самый детализированный — Трассировка. При этом в лог записывается максимальное количество информации.

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

По умолчанию установлен уровень Информация.

Выбор уровня логирования для платформы Loginom

Этого уровня достаточно для простого пользования платформой. Когда нужно провести профилирование, понять, на каком узле теряется скорость, или для отладки процесса, задается максимальный уровень — Трассировка.

Уровень логированияВходящие уровни
ТрассировкаАвария, Ошибка, Предупреждение, Событие, Информация, Отладка, Трассировка
ОтладкаАвария, Ошибка, Предупреждение, Событие, Информация, Отладка
ИнформацияАвария, Ошибка, Предупреждение, Событие, Информация
СобытиеАвария, Ошибка, Предупреждение, Событие
ПредупреждениеАвария, Ошибка, Предупреждение
ОшибкаАвария, Ошибка
АварияАвария

Описание уровней логирования:

Уровень логированияВыводимые команды
АварияВыводит ошибки, приводящие к выходу сервера из строя
ОшибкаВсе ошибки попадают в лог, за исключением частых ошибок (например, ошибки преобразования типа в Калькуляторе)
ПредупреждениеПредупреждения о проблемах в конфигурации (возникают при загрузке или копировании/вставке узлов), о несуществующих или лишних колонках при синхронизации колонок, об ошибках в Калькуляторе. Ошибки, которые предоставляют информацию о возникновении непредвиденного события. Сообщение о неудавшейся попытке подключения пользователем.
СобытиеОткрытие, закрытие и сохранение пакета. Установка версии Пакета. Конвертация Пакета старой версии.
ИнформацияОткрытие (закрытие) сессий пользователя. Действия с сессиями и Пакетами (закрытие Пакетов и сессий) из менеджера сессий. Действия с сессиями и Пакетами (закрытие Пакетов и сессий) из менеджера сессий. Изменение пользователя (добавление, удаление, перемещение в группы) через администратора. Добавление (удаление) общих папок. Сообщения от менеджера памяти. Ошибки при обновлении колонок в визуализаторах «Таблица» и «Статистика».
ОтладкаАктивация (деактивация) узлов. Ошибки преобразования типов для переменных типов в Калькуляторе
ТрассировкаЛогируются все операции, например, подбор модели при обучении узла ARIMAX

Организация работы с логами

Если работа проходит на локальной машине, чаще всего есть доступ ко всем папкам и можно посмотреть логи. Таким образом эта информация доступна, даже если и не нужна для основной работы пользователя.

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

Это связано с тем, что в общих логах содержится информация по всем пользователям: какие сценарии запускались, данные скачивались, кто входил на платформу и прочее. Поэтому, чтобы исключить риски для безопасности, доступ к логам должен быть ограничен пределами области основной работы. Для непривилегированного пользователя информация об общих логах скрыта по трем причинам: во-первых, она является ему не нужной, во-вторых, избыточной (в потоке логов трудно искать нужные), в-третьих, это подрывает защищенность и нарушает сохранность данных.

В серверной редакции логи пишутся в один общий файл не потому, что их нельзя поделить. Это можно реализовать, но для анализа ситуации обязательно оценивать всю картину целиком. На одном сервере запускается много сценариев и может произойти сбой не потому, что пользователь что-то сделал неправильно, а из-за параллельных процессов, например кем-то будет запущена выгрузка огромного объема данных.

И эти процессы бесполезно анализировать на уровне отдельного пользователя. Когда работает много людей, требуется видеть всю картину, нужно как бы подняться над ними.

Заключение

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

В платформе Loginom логи по умолчанию записываются в файл app.log и для дальнейшей обработки их можно парсить. В операционной системе Linux есть возможность использовать Journald, но в этом случае потребуется работа администратора, так как этот компонент Systemd нужно настраивать.

Уровни логирования в Loginom предоставляют возможность выбирать детализацию в зависимости от конкретной задачи. Это важно для того, чтобы не перегружать систему и избежать записи излишних данных.

В условиях коллективной работы все логи складываются в «одну кучу». При этом доступ к ним должен быть ограничен, чтобы обеспечить безопасность чувствительной информации и защиту данных.

Логирование в Loginom — это не просто хронологические записи событий, а важный процесс, который помогает понять, что происходит в системе и как оптимизировать ее работу. Каждый лог является следом, оставленным действиями на сервере. Умение анализировать эти данные обеспечивает возможность оперативно реагировать на возникающие проблемы.

Другие материалы по теме:

Шифрование пакетов

Планировщик задач в Loginom

Данные в корпоративной информационной фабрике

#loginom#СППР#etl

Смотрите также

Подписывайтесь на телеграмм-канал Loginom
Новости, материалы по аналитике, кейсы применения, активное сообщество
Подписаться