Фильтрация CMDB (TQL)
БДКЕ может содержать огромное количество КЕ, десятки и сотни тысяч. Одновременно их все просмотреть невозможно. КЕ могут делиться по функциональному, организационному и иному признаку на группы. Эти признаки интересны разным пользователям. Каждый пользователь желает видеть только интересующую его группу КЕ. Памир помогает в решении таких задач. Памир имеет инструмент фильтрации БДКЕ – Topology Query Language (TQL), язык описания топологии графа. TQL оперирует такими понятиями, как ТКЕ и связи. Он позволяет создавать маску из ТКЕ и накладывать ее на БДКЕ. Результатом выполнения TQL является ограниченный список КЕ. TQL используется:
- как самостоятельный инструмент – для фильтрации БДКЕ;
- в правилах доступа – для ограничения видимости БДКЕ;
- в дашбордах – для ограничения КЕ, доступных для отображения в виджетах;
- в мониторинге – для привязки шаблонов и тревог к избранным КЕ.
Построение TQL
Topology Query Language (TQL) - это язык запросов для описания топологии графа. Он позволяет описывать различные свойства графов, такие как количество вершин и ребер, наличие циклов, связность и т.д. TQL является мощным инструментом для анализа и визуализации БДКЕ.
Вершина – точка на графе, которая имеет определенные свойства:
- соответствие ТКЕ;
- смежность с другими вершинами.
Вершины могут быть связаны друг с другом ребрами, которые образуют граф.
Ребра соединяют две вершины и имеют определенные свойства:
- тип (композиция, ассоциация, агрегация);
- мощность;
- направление мощности.
Фильтрация по ТКЕ
Построение TQL выполняется в модальном окне.

Через контекстное меню (открывается по правой кнопке мыши) можно добавлять ТКЕ. Для выбора определенного типа КЕ достаточно создать вершину данного типа и нажать кнопку «Применить».

ТКЕ имеют иерархическую структуру. Для выбора КЕ, которые имеют общего родителя, нет необходимости добавлять все ТКЕ. Достаточно выбрать родительский тип. Будут выбраны все КЕ дочерних типов.
Для выбора всех КЕ типа СУБД PostgreSQL, MySQL достаточно создать TQL с ТКЕ СУБД

Фильтрация по значению атрибутов
Фильтрация по значению аттрибутов выполняется в меню каждого ТКЕ. Доступ в меню ТКЕ открывается по наведению/клику по иконке [Шестеренка] > Редактировать.

Фильтр представляет собой логическое выражение, оперирующее атрибутами КЕ. Логическое выражение применяется для каждого КЕ соответствующего типа. Если логическое выражение разрешается в истину, то КЕ проходит фильтрацию и будет присутствовать в итоговом результате.
Выражение может оперировать:
- атрибутами КЕ;
- статусом КЕ.
Выражения могут объединяться в группы через логические операторы ( И / ИЛИ ). Группы могут быть вложенными.
Выражение состоит из названия атрибута, оператора сравнения и значения:
- название – название атрибута или другого свойства ТКЕ доступного для сравнения;
- оператор – оператор сравнения значения. Зависит от типа выбранного атрибута;
- значение – значение, которое TQL будет искать в БДКЕ;
- оператор выбора значения.
Оператор выбора значения позволяет указать способ заполнения значения выражения:
- Ввод значения – требует указания литерала в самом выражении.
- Выбор из переменных – сопоставляет значение атрибута КЕ со значением атрибута пользователя.
- Ввод значения при выполнении – требует ввода значения в момент выполнения TQL.
Связанные ТКЕ
TQL может состоять из нескольких несвязанных вершин. В таком случае будут выбраны КЕ все указанных типов. Между ними будут построены все существующие связи. Связи можно скрыть, выключив переключатель.
TQL может фильтровать БДКЕ по связям между КЕ. Для этого нужно кликнуть на внутреннюю область вершины и, не отпуская левую кнопку мыши, связать с другой вершиной. При движении курсора TQL подсветит вершины, до которых может быть установлена связь. Эти настройки берутся из Дополнительных связей ТКЕ.

В открывшемся диалоговом окне нужно выбрать тип связи, установить направление.

Связанные вершины графа будут соединены линией. На линии выводится название связи и ее символ. Редактировать связь можно, кликнув на ее названии левой кнопкой мыши. Изображения типов связей:
- композиция – полилиния, начальный корректор изображен в виде черного закрашенного ромба. Ромб располагается со стороны композирующего КЕ;
- агрегация – полилиния, начальный корректор изображен в виде бесцветного ромба. Ромб располагается со стороны агрегирующего КЕ;
- ассоциация – полилиния, конечный корректор изображен в виде стрелки.
Итоговый TQL показан на примере КЕ PostgreSQL

Мощность связи
TQL позволяет накладывать количественные ограничения на связанные узлы. По умолчанию накладывается ограничение
от 1 до *, где * означает бесконечность, со стороны конца связи. Это ограничение можно интерпретировать
следующим образом.
Отобразить все КЕ типа А, которые связаны как минимум с одним КЕ типа Б.
Мощность связи можно корректировать, если включить пункт «Ограничения» в меню настройки связи. Возможные значения:
- любое натуральное число;
- начальное значение может быть
0; - конечное значение может быть бесконечностью
*; - конечное значение не может быть меньше начального.
Сохранение поиска
Построенный TQL можно сохранить для дальнейшего использования по кнопке Сохранить.
Пост-фильтрация TQL запросов

