% Viewer OMNIbus event
В связи с массовым отключением Java в современных броузерах и упорным желанием IBM эту самую Java использовать в своих интерфейсах сложилась ситуация: для того чтобы просмотреть события в OMNIbus надо преодолеть ни мало трудностей:
- Найти броузер с поддержкой Java
- Найти Java под этот броузер
- Все это установить
- Следить, чтобы ненароком не обновилось
Поэтому был написан код, который стартует либо как сервис на сервере приложеия, либо как java приложение (в зависимости от того как собрано: jar или war). В итоге имеем: на порту (8080) крутится серверная часть, через которую общаемся с OMNIbus. От клиента требуется любой броузер без всяких java и плагинов.
Основные функции:
- Показывает текущий список событий
- Можно посмотреть поля события
- Можно посмотреть детали события
- Можно редактировать поля, но не все
- Можно создать свое тестовое событие
- Можно массово подтвердить или сменить важность событий
- Можно выдать "прямой" SQL запрос на систему
К сожалению, основная масса настроек "зашита" в коде, поэтому если нужны свои поля нужно править классы в коде. Отвязаться от этого у меня не вышло. Hibernate нормально не прикручивается, так как OMNIbus все-таки не sybase и нужные для Hibernate мета данные не отдает. Постарался это дело "облагородить", но что вышло, то вышло... В принципе для основных задач работы с базовыми событиями самое то.
Буду править по-мере возникновения задач и идей. Документацию буду дополнять. Особенно если эта поделка будет кому-то интересна. :)
Да, на English тоже попробую перевести, но позже.
English instruction will be later, sorry
В общем поехали...
Алгоритм следующий:
- Правим код, если требуется
- Запускаем сборку командой
mvn clean package
- В итоге имеем jar файл (
eventViewer-x.x.x-SNAPSHOT.jar
) в папке target. - Этот файл запускаем командой
java -jar eventViewer-....jar
Запустится сервис на порту 8080. К нему обращаемся любым броузером на адрес: localhost:8080/eventViewer
Полезные ключи запуска:
- для смены порта используем ключ
--server.port=<port_for_binding>
- указание файла настроек
--spring.config.location=file:<path_to_settings.yml>
В итоге, командный файл может выглядеть так (для Win):
@echo off
set EVNAME=eventViewer-0.3.3-SNAPSHOT.jar
set EVCONF=conf/settings.yml
set EVPORT=8080
java -jar %EVNAME% --spring.config.location=file:%EVCONF% --server.port=%EVPORT%
Или для *nix
#!/bin/sh
EVNAME=eventViewer-0.3.3-SNAPSHOT.jar
EVCONF=conf/settings.yml
EVPORT=8080
java -jar $EVNAME --spring.config.location=file:$EVCONF --server.port=$EVPORT
Создаем war файл. Для этого правим pom.xml: заменяем Artifact
Packaging на значение war вместо jar. Собираем как обычно
mvn clean package
, но на выходе будет файл
eventViewer-x.x.x-SNAPSHOT.war
. Его деплоим на свой сервер
приложения. Можно удалить папку WEB-INF/lib-provided для уменьшения
размера.
Для tomcat. Кладем полученный war в папку webapps.
Для подключения файла с настройками запускаем сервис через команду
tomcat#w.exe
для Win версии. Во вкладке Java добавляем ключ:
-Dspring.config.location=file:///D:/tomcat/conf/settings.yml
Путь правим на свой.
Файл с настройками можно прописать в переменную окружения:
_JAVA_OPTIONS=spring.config.location=file:conf/settings.yml
либо в файле setenv.sh
инталляции tomcat. Детали в документации на продукт...
Все настройки лежат в файле conf/settings.yml. Настройки поделены на три секции:
- presets
- columns
- colors
Здесь один набор параметров - filterSets. Содержит список предзагружаемых фильтров, которые будут видны в Web интерфейсе. Для каждого фильтра настраивается два атрибута:
- name - Имя, которое отображается на Web
- filter - Сам фильтр, который будет применен при запросе к списку событий. Синтаксис OMNIbus, т.е. используются регулярные выражения.
Здесь два набора параметров: colSets и colDetails
colSets. Содержит список полей, который будет выводиться дополнительно к основному в списке событий из OMNIbus. Основной список содержит поля (выводятся всегда):
- Acknowledged
- Severity
- FirstOccurrence
- LastOccurrence
- AlertGroup
- AlertKey
- Node
- NodeAlias
Остальное из colSets. Настраивается два атрибута: col - имя поля класса, в котором содержится значение поля таблицы событий OMNIbus и header - заголовок для поля, который будет отображаться при выводе списка событий.
colDetails. Содержит список пользовательский полей класса, связанного с событием OMNIbus, который надо выводить при запросе детальной информации. Этот список является дополнением к основному списку "зашитому" в коде. Основной список формируется из обязательных полей, присутствующих во всех инсталляциях OMNIbus и описания в этой секции не требует.
Здесь один набор параметров colorSets. Набор позволяет изменить цвета подсветки событий в зависимости от их важности. Настраивается два атрибута: code - значение важности (0 - 5) и соответствующий ему цвет - color. Для описания цвета используется синтаксис html
//TODO
Здесь описываются все поля события.
Событие с базовыми полями описывается. Его правка не предусматривается, хотя и возможна.
Класс с дополнительными полями, которые появляются по мере установки дополнительных пробников, например:
- NcKL
- ITM probe
- TBSM server and probe
- ITNM
- ...
- base.html - стартовый шаблон
- columns.html - выводит список колонок, имеющихся в подключенном OMNIbus
- customFields.html - шаблон для редактирования "своих" полей, т.е. полей из colDetails. Поля для редактирования появляются после активации Advanced режима
- detail.html - выводит для просмотра поля события
- alertsdetails.html - страница для вывода деталей по события (alerts.details)
- edit.html - форма для редактирования полей события
- view.html - выводит список событий
- rawmode.html - форма для создания и выполнения произвольного SQL-запроса
- index.html - страница логина
- helpclass.html - страница со списком зарегистрированных на OMNIbus классов. Появляется при создании своего события
- errorspage.html - страница для вывода ошибок
//TODO
Для добавления своего поля:
в классе Event
- Добавляем переменные-поля соответствующих типов (String, Integer и т.д.).
- Добавляем getter и setter.
- Добавляем новые поля customFields.html согласно требуемому формату в виде fragment.
- Добавляем в edit.html фрагменты из пункта 3.
Если редактирование своих полей не требуется, то выполняются только п.п. 1,2