Перейти к основному содержимому
Версия: 2.5

Типы КЕ

Тип конфигурационной единицы (ТКЕ) определяет класс ресурса в системе. При его создании задаются базовые настройки:

  • Родительский ТКЕ — определяет место в иерархии для наследования свойств (после создания ТКЕ изменить родителя нельзя).
  • Название — системное имя ТКЕ (уникальное, только латиница, цифры и символ _).
  • Отображение — пользовательское название ТКЕ.
  • Иконка, Цвет и Размер иконки — визуальные настройки, определяющие, как экземпляры данного ТКЕ будут отображаться на графах и в таблицах CMDB.

Привязка атрибутов и модификаторы​

Свойства ТКЕ определяются через атрибуты, которые добавляются на вкладке «Атрибуты». Один и тот же атрибут может быть привязан к конкретному ТКЕ только один раз. Привязка автоматически распространяется на всех наследников.

Для каждого привязанного атрибута можно настроить модификаторы, которые меняют его поведение в рамках данного ТКЕ:

  • Обязательный — экземпляр КЕ не может быть сохранен, если это поле не заполнено.
  • Редактируемый — пользователь может изменять значение атрибута вручную.
  • Скрытый — атрибут используется системой, но не отображается пользователю в интерфейсе.
  • Сохранять историю — Памир будет вести версионирование и хранить историю всех изменений данного атрибута.
  • Изменить схему атрибута — позволяет локально переопределить JSON-схему атрибута для конкретного ТКЕ.

Наследование в CMDB​

Наследование — это механизм автоматического распространения настроек от родительских Типов КЕ к дочерним. Это упрощает администрирование модели данных, снижает дублирование и обеспечивает согласованность архитектуры.

По наследству передаются следующие компоненты:

  • Атрибуты;
  • Допустимые связи;
  • Правила именования;
  • Правила идентификации;
  • Срок хранения удалённых КЕ.

Алгоритм наследования атрибутов​

  1. Распространение сверху вниз: Атрибуты, привязанные к родительскому ТКЕ, автоматически появляются на всех его дочерних ТКЕ. Вновь созданные дочерние типы также сразу получают весь набор родительских атрибутов.

  2. Наследование обработчиков: Если к атрибуту привязаны Фетчеры или Парсеры, их настройки также наследуются. При этом дочерний ТКЕ получает не копию настройки, а прямую ссылку на родительский элемент.

  3. Разрешение конфликтов: Возможна ситуация, когда к родительскому ТКЕ привязывается атрибут, который уже был ранее вручную добавлен к одному из дочерних ТКЕ. В этом случае существующий локальный атрибут дочернего ТКЕ станет зависимым от вновь созданного родительского.

  4. Удаление: Отвязать унаследованный атрибут напрямую в дочернем ТКЕ нельзя. Удаление возможно только на уровне родительского ТКЕ, после чего атрибут автоматически исчезнет со всех дочерних элементов.

Примечание: Алгоритм наследования связей работает полностью аналогичным образом.

Карта ТКЕ​

Над вкладками выбранного ТКЕ показывается блок «Карта ТКЕ» — граф его связей: с какими ТКЕ он может быть связан и какими типами связей. Граф только показывает связи — добавляются и меняются они на вкладке «Доступные связи». Щелчок по связи открывает эту вкладку у ТКЕ, где связь задана, щелчок по другому ТКЕ выбирает его в дереве.

Раскладка графа постоянная: предки — над выбранным ТКЕ, наследники — под ним, входящие связи — слева, остальные связанные ТКЕ — справа. В заголовке блока — число исходящих (и из них унаследованных) и входящих связей выбранного ТКЕ; оно видно и в свёрнутой карте. Легенда обозначений — под графом.

Обозначения. Все связи рисуются одним цветом и различаются линией и стрелками:

ОбозначениеЗначение
Сплошная линия со стрелкой у приёмникаАссоциация
Белый ромб у источникаАгрегация
Чёрный ромб у источникаКомпозиция
Точечная линия с кружком у приёмникаЗависимость
Сплошная линия с белым треугольником у родителяНаследование ТКЕ
Пунктирная линия с пометкой «↑ ТКЕ»Связь, унаследованная от указанного предка

Обозначения связей те же, что на графе КЕ.

Числа на графе. Над ТКЕ выводится число его действующих КЕ, у ТКЕ с наследниками — ещё и число КЕ вместе с наследниками, а если есть помеченные к удалению КЕ — их число. На связи выводится число связей между КЕ источника и его наследников — то же, что в таблице на вкладке «Доступные связи». Связь, по которой не связана ни одна КЕ, подписана нулём. Числа от 100 000 сокращаются, точное значение и число помеченных к удалению связей — в подсказке при наведении.

