Топология: различия между версиями
ENetrebin (обсуждение | вклад) |
ENetrebin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
'''''[[Расширения]] / [[Расширения#.D0.A0.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B0|Разработка]] / Расширения / Топология''''' | |||
Устройства являются основой топологий. Каждое устройство может представлять собой службу (базу данных, файловый сервер, маршрутизатор и т. д.). Метрики, события и свойства можно сообщать на уровне устройства. Группа устройств — это набор устройств. О свойствах также можно сообщать на уровне группы устройств. | Устройства являются основой топологий. Каждое устройство может представлять собой службу (базу данных, файловый сервер, маршрутизатор и т. д.). Метрики, события и свойства можно сообщать на уровне устройства. Группа устройств — это набор устройств. О свойствах также можно сообщать на уровне группы устройств. | ||
Текущая версия на 17:42, 4 сентября 2024
Расширения / Разработка / Расширения / Топология
Устройства являются основой топологий. Каждое устройство может представлять собой службу (базу данных, файловый сервер, маршрутизатор и т. д.). Метрики, события и свойства можно сообщать на уровне устройства. Группа устройств — это набор устройств. О свойствах также можно сообщать на уровне группы устройств.
Чтобы сообщить об устройствах и группах устройств, используйте topology_builder
объект. Объект доступен как свойство RemoteBasePlugin
класса, которое вы можете использовать для создания группы устройств.
По возможности назначайте устройствам IP-адреса и порты. Ключ-АСТРОМ AI требует этого для обнаружения зависимостей между компонентами.
Отчет об устройствах
По умолчанию назначение технологии устройства определяется в файле расширения JSON. Кроме того, можно сообщить о нескольких IP-адресах и портах, назначенных одному устройству. Вы можете использовать их для сопоставления обнаруженных служб с конкретным устройством.
add_endpoint
Метод позволяет настраивать IP-адреса, DNS-имена и порты.
ip
это одна строка, и она обязательна.dnsNames
name — это список строк, разделенных запятыми.- Порты могут быть указаны как одно
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"
}
]
}
}