Введение
В продуктах nanoCAD есть несколько видов лицензирования: локальные, сетевые и персональные лицензии. Сетевая лицензия позволяет использовать программу любому сотруднику из пула, но одновременно может работать только столько пользователей, сколько куплено рабочих мест. При использовании сетевых лицензий встает вопрос: «Какое количество рабочих мест приобрести, чтобы избежать простоев?» Есть общие рекомендации по закупке сетевых лицензий, но они не дадут точного числа.
Обязательным условием эффективного использования сетевых лицензий является внедрение системы мониторинга, без нее вы никогда не узнаете сколько нужно лицензий на предприятие.
В этой статье разберем простейшие варианты мониторинга.
Обращаю ваше внимание, что описываемые действия выполняются в операционной системе Windows 11, архитектура x64; в системе мониторинга Grafana v12.3.3 с плагином Sqlite версии 4.0.1; с логами полученными в системе лицензирования nanoLM License Server версии 1.2.1206.
Установка и настройка
- Скачайте и установите Grafana, если программа еще не установлена;
- Запустите службу Grafana, если она не была запущена автоматически;
- В браузере откройте http://localhost:3000. Используйте для входа логин: admin, пароль: admin. Эти учетные данные по умолчанию рекомендуется изменить их. Если Grafana установлена на другом сервере, вместо localhost укажите его IP-адрес.
- Для работы с файлами *.db необходим компонент SQLite. Чтобы его установить, в левой части окна выберите Connections → Add new connection (рис. 1);
- В поиске введите SQLite и нажмите Install (рис. 1):
После установки SQLite рекомендуется перезапустить службу Grafana;
- На той же вкладке «Add new connection» нажмите на кнопку «+ Add new data source» (рис. 2):
- Укажите наименование базы данных и путь до лога nanoLMsrv.db (рис. 3):
Path: C:\ProgramData\Nanosoft\License Server\Logs\nanoLMsrv.db
Внимание! Файл «nanoLMsrv.db» содержит данные за текущий месяц. Для мониторинга лицензий за все время необходимо объединить все файлы *.db в один любым удобным способом и указать этот файл в поле Path. Также вы можете выполнить мониторинг за любой месяц, указав в поле Path соответствующий файл nanoLMsrv(ГГГГ-ММ-ДД).db.
- Сохраните источник данных с помощью кнопки «Save & test». В результате появится сообщение о том, что источник данных работает «Data source is working» (рис. 4). Если источник данных не работает – нужно проверить путь и права.
Мониторинг одной фичи
- Создайте новую интерактивную панель (Dashboard): Dashboards → New → New dashboard (рис. 5):
- Для добавления графика нажмите на кнопку «+ Add visualization» (рис. 6):
- Из выпадающего списка выберите источник данных, подключённый в пункте 7 (рис. 7):
- В качестве простого примера рассмотрим мониторинг лицензии Платформы nanoCAD фича NanoCAD_Plus. В поле «Queries» под графиком введите следующий SQL-запрос с комментариями:
Спойлер
SELECT
-- Преобразование формата ДД.ММ.ГГГГ ЧЧ:ММ:СС -> ГГГГ-ММ-ДДTЧЧ:ММ:СС+03:00.
substr(DateTime,7,4) || '-' || substr(DateTime,4,2) || '-' || substr(DateTime,1,2) || 'T' || substr(DateTime,12,8) || '+03:00' as time,
-- Занятые места = общее количество - свободные. С преобразованием типов TEXT -> INTEGER
CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER) as 'Пользователи Платформы nanoCAD'
FROM Features -- Информация по лицензиям в таблице Features
WHERE Name = 'NanoCAD_Plus' -- фича Платформы nanoCAD
ORDER BY time; -- Сортировка по времени
Результат отобразится на графике (рис. 8):
Настройка отображения значений
- Чтобы убрать «косые линии» на графике рекомендуется поменять настройку «Line interpolation» в разделе «Graph styles» (рис. 9):
- Для удобства отображения реального количества пользователей можно изменить визуализацию с графика «Time series» на «Gauge» в правой части окна (рис. 11):
- Чтобы визуально отслеживать приближение к лимиту лицензий, настройте следующие значения:
- В разделе «Standard options» задайте параметр «Max» — укажите общее количество рабочих мест по вашей лицензии.
- В разделе «Thresholds» установите значение, при котором цвет индикатора или графика будет меняться, сигнализируя о высокой загрузке.
Настройки позволяют оперативно заметить, когда занятые места приближаются к пределу. В итоге получим следующую визуализацию (рис. 12):
Если требуется не только визуальная индикация на панели, но и активное оповещение, используйте функционал «Alerting» в левой части интерфейса Grafana. Уведомления будут приходить на электронную почту, мессенджер и др.
Теперь у нас есть инструмент для контроля одной фичи с удобным отображением. Но что, если нужно следить за несколькими фичами? Об этом в следующем разделе.
Мониторинг нескольких фич
Рассмотрим различные способы мониторинга:
А) Построение отдельных графиков на панели.
Этот вариант удобен, если число фич невелико. При большом их количестве визуальный анализ становится громоздким. В новом SQL-запросе измените значение NanoCAD_Plus на любую интересующую фичу.
Б) Один график с переключателем.
Grafana позволяет создавать переменные, которые отображаются в виде выпадающего списка на дашборде. Выбор значения из списка динамически меняет отображаемые данные.
- Выйдете из редактирования графика и перейдите к дашбордам. Нажмите «Settings» (рис. 13):
-
Перейдите на кладку «Variables» и нажмите «Add variable» (рис. 14):
-
Введите следующие значения в разделе «General» и сохраните изменения (рис. 15):
Query: SELECT DISTINCT Name FROM Features ORDER BY Name;
- Добавьте переменную ‘$feature’ в запрос вместо ‘NanoCAD_Plus’.
В результате сверху графика будет выпадающий список с возможностью выбора интересующей фичи (рис. 16):
В) Отображение на одном графике без использования переменной. Для отображения результата на одном графике введем следующий SQL-запрос на примере лицензии nanoCAD Pro:
Спойлер
SELECT
substr(DateTime,7,4) || '-' || substr(DateTime,4,2) || '-' || substr(DateTime,1,2) || 'T' || substr(DateTime,12,8) || '+03:00' as time,
MAX(CASE WHEN Name = 'MODELER3D_C3D'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as MODELER3D_C3D,
MAX(CASE WHEN Name = 'RasterTools'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as RasterTools,
MAX(CASE WHEN Name = 'NanoCAD_Plus'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as NanoCAD_Plus,
MAX(CASE WHEN Name = 'nSPDSComp'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as nSPDSComp,
MAX(CASE WHEN Name = 'nMechComp'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as nMechComp,
MAX(CASE WHEN Name = 'Corporate'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as Corporate,
MAX(CASE WHEN Name = 'EarthWork'
THEN CAST(Workplaces AS INTEGER) - CAST(Workplaces_Free AS INTEGER)
ELSE 0 END) as EarthWork
FROM Features
WHERE Name IN ('MODELER3D_C3D', 'RasterTools', 'NanoCAD_Plus', 'nSPDSComp', 'nMechComp', 'EarthWork', 'Corporate')
-- Группируем по одному моменту времени, чтобы строки с одинаковой меткой «схлопнулись» в одну
GROUP BY
substr(DateTime,7,4) || '-' || substr(DateTime,4,2) || '-' || substr(DateTime,1,2) || 'T' || substr(DateTime,12,8) || '+03:00'
ORDER BY time;
В результате на графике будет отображаться информация об используемых фичах лицензии на конфигурацию nanoCAD Pro: NanoCAD_Plus (Платформа nanoCAD), MODELER3D_C3D (компонент 3D), RasterTools (компонент «Растр»), nSPDSComp (компонент «СПДС»), nMechComp (компонент «Механика»), EarthWork (компонент «Топоплан»), Corporate (компонент «Организация») (рис. 17):
Grafana дает удобный инструмент навигации по графику, можно выбрать любой промежуток времени для анализа.
Мне удалось обнаружить интересную особенность на графике: количество занятых фич на Платформу nanoCAD = 2, на компонент «Растр» = 3 (рис. 18). Опытные пользователи nanoCAD знают, что для работы компонентов необходима Платформа nanoCAD, но количество занятых фич на компонент «Растр» превышает количество занятых фич на Платформу nanoCAD. Как вы думаете в каких случаях такое поведение возможно? Ответ напишите в комментариях.
Внедрение даже такого несложного решения избавляет от «слепого» управления лицензиями. Вместо гаданий о необходимом количестве рабочих мест вы получаете точные цифры пиковых нагрузок, простоев и неиспользуемых фич. Делитесь в комментариях своими практиками использования различных систем мониторинга.


