Настройки карты:

НастройкаПо умолчаниюЧто делает
«Путь до корня»ВыключенаПоказывает всех предков до корня дерева. Без неё показывается только родитель. У корневого ТКЕ недоступна
«Унаследованные связи»ВключенаПоказывает связи, которые выбранный ТКЕ получил от предков
«Наследники»ВыключенаПоказывает всех наследников выбранного ТКЕ и их связи. У корневого ТКЕ это карта всей модели

Настройки, свёрнутость и высота карты запоминаются в браузере и действуют для всех ТКЕ.

Связь предка хранится у каждого наследника отдельной копией (см. Наследование в CMDB), поэтому граф не повторяет одни и те же связи:

  • у наследников показываются только связи, которых нет у их родителя, — остальное объясняет линия наследования;
  • входящая связь показывается одна, от верхнего ТКЕ ветки, у которого она есть. Если копии этой связи есть у его наследников, у ТКЕ стоит пометка «+N наследников», а число связей КЕ по каждому из них видно в подсказке.

Правила наименования​

Правила наименования автоматически формируют удобочитаемое имя для экземпляра КЕ на основе его атрибутов.

Правило задается в виде текстового шаблона с использованием синтаксиса Jinja2. Переменные в шаблоне заключаются в двойные квадратные скобки: [[ ]]. Основная доступная переменная — attributes (обращение к значениям атрибутов КЕ).

Кастомные фильтры Jinja2: Для гибкой настройки вывода значений в системе предусмотрены специальные фильтры:

  • set_if_not_value — подставляет указанный текст, если сам атрибут пуст. Пример: [[attributes.name|set_if_not_value("Имя не задано")]]
  • skip_if_not_value — игнорирует переменную (подставляет пустую строку), если её значение отсутствует. Пример: [[attributes.name|skip_if_not_value]]
  • datetimeformat — преобразует дату в формате ISO в читаемый вид (по умолчанию %d %B %Y %H:%M). Формат задается кодами стандарта C. Пример: [[attributes.date|datetimeformat("%d.%m.%Y")]]

Важно: Если в шаблоне используется переменная без значения (и без фильтров обработки пустоты), система сгенерирует ошибку. Последствия зависят от контекста применения правила.

Правила идентификации​

Правила идентификации защищают систему от появления дубликатов. Они определяют условия, при которых два экземпляра КЕ считаются одним и тем же объектом.

Принцип работы:

  1. Задание условия — настраивается логическое правило на основе совпадения атрибутов.
  2. Проверка — при создании или изменении КЕ система ищет в базе данных (БДКЕ) совпадения по этому правилу.
  3. Объединение — если дубликат найден, система автоматически объединяет записи или предлагает сделать это пользователю.

Влияние композиции:

  • Для композируемых КЕ (входящих в состав другой КЕ) поиск дубликатов идет только внутри родительского объекта.
  • Для самостоятельных КЕ проверка выполняется глобально по всей базе данных.
к сведению

В поиске конфликтов и дубликатов также участвуют КЕ, которые были помечены к удалению.

Структура правила​

Правило состоит из критериев. Если хотя бы один критерий истинен (true), КЕ считаются идентичными. Критерий — это набор атрибутов. Если хотя бы один атрибут в критерии пуст, весь критерий возвращает false.

В графическом интерфейсе логика строится следующим образом:

  • Атрибуты внутри одной строки (критерия) соединены логическим оператором И (должны совпадать все).
  • Отдельные строки (критерии) соединены логическим оператором ИЛИ (должна совпасть хотя бы одна строка).

Идентификация связей между КЕ​

Помимо самих ресурсов, CMDB отслеживает уникальность связей между ними. Связи идентифицируются на основе их типа и заполненных атрибутов.

Правила разрешения конфликтов связей:

  1. Связи с атрибутами:
  • Идентичны: Если у двух связей между одними и теми же КЕ полностью совпадает набор атрибутов и их значений. (Пример: Связь «Зависит от» со значениями Тип=Высокая и Время=200мс).
  • Различны: Если хотя бы один атрибут или его значение отличается. В этом случае между двумя КЕ будут существовать две параллельные связи. (Пример: Два кабеля в разные порты eth0 и eth1).
  1. Связи без атрибутов:
  • Если у связи нет атрибутов, между парой конкретных КЕ может существовать только одна связь данного типа. Попытка создать вторую такую же вызовет конфликт.

Сводная таблица логики связей:

