Парсим логи DIRECTUM

34 11

Введение

В этой статье хотелось бы немного затронуть тему автоматизации анализа логов DIRECTUM.

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

Если открыть стандартный лог-файл, то можно увидеть что-то подобное:

Поиск по такому файлу проводить весьма неудобно и ненаглядно. Кроме того, сам файл лога может значительно увеличиться в объеме, до десятков и сотен мегабайт, что так же делает его более трудоемким для анализа. А если таких файлов десятки или даже сотни?

В этом случае помочь может парсинг.

Что же такое парсинг?

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

Настроить его можно следующим образом:

Необходимо скачать архив http://club.directum.ru/file/logparser.zip. Архив состоит из 3 частей: бэкапа базы, утилиты logparser и ini-файл с настройками для утилиты.

  1. Итак, развертываем на SQL сервере бэкап базы, куда далее будем собирать всю информацию из лог-файлов DIRECTUM.
  2. Корректируем файл настроек. Файл настроек имеет следующий вид:


 

В блоке [COMMON] задаем следующие настройки:

LogMask – путь, где расположены лог-файлы DIRECTUM, а также маску необходимых, для анализа файлов;

ReportDirectory – путь куда будем складываться отчеты в формате .xls;

ExcludedUsers – пользователи, чьи логи необходимо исключить из анализа;

SubjectPrefix – префикс именования файлов отчетов в .xls;

Version – версия платформы системы DIRECTUM.

В блоке [DBCONNECTPARAMS] указываем параметры подключения к БД парсинга:

Server – сервер, где развернут бэкап базы для парсинга;

DataBase – имя БД;

WindowsAuthentication – признак использования/не использования Win-аутентификации (0 – не используется);

User и Password заполняются в случае, если Win-аутентификация не используется.

            Блок [SYSTEMCODE] содержит код системы DIRECTUM в формате ИмяSQLСервера_ИмяБазы.

 

  1. Создаем Job на SQL-сервере, который будет автоматически ежедневно анализировать логи, например, за предыдущий день. Для уменьшения влияния на работу SQL сервера Job лучше настроить на запуск в ночное время. Как вариант, можно настроить запуск через Планировщик заданий Windows.


 

Ключи утилиты LogParser можно посмотреть, запустив соответствующую утилиту:


 

*При использовании соответствующего ключа утилиты logparser.exe данные будут сохраняться в БД.

В качестве результата в папке с отчетами ежедневно будут создаваться 4 файла следующего вида:

  1. Prefixcritic_11.02.2013_18.02.2013_0.xls – критичные ошибки;

Примером критичных ошибок будет например, печально известные ошибки вида «Access violation», «Application crashed» и т.д.

  1. Prefixnocritic_11.02.2013_18.02.2013_0.xls – некритичные ошибки;

Как следует из названия данный вид ошибок может оказывать не столь существенное влияние как критичные, но их большое количество – повод задуматься, возможно в настройках системы есть какие-либо неточности. Например, «Отсутствует файл установок репликации», «Версия клиентской части не соответствует версии серверной части!» и т.д.

  1. Prefixuncalstk_11.02.2013_18.02.2013_0.xls – ошибки с неизвестным стеком исключения (как правило нужны для анализа разработчикам);
  2. Prefixunexccls_11.02.2013_18.02.2013_0.xls – ошибки с неизвестным классом исключения (как правило нужны для анализа разработчикам).

Сами файлы будут иметь следующий вид:


 

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

Что касается интерпретации самих событий, то это тема отдельной статьи.

Итак, данная утилита позволяет:

  1. Анализировать, вместо нескольких десятков и сотен файлов с логами системы DIRECTUM, несколько структурированных табличных файлов;
  2. Файлы могут быть сформированы за любой период и для любой системы DIRECTUM(например, если у вас в организации несколько баз);
  3. Вести историю логов системы в БД, тем самым имея возможность использовать всю мощь и средства СУБД для выборки, анализа и построения необходимых отчетов по событиям системы DIRECTUM.

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

Отредактировал Алексей Пестерев, 15.05.2013 в 16:46
Отредактировал Вадим Грозов, 16.05.2013 в 13:39
Максим Буланов

При запуске из шедулера не происходит запись в базу и формирование xls файлов.

