Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Топология

Материал из Документация АппОптима

Устройства являются основой топологий. Каждое устройство может представлять собой службу (базу данных, файловый сервер, маршрутизатор и т. д.). Метрики, события и свойства можно сообщать на уровне устройства. Группа устройств — это набор устройств. О свойствах также можно сообщать на уровне группы устройств.

Чтобы сообщить об устройствах и группах устройств, используйте topology_builderобъект. Объект доступен как свойство RemoteBasePluginкласса, которое вы можете использовать для создания группы устройств.

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

Отчет об устройствах

По умолчанию назначение технологии устройства определяется в файле расширения JSON. Кроме того, можно сообщить о нескольких IP-адресах и портах, назначенных одному устройству. Вы можете использовать их для сопоставления обнаруженных служб с конкретным устройством.

add_endpointМетод позволяет настраивать IP-адреса, DNS-имена и порты.

  • ipэто одна строка, и она обязательна.
  • dnsNamesname — это список строк, разделенных запятыми.
  • Порты могут быть указаны как одно portчисло port_listили range_list.

Примеры использования:

add_endpoint("1.1.1.1")

            add_endpoint(ip="1.1.1.1")

            add_endpoint("172.18.19.241", 4581)

            add_endpoint(ip="1.1.1.1", port=80)

            add_endpoint(ip="1.1.1.1", port=80, dnsNames=["name.com"])

            add_endpoint(ip="1.1.1.1", port=80, dnsNames=["name.com"], port_list=[88,8080], range_list=[(680, 690), (880, 900)])

            add_endpoint(ip="1.1.1.1", port=None, dnsNames=["name.com"], port_list=None, range_list=[(80, 88), (447, 450)])

Существует ограничение в 100 портов, которые должны быть сообщены на одно устройство в одну минуту. Превышение этого предела приведет к исключению конфигурации.

from ruxit.api.base_plugin import RemoteBasePlugin

class MyPlugin(RemoteBasePlugin):

def query(self, **kwargs):

group = self.topology_builder.create_group("My group", "My group")

device = group.create_element("My device", "My device")

device.report_property("my_property", "First device")

device.add_endpoint("172.18.19.241", 4581)

device.relative("my_device_counter", 2)


{

  "name": "custom.remote.python.my_plugin",

  "version": "1.001",

  "type": "python",

  "entity": "CUSTOM_DEVICE",

  "metricGroup": "my_plugin",

  "processTypeNames": ["PYTHON"],

  "technologies": ["example technology"],

  "source": {

    "package": "my_plugin",

    "className": "MyPlugin",

    "activation": "Remote"

  },

  "metrics": [

    {

      "timeseries": {

        "key": "my_device_counter",

        "unit": "Count",

        "displayname": "my counter"

      }

    }

  ]

}

Отчет по группам устройств

По умолчанию назначение технологии группе устройств определяется в файле расширения JSON.

from ruxit.api.base_plugin import RemoteBasePlugin

class MyPlugin(RemoteBasePlugin):

def query(self, **kwargs):

group = self.topology_builder.create_group("My group", "My group")

group.report_property("my_property", "First group")

group.absolute("my_group_counter", 1)


{

  "name": "custom.remote.python.my_plugin",

  "version": "1.001",

  "type": "python",

  "entity": "CUSTOM_DEVICE",

  "metricGroup": "my_plugin",

  "processTypeNames": ["PYTHON"],

  "technologies": ["example technology"],

  "source": {

    "package": "my_plugin",

    "className": "MyPlugin",

    "activation": "Remote"

  },

  "metrics": [

    {

      "entity": "PROCESS_GROUP",

      "timeseries": {

        "key": "my_group_counter",

        "unit": "Count",

        "displayname": "my counter"

      }

    }

  ],

  "ui": {

    "pgmetrics": [

      {

        "key": "my_group_counter",

        "displayname": "My counter"

      }

    ]

  }

}