СитуацияРезультат в CMDB
Одинаковые атрибуты и их значенияБудет создана/оставлена одна связь
Разные атрибуты или их значенияБудут созданы разные (параллельные) связи
У связей нет атрибутовДопускается только одна связь данного типа

Срок хранения удалённых КЕ​

Удаление КЕ выполняется в два этапа: сначала КЕ помечается к удалению, и только потом физически удаляется из базы (см. Процесс обогащения). Сколько времени КЕ проводит между этими этапами, задаётся на вкладке «Хранение» соответствующего ТКЕ.

До конца срока КЕ можно вернуть: если обогащение снова обнаружит её, она восстановится вместе с идентификатором, историей и связями. После физического удаления восстановление невозможно.

Что настраивается:

ПараметрЗначение
«Удалять по сроку»Число суток, которое КЕ хранится после пометки к удалению. Допустим 0 — тогда КЕ удаляется при ближайшем запуске задачи, а восстановление при обогащении фактически отключается
«Хранить бессрочно»КЕ этого ТКЕ физически не удаляются
«Разрешить переопределение»Пока выключено, срок берётся у родительского ТКЕ и меняется вместе с ним

Срок нового ТКЕ копируется у родителя. У корневого ТКЕ родителя нет, поэтому при создании берётся значение переменной CI_KEEP_DAYS сервиса СРМ (см. Cервис СРМ); на уже существующие ТКЕ изменение этой переменной не влияет.

Составные КЕ удаляются вместе с владельцем

Если КЕ входит в композицию, она физически удаляется тогда же, когда удаляется композирующая КЕ, — независимо от собственного срока и режима «Хранить бессрочно». Заданный на вкладке срок применяется только к тем КЕ, которые были удалены отдельно от владельца.

Пометка всех КЕ. Кнопка «Пометить все к удалению» помечает к удалению все действующие КЕ выбранного ТКЕ — вместе с их составными частями. Физически КЕ при этом не удаляются: они уходят по сроку, заданному выше, или сразу кнопкой «Удалить сейчас». Уже помеченные КЕ остаются как есть — их срок хранения не начинается заново, поэтому повторная пометка не продлевает им жизнь.

Перед пометкой система показывает её состав: сам ТКЕ, дочерние ТКЕ (только если включён флажок «Пометить КЕ в дочерних ТКЕ», по умолчанию он выключен) и ТКЕ составных частей, КЕ которых уйдут вместе с владельцем. Числа в составе считаются тем же обходом композиции, которым выполняется пометка, поэтому итог совпадает с числом помеченных КЕ. Подтверждается пометка вводом системного имени ТКЕ — того, что задано в поле «Название».

Права на удаление КЕ

И пометка всех КЕ, и «Удалить сейчас» требуют права на редактирование каждой затронутой КЕ по правилам доступа к CMDB. Если хотя бы одну КЕ менять нельзя, операция не выполняется целиком; для пометки диалог показывает это заранее и не даёт её подтвердить.

Немедленное удаление. Кнопка «Удалить сейчас» физически удаляет все помеченные КЕ выбранного ТКЕ, не дожидаясь окончания срока. Флажок «Удалить КЕ в дочерних ТКЕ» по умолчанию выключен: без него КЕ типов-наследников остаются на месте. Составные части удаляемых КЕ уходят в любом случае.

Само физическое удаление выполняет общая для всех ТКЕ фоновая задача delete_marked_cis, её периодичность настраивается на странице Периодические задания.

Рекомендации по созданию ТКЕ​

При проектировании ресурсной модели рекомендуется создавать новые ТКЕ как дочерние элементы по отношению к базовому типу «Конфигурационная единица». Это обеспечивает автоматическое наследование системных свойств и упрощает дальнейшее администрирование.

Если ТКЕ создается в корне иерархии (на одном уровне с базовой «Конфигурационной единицей»), необходимо учитывать следующие особенности:

  • Настройка доступа: Созданный в корне ТКЕ не наследует общие права. Его необходимо вручную добавить в соответствующие Правила доступа, иначе экземпляры этого типа не будут отображаться у пользователей.
  • Идентификация и наименование: Для корневого ТКЕ необходимо с нуля настроить Правила идентификации и Правила наименования, так как базовые шаблоны не будут применены автоматически.
  • Создание в корне: Чтобы при создании ТКЕ не выбирать родителя и оставить тип в корне иерархии, в окне выбора родительского ТКЕ выберите любую существующую запись, а затем повторно нажмите на неё же («выбранную»), чтобы снять выделение. Когда поле станет пустым, ТКЕ будет определен как корневой.
