<< Click to Display Table of Contents >> Мониторинг системы Directum RX > Настройка решения Правила классификации |
![]() ![]() ![]() |
Ошибки, возникающие при работе сервисов системы Directum RX или сервисов Ario, записываются в лог-файлы и отображаются на дашбордах решения как критичные, некритичные или неизвестные. В файле exceptionType.yml сервиса Logstash заданы стандартные правила для определения типов ошибок. Если не удается определить тип, они отображаются как неизвестные.
ВАЖНО. Не рекомендуется изменять файл exceptionType.yml. Собственные правила классификации добавляйте в отдельных файлах.
Принцип обработки файла с правилами классификации ошибок:
1.Поиск совпадений ведется сверху вниз. При первом совпадении обработка файла завершается, поэтому правила с критичными ошибками (critical) необходимо добавлять в файл выше правил с некритичными (noncritical).
2.Если совпадение найдено, то оно записывается в параметр exceptionRuleMatching. Иначе значение остается пустым.
Структура правила классификации ошибок
Настройки задаются с помощью файла в формате YAML. В качестве значения полей можно указывать регулярное выражение в формате Ruby. В этом случае строка должна начинаться с «(regex)». Подробнее о регулярных выражениях см. на сайте Rubular.
Структура правила классификации:
{Имя сервиса}
{Тип ошибки}
{Описание ошибки}
- exception: {Тип исключения}
message: {Текст ошибки}
genericMessage: {Обобщенное сообщение}
stackTrace: {Стек ошибки}
Имя сервиса. Укажите имя сервиса из соответствующего лог-файла, например, WebClient.
Тип ошибки. Возможные значения:
•critical – критичная ошибка;
•noncritical – некритичная ошибка.
При необходимости администратор может задать собственные типы ошибок.
Примечание. Если найденная ошибка не относится ни к одному из заданных типов, ей присваивается тип unknown. В этом случае на дашборде она отображается как неизвестная. При необходимости администратор может задать собственные правила классификации ошибок.
Описание ошибки. Настройка состоит из полей:
•exception – тип исключения;
•message – текст ошибки;
•genericMessage – обобщенный текст ошибки. Представляет собой текст ошибки без идентификаторов объектов и привязки к пользователям;
•stackTrace – стек ошибки.
Поля настройки Описание ошибки необязательны для заполнения. При этом:
•если поле не заполнено или указаны символы «*», то совпадение считается найденным при любом значении;
•если поле имеет значение пустой строки, то совпадение найдется в том случае, если это значение не будет заполнено в лог-файле.
Кроме того, в собственные правила классификации ошибок можно добавлять любые атрибуты, которые фиксируются в лог-файлах. Например, чтобы правило работало для определенного сервера, в поле настройки Описание ошибки укажите атрибут Host.
Настройка правил классификации ошибок
В решении можно изменять стандартные или создавать собственные правила классификации ошибок. Собственные правила имеют приоритет выше, чем правила по умолчанию. Это позволяет переопределять типы ошибок. Например, если ошибка «Отсутствует лицензия на модуль» по умолчанию определяется как некритичная, то с помощью собственного правила ее можно сделать критичной.
Примечание. Правила определяют тип ошибок в решении только после применения настроек. Ранее возникшие ошибки на дашбордах отображаются как неизвестные.
Чтобы создать правило:
1.Для хранения правил создайте папку на сервере с установленным решением, если это не было сделано ранее.
важно. Папку с файлами создавайте отдельно от папок с решением и папки с инструментом Directum Launcher. Иначе она удалится при обновлении решения.
2.В папке создайте файлы с расширением *.yml, в которых будут задаваться правила определения ошибок.
3.Добавьте в файле правило в соответствии со структурой.
4.Сохраните файл.
5.В конфигураторе Directum Launcher в секции Мониторинг добавьте параметр ls_exception_types_path и укажите полный путь к папке с файлами, в котором заданы правила классификации.
6.Чтобы настройки применились, перейдите в папку с Directum Launcher и выполните команду:
./do.sh monitoring up
7.Проверьте, что созданное правило классификации появилось в решении. Для этого перейдите в папку Logstash и в файле exceptionType.expanded.yml найдите добавленное правило.
Если в регулярном выражении используется символ «'», то его необходимо экранировать. Например, выражение '(regex)Can't...' должно иметь вид '(regex)Can''t...'.
В полях можно использовать условие «Не содержит». В таком случае строка должна начинаться с «(not)». При этом:
•«(not)» – выражение означает, что поле не должно быть пустое;
•«(not)*» - выражение с символом «*» означает, что поле не может быть заполнено.
Кроме того, условие «Не содержит» можно использовать совместно с регулярными выражениями. В таком случае строка должна начинаться с «(not)(regex)».
Пример 1. Настройка правила классификации ошибок
Постановка задачи:
1.Все ошибки с текстом сообщения «Module cover is not available. Reason: Module has no items» считать критичными. Остальные поля могут быть любыми.
2.Ошибки AccessDeniedLicenseException считать некритичными, если в тексте ошибки встречается подстрока «Отсутствует лицензия на модуль».
Решение:
WebServer:
critical:
- message: 'Module cover is not available. Reason: Module has no items'
noncritical:
- exception: 'AccessDeniedLicenseException'
message: 'Отсутствует лицензия на модуль.'
Пример 2. Настройка правила классификации ошибок с использованием регулярного выражения
Постановка задачи:
Все ошибки с текстом сообщения «Нет прав на выполнение операции <Название_операции> на <Название_объекта>» считать некритичными. Остальные поля могут быть любыми.
Решение:
В поле message задайте регулярное выражение «Нет прав на выполнение операции .* на .*».
WebClient:
noncritical:
- message: '(regex)Нет прав на выполнение операции .* на .*'
Пример 3. Настройка правила классификации ошибок с использованием регулярного выражения и условия «Не содержит»
Постановка задачи:
Все ошибки сервиса WorkflowProcessService считать критичными, если в тексте ошибки не встречается строка «Cannot '{S}'».
Решение:
WorkflowProcessService:
critical:
- genericMessage: '(not)(regex)Cannot ''{S}''.'
© Компания Directum, 2025 |