В случаях, когда выполнение TQL возвращает слишком объемный граф (большое количество узлов и связей), пользователю доступна функция пост-фильтрации. Она позволяет сократить выборку и отобразить только интересующие данные без необходимости редактировать саму структуру TQL-запроса.

Доступ к фильтрации
Для настройки фильтрации результатов выполните следующие действия:
- Выполните TQL-запрос для построения графа.
- На панели инструментов над графом нажмите на иконку Фильтр (изображение воронки).
Настройка параметров фильтрации
В открывшемся окне настройки фильтра доступен конструктор логических выражений. Процесс настройки состоит из двух этапов: выбора узла и добавления условий.
1. Выбор узла TQL

Нажмите кнопку «+ Добавить» и выберите «Узел TQL». В выпадающем списке отобразятся все типы КЕ, участвующие в текущей топологии (например, FESB, Домен, Менеджер очередей, Linux и др.). Выберите тот тип узла, к которому необходимо применить ограничение.
2. Добавление условий

После выбора узла становится доступным добавление конкретных условий фильтрации. Нажмите кнопку «+» (плюс) внутри блока выбранного узла.
Доступны следующие типы условий:
- Значение атрибута — фильтрация по свойствам КЕ (например, имя, IP-адрес, версия ОС).
- Значение статуса КЕ — фильтрация по жизненному циклу или операционному статусу объекта.
- Значение индикатора здоровья (Статус ИЗ) — выборка КЕ на основе их текущего состояния здоровья (Health Indicator).
- Конкретная КЕ (CI) — позволяет выбрать конкретный экземпляр оборудования или ПО, попавший в первоначальную выборку TQL.
Логические операторы и группы
Система поддерживает создание сложных составных фильтров:
- Операторы И / ИЛИ: Вы можете объединять несколько условий для одного узла.
- Группы условий: Возможность создавать вложенные логические конструкции для более точной выборки.
Пример использования

Рассмотрим пример фильтрации графа интеграционной шины FESB:
- Изначальный граф содержит множество взаимосвязанных объектов, что затрудняет анализ (см. скриншот "До фильтрации").
- В фильтре выбирается узел FESB.
- Добавляется условие типа CI (Конкретная КЕ).
- Задается условие: «Содержится» -> значение «192.168.162.50:80 (fesb-pamir-1)».
- После нажатия кнопки «Применить», граф перестраивается.

Результат: Количество отображаемых элементов значительно сокращается. На графе остается только выбранная КЕ и непосредственно связанные с ней объекты, соответствующие топологии TQL. При этом целостность связей (связность графа) сохраняется, отсекаются только ветви, не имеющие отношения к выбранному условию.
Использование TQL для формирования шаблонов
Для разрешения шаблонов Памир использует шаблонизатор Jinja. Подробную документацию по нему вы можете прочитать на официальном сайте Jinja.
Памир использует квадратные скобки [ ] для подстановки выражений и переменных.
Ссылки на узлы TQL
Для адресации к экземплярам узла TQL нужно использовать идентификатор ноды в TQL запросе и название ТКЕ.
Строго говоря,
указывать ТКЕ - не обязательно, достаточно перед идентификатором ноды написать символ _. Но для лучшей читаемости
шаблона рекомендуется указывать название ТКЕ.
[[configuration_item_1]]
Ссылка на узел TQL не используется само по себе. Она применяется для получения атрибутов и полей КЕ.
Атрибуты
Для адресации к полям КЕ используется ключевое слово attributes
[[configuration_item_1.attributes.name]]
Поля
Для адресации к полям КЕ используется ключевое слово fields
ci_id- идентификатор КЕci_name- наименование КЕ, полученное в результате применения правил наименованияci_type_name- название ТКЕ
Идентификатор КЕ
[[configuration_item_1.fields.ci_id]]
Наименование КЕ
[[configuration_item_1.fields.ci_name]]
Название ТКЕ
[[configuration_item_1.fields.ci_type_name]]
Функции
set_if_not_value– установить указанное значение при отсутствии значения у переменной, аргумент - значение которое нужно использовать;
[[configuration_item_1.attributes.name|set_if_not_value("n/a")]]
skip_if_not_value– пропустить при отсутствии у переменной значения (подставит пустую строку), аргументов нет;
[[configuration_item_1.attributes.name|skip_if_not_value]]
datetimeformat– значение переменной в формате iso даты преобразовать в указанный формат, аргумент - строка с форматом вывода даты (в виде кодов C стандарта), по умолчанию используется "%d %B %Y %H:%M";
[[configuration_item_1.attributes.date|datetimeformat]]
[[configuration_item_1.attributes.date|datetimeformat("%d.%B.%Y")]]
fresh- [ добавить описание ]grouped- [ добавить описание ]
[ добавить описание использования пробелов ]