подсказка

Используйте создание в корне только для уникальных классов объектов, которые архитектурно не могут быть наследниками стандартной Конфигурационной единицы.

Экспорт и импорт Типов КЕ​

Раздел Типы КЕ предназначен для управления структурой и компонентной базой ресурсной модели системы. Экспорт Типов КЕ позволяет выгрузить настроенную структуру данных для переноса на другой стенд или для включения в Пакет конфигураций.

Расположение в системе: В левом боковом меню перейдите по пути: Главная → Настройки → CPM → Типы КЕ.

Особенности экспорта и структура конфигурации (JSON)​

При выгрузке Типа КЕ формируется единый JSON-документ, который включает в себя абсолютно все компоненты, относящиеся к данному типу.

Краткая структура выгружаемого JSON-файла: Файл состоит из трех основных массивов данных:

  1. "links" — содержит перечень используемых типов связей (например, association).
  2. "attributes" — глобальный реестр всех атрибутов, задействованных в выгружаемых ТКЕ. Здесь описывается их системное имя, ярлык (label) и схема данных (тип строки, даты, текста и т.д.).
  3. "cits" — массив самих Типов КЕ. Внутри каждого ТКЕ содержатся:
  • Базовые настройки (имя, иконка, цвет, родительский ТКЕ для наследования).
  • Привязка атрибутов к данному ТКЕ (настройки отображения, парсеры).
  • Доступные связи (какие объекты можно связывать с данным ТКЕ).
  • Правила именования (name_template), идентификации (rule) и срок хранения удалённых КЕ (delete_policy).

Порядок действий для экспорта:

  1. В левой панели реестра найдите нужные Типы КЕ. Для удобства можно использовать строку поиска или раскрывать древовидную иерархию.
  2. Чтобы выделить нужные элементы, раскройте выпадающее меню «Добавить» и активируйте переключатель «Выбор». Рядом с элементами дерева появятся чекбоксы.
  3. Отметьте галочками один или несколько Типов КЕ.

    Примечание: При экспорте нет необходимости вручную выбирать все связанные Типы КЕ. Вы можете выгрузить только интересующий вас ресурс, игнорируя его связи.

  4. Снова откройте меню «Добавить» и нажмите «Экспорт». Файл .json будет сохранен на ваш компьютер.

Импорт Типов КЕ и разрешение конфликтов​

Импорт файлов Типов КЕ (как напрямую через кнопку «Импорт» в меню «Добавить», так и через загрузку Пакета конфигураций) имеет строгую системную логику для защиты консистентности базы данных.

Интерфейс импорта состоит из трех шагов:

Шаг 1. Загрузка​

  • В открывшемся окне нажмите «Выбрать файл» и прикрепите подготовленный JSON-документ.
  • После загрузки в окне появится встроенный редактор/просмотрщик кода. Вы можете просмотреть структуру импортируемого JSON-файла перед дальнейшими действиями.
  • Нажмите синюю кнопку «Анализировать» в правом нижнем углу.

(Важно: В ходе анализа система ищет связанные ТКЕ в импортируемых файлах и уже существующие в системе. Если связанного ТКЕ нет ни там, ни там — возникнет ошибка валидации).

Шаг 2. Анализ​

На этом шаге система выводит таблицу со списком импортируемых сущностей (ТКЕ и их Атрибутов) и подсвечивает статусы. Если сущность из файла уже есть в системе, статус будет обозначен как «Конфликт» (желтый значок предупреждения).

Вам необходимо выбрать действие для каждого конфликта (поля, требующие внимания, подсвечены красной рамкой):

  • Для Типов CI (ТКЕ): Во избежание неконсистентности между существующим и импортируемым ТКЕ доступна только одна опция — «Заменить существующий». Она приведет к полной замене всех компонентов ТКЕ на те, которые были в файле импорта.
  • Для Атрибутов: Импортируемые атрибуты добавляются в собственный независимый реестр. Если атрибут уже существует в системе, для него доступно действие «Пропустить действие». Атрибуты из нескольких ТКЕ не создают дубликаты, система просто привязывает один и тот же атрибут к нескольким ресурсам.
  • Некоторые системные атрибуты (например, Наименование КЕ или Конфигурация) не могут быть изменены.

Когда для всех конфликтов будут выбраны действия (красные рамки исчезнут), кнопка «Импорт» станет активной.

Шаг 3. Результат​

После нажатия кнопки импорта система применит выбранные действия. На финальном экране вы сможете отследить статус обновления ресурсов (успешно или ошибка).

Связанные разделы​