Определение пользовательской топологии

Материал из Документация Ключ-АСТРОМ
Версия от 23:39, 19 января 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «Мы продолжаем рассматривать наш Расширение топологии - Пользовательская модель тополо...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Мы продолжаем рассматривать наш пример логистики Easy Shipping LTD, в котором грузовики и контейнеры, установленные на грузовиках, передают телеметрические данные в Ключ-АСТРОМ.

Пример потока данных соответствует формату протокола метрической линии Ключ-АСТРОМ.

truck.fuel.total,trucknr=99,model=mac-granite 10234

truck.fuel.usage,trucknr=99,model=mac-granite 17

truck.operation.hours,trucknr=99,model=mac-granite 23766

truck.fuel.total,trucknr=12,model=mac-anthem 234

truck.fuel.usage,trucknr=12,model=mac-anthem 10

truck.operation.hours,trucknr=12,model=mac-anthem 13766

container.temperature,containernr=234321,trucknr=99 40

container.temperature.dev,containernr=234321,trucknr=99 0

container.temperature,containernr=111111,trucknr=12 39

container.temperature.dev,containernr=111111,trucknr=12 2.5

Определение нового типа сущности

Для определения нового типа сущности укажите имя сущности и задайте правила ее извлечения.

Определение имени сущности

На основе приведенного выше примера определите новый тип сущности «Грузовик» в среде Ключ-АСТРОМ.

  1. Перейдите в Настройки > Модель топологии > Типы общего назначения.
  2. Выберите Добавить определение типа, чтобы начать определять собственный пользовательский тип сущности truck.
  3. Укажите уникальное имя типа, которое будет служить идентификатором сущности.
    Чтобы гарантировать уникальность имени типа для всей вашей среды Ключ-АСТРОМ, добавьте перед именем типа домен, специфичный для вашей топологии (например, logistics:truck).
  4. Установите для параметра Тип отображаемого имени удобное для человека отображаемое имя.
  5. В поле Создано укажите имя создателя (человека или добавочный номер).

Укажите правила извлечения

Научите Ключ-АСТРОМ, как автоматически сопоставлять новый тип сущности и как идентифицировать уникальные экземпляры сущностей (грузовики).

  1. Выберите Добавить правило извлечения.
  2. Чтобы указать правило извлечения идентификатора экземпляра для нового типа сущности, установите параметр Шаблон извлекаемого идентификатора в значение {trucknr}.
    Необходимо использовать ссылку {placeholder} на имя измерения, чтобы гарантировать уникальность идентификатора экземпляра. Значение измерения станет идентификатором экземпляра.
  3. Чтобы указать правило извлечения имени экземпляра для вашего нового типа сущности, установите шаблон имени экземпляра в значение {trucknr}. Значение измерения станет именем экземпляра.
  4. Чтобы задать правило извлечения для атрибута сущности, выберите Добавить правило извлечения атрибута. В этом примере данные по каждому грузовику отображаются с учетом измерения model, которым является атрибут грузовика:
    • Ключ атрибута: уникальный идентификатор правила, из которого нужно извлечь значение атрибута.
    • Отображаемое имя атрибута. Вы можете оставить это поле пустым, чтобы использовать ключ в качестве отображаемого имени.
    • Шаблон извлечения значения атрибута. Добавьте заполнитель для измерения {model}. Значение измерения станет именем атрибута.

Повторите для дополнительных объектов.

Повторите описанные выше шаги для определения дополнительных сущностей. В этом случае нам по-прежнему необходимо определить тип сущности container, указать правила ее извлечения (containernr) и указать правила извлечения для ее атрибутов (trucknr).

После настройки собственных типов доменов на основе входящих метрик или потоков логов Ключ-АСТРОМ автоматически будет извлекать и создавать новые экземпляры грузовиков и контейнеров всякий раз, когда грузовик или контейнер начинает отправлять свои телеметрические данные.

Определение взаимосвязи между сущностями

Для завершения определения топологии необходимо установить связь между грузовиком и перевозимым контейнером. Без этой связи измерения, относящиеся к грузовику и контейнеру, будут отображаться в Ключ-АСТРОМ отдельно, без указания топологической связи.

Для установления связи между одним типом сущности и другим типом сущности необходимо найти объединенный поток данных. В нашем примере это измерение температуры контейнера, содержащее оба идентификационных значения: номер грузовика и номер контейнера.

Например:

container.temperature,containernr=111111,trucknr=12 39

Благодаря объединенному потоку данных мы теперь можем определить взаимосвязь между грузовиком и контейнером.

  1. Перейдите в Настройки > Модель топологии > Общие связи.
  2. Выберите Добавить определение связи.
  3. Выберите Добавить источник.
  4. Укажите источник:
    • Установите тип источника данных для приема данных на Metrics
    • Установите условие $eq(container.temperature).
      Это фильтр, который будет соответствовать имени объединяемой метрики. В этом примере $eq(container.temperature) используется для сопоставления метрики container.temperature.
    • Задайте имя типа источника logistics:container.
    • Установите тип назначения на logistics:truck
    • Установите тип связи на is child of
      Это определяет связь между именем типа источника (logistics:container) и типом назначения (logistics:truck), что в данном случае означает, что logistics:container is child of logistics:truck.
  5. Выберите Сохранить изменения.

Дополнительные роли

Использование ролей (таких как клиент и сервер, или вызывающий и вызываемый) необязательно. В нашем примере нам не нужно указывать эти роли, поскольку источник данных для объединения содержит два разных типа сущностей.

Роли необходимы, если вы хотите соединить два экземпляра одного и того же типа сущности с помощью метода объединения.

В качестве примера можно привести график, показывающий время ответа одной службы на вызов другой службы.

Например:

service.responsetime,caller=service1,callee=service2 39

В приведенном выше примере необходимо выделить два экземпляра сервиса одного типа и объединить их с помощью связи вызова.

В этом случае одно правило извлечения должно быть связано с ролью (вызывающий), а другое — с другой ролью (вызываемый).

В процессе извлечения связи роли вызывающего и вызываемого могут быть использованы для определения направления результирующей связи.