Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Skydive — анализатор на топологията на мрежата и протоколите с отворен код в реално време. Той е предназначен да предостави изчерпателен начин за разбиране на това, което се случва в мрежовата инфраструктура.

За да ви заинтригувам, ще покажа няколко скрийншота за Skydive. По-долу ще намерите пост за въвеждане в Skydive.

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Постът „Въведение в skydive.network“ на Хабър.

Skydive визуализира топологията на мрежата, получавайки мрежови събития от агенти на Skydive. Чудили ли сте се как да добавите или визуализирате на диаграмата топологията мрежови компоненти, които са извън агенцията на Skydive или несетеви обекти, като TOR, хранилища на данни и т.н.? Не се притеснявайте за това повече, благодарение на Node rule API.

Започвайки от версия 0.20, Skydive предоставя Node rule API, който може да се използва за създаване на нови възли и ребра и за обновяване на метаданните на съществуващите възли. Node rule API се разделя на два интерфейса: интерфейс за правилото на възела и интерфейс за правилото на реброто. Интерфейсът за правилото на възела се използва за създаване на нов възел и обновяване на метаданните на съществуващия възел. Интерфейсът за правилото на реброто се използва за създаване на връзка между два възла, т.е. свързва два възла.

В този блог ще разгледаме два сценария, единият от които е мрежов компонент, който не е част от мрежата на Skydive. Вторият вариант е несетеви компонент. Преди това ще разгледаме някои основни начини за използване на API правилата на топологията.

Създаване на възел Skydive

За да създадете възел, трябва да посочите уникално име на възела и допустим тип възел. Можете също да предоставите някои допълнителни параметри.

skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
  "UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
  "Name": "node rule1",
  "Description": "",
  "Metadata": {
    "Name": "node1",
    "Type": "fabric"
  },
  "Action": "create",
  "Query": ""
}

Обновление на метаданните на възлите на Skydive

За да обновите метаданните на съществуващ възел, трябва да предоставите запитване на език gremlin, за да изберете възлите, в които искате да обновите метаданните. В съответствие с вашето запитване можете да обновите метаданните на един или няколко възла с правилото на един възел.

skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
  "UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
  "Name": "update rule",
  "Description": "",
  "Metadata": {
    "key1": "val1",
    "key2": "val2"
  },
  "Action": "update",
  "Query": "G.V().Has('Name', 'node1')"
}

Създаване на ръб Skydive

За да създадете ръб, трябва да посочите изходния и крайния възел, както и типа на връзката. За да създадете дъщерен възел, стойността на типа на връзката трябва да бъде ownership, а за създаване на връзка с тип layer2 - типът на връзката трябва да бъде layer2. Можете да създадете повече от една връзка между два възела, но типът на връзката трябва да бъде различен.

skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
  "UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
  "Name": "edge",
  "Description": "",
  "Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
  "Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
  "Metadata": {
    "RelationType": "both"
  }
}

Първи вариант на използване

В този случай ще разгледаме как да покажем мрежово устройство в топологията на skydive. Нека разгледаме, че имаме хранилище на данни, което трябва да бъде показано в топологичната диаграма на skydive с полезни метаданни.

Просто трябва да създадем правило за възел, за да добавим устройството в топологията. Можем да добавим метаданти на устройството като част от командата за създаване или по-късно да създадем една или няколко команди за актуализиране на правилото за възел.

Изпълнете командата по-долу за правило на възела, за да добавите запомнящо устройство в схемата на топологията.

skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=\/dev\/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"

Изпълнете командата по-долу за правило на ръба, за да свържете създадения възел с възела хост.

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

След горепосочените команди сега можете да видите устройството, видимо в схемата на топологията на skydive с определените метаданти, както е показано на изображението по-долу.

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Втори вариант на използване

В този случай ще видим как да добавим мрежово устройство, което не е част от мрежата skydive. Нека разгледаме този пример. Имаме два агента skydive, работещи на два различни хоста, и за свързването на тези два хоста ни трябва комутатор TOR. Дори и да можем да постигнем това, определяйки възлите на структурата и връзките в конфигурационния файл, нека видим как можем да направим същото с помощта на API на правилата за топология.

Без комутатор TOR, двата агента ще изглеждат като два различни възла без никакви връзки, както е показано на изображението по-долу.

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Сега изпълнете следните команди за правилата на възлите, за да създадете комутатор TOR и портовете.

skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"

Както виждате, комутаторът TOR и портовете са създадени и добавени към топологията skydive, и сега топологията ще изглежда както е показано на изображението по-долу.

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Сега изпълнете следните команди на правилата за ръбовете, за да създадете връзка между комутатора TOR, порт 1 и публичния интерфейс на хост 1.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"

Изпълнете следните команди, за да създадете връзка между комутатора TOR, порт 2 и публичния интерфейс на хост 2.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"

Сега се създават връзки ownership и layer2 между комутатора TOR и порта, както и връзки layer2 между агентите и портовете. Сега окончателната топология ще изглежда както е показано на изображението по-долу.

Добавяне на възел в топологията на Skydive ръчно чрез клиента на Skydive

Сега двата хоста / агента са свързани правилно, и можете да проверите връзката или да създадете захват на краткия път между двата хоста.

P.S. Линк към оригиналния пост

Търсят се хора, които могат да пишат постове за други възможности на Skydive.
Телеграм чат по skydive.network.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster