Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Skydive ist ein Open-Source-Netzwerk- und Protokoll-Topologie-Analyzer in Echtzeit. Es zielt darauf ab, einen umfassenden Weg zu bieten, um zu verstehen, was in der Netzwerk-Infrastruktur passiert.

Um Ihr Interesse zu wecken, werde ich ein paar Screenshots über Skydive zeigen. Ein Post über die Einführung in Skydive folgt gleich.

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Post „Einführung in skydive.network“ auf Habré.

Skydive zeigt die Netzwerk-Topologie an, indem es Netzwerkereignisse von Skydive-Agenten erhält. Haben Sie sich jemals gefragt, wie man Netzwerkkomponenten, die außerhalb des Agentennetzwerks von Skydive liegen, oder Nicht-Netzwerkobjekte wie TOR, Datenspeicher usw. auf dem Topologiediagramm hinzufügen oder anzeigen kann? Damit müssen Sie sich nicht mehr sorgen, dank der Node Rule API.

Seit Version 0.20 bietet Skydive die Node Rule API an, die zum Erstellen neuer Knoten und Kanten sowie zum Aktualisieren von Metadaten bestehender Knoten verwendet werden kann. Die Node Rule API ist in zwei API-Schnittstellen unterteilt: die Knoteregel-API und die Kantenregel-API. Die Knoteregel-API wird zum Erstellen eines neuen Knotens und zum Aktualisieren der Metadaten eines bestehenden Knotens verwendet. Die Kantenregel-API wird zum Erstellen einer Kante zwischen zwei Knoten verwendet, d.h. sie verbindet zwei Knoten.

In diesem Blog werden wir zwei Anwendungsfälle sehen, einer davon ist ein Netzwerkkomponente, die nicht Teil des Skydive-Netzwerks ist. Der zweite Fall ist eine Nicht-Netzwerkkomponente. Zuvor werden wir einige grundlegende Nutzungsmöglichkeiten der Topologieregel-API betrachten.

Erstellung eines Skydive-Knotens

Um einen Knoten zu erstellen, müssen Sie einen eindeutigen Knotennamen und einen zulässigen Knotentyp angeben. Sie können auch einige zusätzliche Parameter bereitstellen.

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

Aktualisierung der Metadaten von Skydive-Knoten

Um die Metadaten eines bestehenden Knotens zu aktualisieren, müssen Sie eine Abfrage in der Gremlin-Sprache bereitstellen, um die Knoten auszuwählen, deren Metadaten Sie aktualisieren möchten. Gemäß Ihrer Abfrage können Sie die Metadaten eines oder mehrerer Knoten mit einer einzelnen Knoteregel aktualisieren.

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

Erstellung einer Skydive-Kante

Um eine Kante zu erstellen, müssen der Ausgangs- und der Endknoten sowie der Beziehungstyp der Kante angegeben werden. Für die Erstellung eines Kindknotens muss der Beziehungstyp ownership sein. Analog dazu muss der Beziehungstyp für die Erstellung einer Verbindung vom Typ layer2 layer2 sein. Sie können mehr als eine Verbindung zwischen zwei Knoten erstellen, aber der Beziehungstyp muss unterschiedlich sein.

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

Erster Anwendungsfall

In diesem Fall werden wir untersuchen, wie man ein non-Network-Gerät in der Skydive-Topologie anzeigt. Stellen Sie sich vor, wir haben eine Datenquelle, die in der topologischen Skydive-Diagramm mit nützlichen Metadaten angezeigt werden soll.

Wir müssen einfach eine Regel für den Knoten erstellen, um das Gerät in die Topologie aufzunehmen. Wir können die Metadaten des Geräts als Teil des create-Befehls hinzufügen oder später eine oder mehrere update node rule-Befehle erstellen.

Führen Sie den folgenden Befehl für die Knotenregel aus, um das Speichermedium zum Topologieschema hinzuzufügen.

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"

Führen Sie den untenstehenden Kantenregel-Befehl aus, um den erstellten Knoten mit dem Hostknoten zu verbinden.

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

Nach den obigen Befehlen können Sie nun das Gerät sichtbar im Skydive-Topologieschema sehen, mit den angegebenen Metadaten, wie in der Abbildung unten dargestellt.

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Zweiter Anwendungsfall

In diesem Fall sehen wir uns an, wie wir ein Netzwerkgerät hinzufügen, das nicht Teil des Skydive-Netzwerks ist. Lassen Sie uns dieses Beispiel betrachten. Wir haben zwei Skydive-Agenten, die auf zwei verschiedenen Hosts arbeiten. Um diese beiden Hosts zu verbinden, benötigen wir einen TOR-Switch. Auch wenn wir dies erreichen können, indem wir die Knotenstruktur und Links in der Konfigurationsdatei definieren, schauen wir uns an, wie wir dasselbe mit der API für Topologie-Regeln tun können.

Ohne den TOR-Switch erscheinen die beiden Agenten wie zwei verschiedene Knoten ohne irgendwelche Links, wie im folgenden Bild dargestellt.

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Führen Sie jetzt die folgenden Befehle für die Knoten-Regel aus, um den TOR-Switch und die Ports zu erstellen.

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"

Wie Sie sehen können, wurden der TOR-Switch und die Ports erstellt und in die Skydive-Topologie eingefügt, und jetzt wird die Topologie so aussehen, wie im folgenden Bild dargestellt.

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Führen Sie nun die folgenden Befehle für die Edge-Regel aus, um eine Verbindung zwischen dem TOR-Switch, Port 1 und der öffentlichen Schnittstelle von Host 1 herzustellen.

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"

Führen Sie die folgenden Befehle aus, um eine Verbindung zwischen dem TOR-Switch, Port 2 und der öffentlichen Schnittstelle von Host 2 herzustellen.

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"

Nun werden die Verbindungen ownership und layer2 zwischen dem TOR-Switch und dem Port sowie die layer2-Verbindungen zwischen den Agenten und den Ports erstellt. Nun wird die endgültige Topologie so aussehen, wie im folgenden Bild dargestellt.

Hinzufügen eines Knotens zur Skydive-Topologie manuell über den Skydive-Client

Jetzt sind die zwei Hosts / Agenten korrekt verbunden, und Sie können die Verbindung überprüfen oder einen Capturing-Prozess des kürzesten Pfades zwischen den beiden Hosts erstellen.

P.S. Link zum Originalbeitrag

Es werden Personen gesucht, die Beiträge zu weiteren Möglichkeiten von Skydive schreiben können.
Telegram-Chat zu skydive.network.

Quelle: habr.com

60GB SSD 8Gb DDR4