вывел логи запуска получил

Чтение файла "c:\NPO Computer\IS-Builder\directum.is-builder.sblogon.log" (1 из 2)...

Ошибка: невозможно определить дату сообщения об ошибке "12.05.2012 00:24:00 2636 NSSO directum_WebService ESBLoginFailed Неправильное имя пользователя или пароль.^|Не удалось подключиться к базе данных "NSSO" SQL-сервера "directum". <- SBSimpleTCPCmdHandlers.SBCheckConnectResult (566) <- SBLoginPoint.TLoginPoint.HandleConnectException (806) <- SBLoginPoint.TLoginPoint.GetApplication (233) <- Forms.TApplication.ProcessMessage <- Forms.TApplication.HandleMessage <- SBLogon.Finalization SBLogon.exe 7.8.3.1048 IUSR True" (12.05.2012).
 
При ручном запуске все отрабатывает корректно

 

Максим Буланов

Работает только если тип запуска поставить "Run only when user is logged on" в режиме "Run whether user is logged on or not" выше приведенную ошибку.

Максим, "выполнять с наивысшими правами" выставили на запуск таска?

Максим Буланов

Не вияет на работу программыл

Сергей Радыгин
Если открыть стандартный лог-файл, то можно увидеть что-то подобное:

Я обычно другую картинку вижу :)
Использую NotePad++. Гораздо удобнее - колонки выравнивает, строчки не переносит, аналогичный текст выделяет. Есть удобный поиск по файлам в папках, сравнение файлов и т.д.
Скрин не смог приложить, было бы нагляднее.
 
P.S. А за утилиту спасибо. Нас достаёт ошибка Windows №8. Надо будет сделать мониторинг ...
Алексей Зубин

Спасибо за комментарии.

Максим, вашу ситуацию по возможности попробую воспроизвести на этой неделе.

Сергей, NotePad++ весьма хорош, но только в определенных ситуациях.

А так:

Задача имеет интерес в том случае, если у вас в системе работает довольно большое количество пользователей
Если вы работаете с 10 файлами логов размером не более 1-2 МБ, то ваш метод оптимален.
Максим Денисенко

Алексей, доброе утро!

Подскажите, что может быть не так.

Если при запуске logparser.exe  c командной строки не видит файл конфига.

D:\>D:\LOG_PARSER\logparser\Logparser_for_club\logparser.exe -Y -F = "D:\LOG_PAR
SER\logparser\Logparser_for_club\ISB7KASNPOlogparser.ini"
Ошибка: файл настроек "D:\LOG_PARSER\logparser\Logparser_for_club\" не найден.

Прилагаю сам конфиг: 

[COMMON]
  LogMask=F:\log_directum\*is-builder*.log
  ReportDirectory=F:\log_directum\LOGPARSERReport\
  ExcludedUsers=***user***
  SubjectPrefix="DIRECTUM"
  Version="7.*.*"
[DBCONNECTPARAMS]
  Server=server
  DataBase=Directum
  WindowsAuthentication=1
  User=sa
  Password=пароль
[SYSTEMCODES]
  1=server_Directum   

Заранее спасибо за ответ.

 

Алексей Зубин

Максим, первое, что приходит на ум: возможно где-то опечатка в символах пути расположения конфига (английская вместо русской и т.д.).

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

Максим Денисенко

Всё вроде понимаю,

но может я просто не правильно пишу строку для выполнения и сижу туплю :)

Помогите плиз.  любой пример где путь к конфигу: 

D:\LOG_PARSER\logparser\Logparser_for_club\ISB7KASNPOlogparser.ini

Алексей Зубин

Для примера, что нашел в своих настроенных вариантах:

Каталоги исполняемого файла и файла настроек (ini) не совпадают:

C:\Users\Present\Desktop\Logparser\logparser.exe -B=01.11.2012 -E=21.02.2013 -F="C:\Users\Present\Desktop\ISB7KASNPOlogparser.ini" -Z=50 -S

Каталоги исполняемого файла и файла настроек совпадают:

logparser.exe -B=02.03.2015 -E=06.03.2015 -F=ISB7KASNPOlogparser.ini

Максим Денисенко

Спасибо, разобрался!

Авторизуйтесь, чтобы написать комментарий