Панель додаткових інструментів для моніторингу та дослідження помилок додатків та інтеграційних рішень на платформі даних InterSystems IRIS, інтеграційній платформі Ensemble та СУБД Caché, або історія ще одного велосипеда.
У цій статті я хочу розповісти про додаток, яким, поряд зі стандартними засобами адміністрування, користуюся щодня при моніторингу додатків та інтеграційних рішень на платформі InterSystems IRIS та знаходженні помилок при їх виникненні.
Рішення включає перегляд та редагування глобальних масивів, виконання запитів (включаючи JDBC/ODBC), відправлення результатів пошуку електронною поштою у вигляді архівованих XLS-файлів. Перегляд об'єктів класів із можливістю редагування. Декілька простих графіків за протоколами системи.
Це CSP-додаток, на основі
Якщо цікаво, то прошу під кат і в
Все почалося з вивчення питання, як логувати зміни об'єктів у InterSystems IRIS, Ensemble та СУБД Caché.
Прочитавши
В результаті вийшло рішення, яке реалізовано як панель підкласу %CSP.Util.Pane, в якому є основне вікно для команд та кнопка «Виконати» плюс налаштування уточнень для команд.
При введенні "?" отримуємо короткий опис цих команд:
Глобали
Найчастіша моя команда — перегляд глобалу. Як правило, це глобал протоколу при налагодженні свого або чужого проекту. Його можна подивитися і у зворотному порядку, а також наклавши фільтр як на посилання, так і на дані. Знайдені вузли можна редагувати та видаляти:
Можна видалити весь глобал, ввівши в команді після імені мінус ^logMSW-
Але видалити так можна лише глобали, що починаються на ^log (протокольні глобали), тобто. реалізовано обмеження від випадкового видалення.
Якщо після імені вводити "*", то отримаємо список глобалів з додатковими характеристиками. Друга "*" - додасть нове поле "Allocated MB", а ще одна зірочка - "Used MB" Це об'єднання двох звітів і поділ на "зірочки" зроблено, щоб розділити звіт, що часто довго формується, по зайнятих блоках великих глобалів.
З цієї таблички можна за активними посиланнями перейти до перегляду самого глобалу або його перегляду/редагування стандартним способом з порталу управління клікнувши в поле Permission на R або W.
запити
Конвертування звіту у формат Excel
Друга функція, частотою використання, це виконання запитів. Для цього sql-ствердження вводимо як команду.
Основне, чого мені вистачало в стандартному Порталі керування системи, це виконання запитів щодо налаштованих в СУБД JDBC-/ODBC-джерел і виведення результатів у форматі XLS, архівування та надсилання файлу на пошту. Для цього в моєму інструменті перед виконанням команди потрібно включити чек-бокс "Вивантажити файл Excel".
Ця можливість заощаджує мені багато часу в повсякденній текучці, а готові модулі я успішно вбудовую в нові програми та інтеграційні рішення.
Але для цього потрібно налаштувати шлях створення файлів на сервері та облікові дані користувача та поштового сервера, для цього в свою чергу потрібно редагувати вузли глобалу налаштування програми ^%App.Setting.
Збереження звітів у глобалі
Найчастіше потрібно результати виконання звіту зберегти у глобалі. Для цього я застосовую процедури:
Для JDBC:
##class(App.sys).SqlToDSN
Для ODBC:
##class(App.sys).SaveGateway
Для SQL виразів:
##class(App.sys).SaveSQL
Для Query:
##class(App.sys).SaveQuery
Наприклад, якщо в панелі командою
xec do ##class(App.sys).SaveQuery("%SYSTEM.License:Counts","^GN",0)
збережемо в масиві ^GN результат запиту підрахунку використання ліцензій, а подивитися, що зберегли на панелі можна командою: result ^GN("%SYSTEM.License:Counts",0)
Модулі доповненої функціональності
І друге покращення, яке сильно спростило та автоматизувало мені роботу — це реалізація можливості виконувати спеціально написані модулі при формуванні кожного рядка запиту. Цим самим я можу на льоту за один прохід вбудовувати у звіт новий функціонал, наприклад активні посилання для додаткових операцій над даними.
Приклад 1: Робота з класом App.Parameter
Створити параметр через "Таблічний навігатор"
Редагувати параметр через "Параметри"
Приклад 2: Перегляд глобалу за посиланням «Історія»
Графіки
Під враженням від статті [9] та для візуалізації зростання баз даних створено сторінку, на яку виводиться помісячний графік розмірів баз даних, створений за файлом iris.log(cconsole.log) за записами Expand ретроспективно від поточного дня.
Для прикладу ще створено графік подій у InterSystems IRIS, який також формується за файлом протоколу:
Посилання на матеріали:
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
Дякую авторам цих та інших статей, які допомогли мені створити цей інструмент.
PS Цей проект розвивається і багато задумів ще не реалізовано. Найближчим часом планую зробити:
1. Шаблон програми на фреймворку
2. Автодокументування коду форматом
Джерело: habr.com