Перейти к основному содержимому

Фильтрация 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 для формирования шаблонов

Для разрешения шаблонов Памир использует шаблонизатор 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 - [ добавить описание ]
warning

[ добавить описание использования пробелов ]