Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Skydive je analyzátor topologie sítě a protokolů s otevřeným zdrojovým kódem v reálném čase. Je navržen tak, aby poskytoval komplexní způsob, jak pochopit, co se děje v síťové infrastruktuře.

Abych vás zaujal, uvedu pár screenshotů o Skydive. Níže bude příspěvek o úvodu do Skydive.

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Příspěvek „Úvod do skydive.network“ na Habru.

Skydive zobrazuje topologii sítě tím, že přijímá síťové události od agentů Skydive. Zajímalo vás někdy, jak přidat nebo zobrazit síťové komponenty na diagramu topologie, které nejsou součástí agentové sítě Skydive, nebo nesíťové objekty, jako je TOR, datové úložiště atd.? Už se o to nemusíte starat, díky rozhraní Node rule API.

Od verze 0.20 Skydive poskytuje Node rule API, které lze použít k vytváření nových uzlů a hran a k aktualizaci metadat stávajících uzlů. Node rule API je rozdělena do dvou rozhraní API: rozhraní API pravidla uzlu a rozhraní API pravidla hrany. API pravidla uzlu se používá k vytvoření nového uzlu a aktualizaci metadat stávajícího uzlu. API pravidla hrany se používá k vytvoření hranice mezi dvěma uzly, tedy k propojení dvou uzlů.

V tomto blogu se podíváme na dva příklady použití, přičemž jeden z nich je síťová komponenta, která není součástí sítě Skydive. Druhý příklad je nesíťová komponenta. Předtím si prohlédneme některé základní způsoby použití API pravidel topologie.

Vytvoření uzlu Skydive

Chcete-li vytvořit uzel, musíte uvést jedinečný název uzlu a platný typ uzlu. Můžete také poskytnout další parametry.

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": ""
}

Aktualizace metadat uzlů Skydive

Chcete-li aktualizovat metadata stávajícího uzlu, musíte poskytnout dotaz v jazyce gremlin k výběru uzlů, ve kterých chcete aktualizovat metadata. V souladu s vaším dotazem můžete aktualizovat metadata jednoho nebo více uzlů pomocí pravidla jednoho uzlu.

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')"
}

Vytváření hrany Skydive

Pro vytvoření hrany je nutné uvést počáteční a koncový uzel a typ vztahu hrany. Pro vytvoření podřízeného uzlu by měla být hodnota typu vztahu ownership, obdobně pro vytvoření vztahu typu layer2 by hodnota typu vztahu měla být layer2. Můžete vytvořit více než jeden vztah mezi dvěma uzly, ale typ vztahu musí být odlišný.

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"
  }
}

První scénář použití

V tomto případě se podíváme, jak zobrazit nesítové zařízení v topologii Skydive. Představme si, že máme datové úložiště, které by mělo být zobrazeno v topologickém diagramu Skydive s některými užitečnými metadaty.

Stačí vytvořit pravidlo uzlu, abychom přidali zařízení do topologie. Můžeme přidat metadata zařízení jako součást příkazu create nebo později vytvořit jeden nebo více příkazů update node rule.

Pro přidání paměťového zařízení do topologie proveďte následující příkaz pravidla uzlu.

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"

Proveďte níže uvedený příkaz pravidla hrany, abyste propojili vytvořený uzel s uzlem hostitele.

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

Po výše uvedených příkazech nyní můžete vidět zařízení zobrazené v topologickém diagramu Skydive s uvedenými metadaty, jak je znázorněno na obrázku níže.

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Druhý scénář použití

V tomto případě si ukážeme, jak přidat síťové zařízení, které není součástí sítě skydive. Podívejme se na tento příklad. Máme dvě agenty skydive, kteří pracují na dvou různých hostitelích, a pro připojení těchto dvou hostitelů potřebujeme switch TOR. I když toho můžeme dosáhnout definováním uzlů struktury a odkazů v konfiguračním souboru, podívejme se, jak můžeme totéž udělat pomocí API pravidel topologie.

Bez switche TOR budou dva agenti vypadat jako dva různé uzly bez jakýchkoli odkazů, jak je znázorněno na obrázku níže.

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Nyní proveďte následující příkazy pravidel uzlu pro vytvoření switche TOR a portů.

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"

Jak vidíte, switch TOR a porty byly vytvořeny a přidány do topologie skydive a nyní bude topologie vypadat tak, jak je znázorněno na obrázku níže.

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Nyní proveďte níže uvedené příkazy pravidel Edge pro vytvoření spojení mezi switchem TOR, portem 1 a veřejným rozhraním hostitele 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"

Proveďte následující příkazy pro vytvoření spojení mezi switchem TOR, portem 2 a veřejným rozhraním hostitele 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"

Nyní jsou vytvářena spojení ownership a layer2 mezi switchem TOR a portem, stejně jako spojení layer2 mezi agenty a porty. Nyní bude konečná topologie vypadat tak, jak je znázorněno na obrázku níže.

Ruční přidání uzlu do topologie Skydive přes klienta Skydive

Nyní jsou dva hostitelé / agenti správně propojeni a můžete ověřit připojení nebo vytvořit záznam o nejkratší cestě mezi dvěma hostiteli.

P.S. Odkaz na originální příspěvek

Hledáme lidi, kteří by mohli psát příspěvky o dalších možnostech Skydive.
Telegramový chat o skydive.network.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster