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

Skydive ist ein Open-Source-Echtzeit-Netzwerktopologie- und Protokollanalysator. Ziel ist es, eine umfassende Möglichkeit zu bieten, zu verstehen, was in einer Netzwerkinfrastruktur geschieht.

Um Ihr Interesse zu wecken, gebe ich Ihnen ein paar Screenshots über Skydive. Unten wird es einen Beitrag über eine Einführung in Skydive geben.

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

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

Post "Einführung in skydive.network» auf Habré.

Skydive zeigt die Netzwerktopologie an, indem es Netzwerkereignisse von Skydive-Agenten empfängt. Haben Sie sich jemals gefragt, wie Sie Netzwerkkomponenten hinzufügen oder in einem Topologiediagramm anzeigen können, die sich außerhalb des Skydive-Agentennetzwerks befinden, oder Nicht-Netzwerkobjekte wie TOR, Datenspeicher usw. Dank der Node Rule API müssen Sie sich darüber keine Sorgen mehr machen.

Seit Version 0.20 bietet Skydive eine Node-Rule-API, mit der neue Knoten und Kanten erstellt und die Metadaten bestehender Knoten aktualisiert werden können. Die Knotenregel-API ist in zwei APIs unterteilt: die Knotenregel-API und die Kantenregel-API. Die Node Rule API wird verwendet, um einen neuen Knoten zu erstellen und die Metadaten eines vorhandenen Knotens zu aktualisieren. Die Kantenregel-API wird verwendet, um eine Grenze zwischen zwei Knoten zu erstellen, d. h. verbindet zwei Knoten.

In diesem Blog werden wir zwei Anwendungsfälle sehen, von denen einer eine Netzwerkkomponente ist, die nicht Teil des Skydive-Netzwerks ist. Die zweite Option ist eine Nicht-Netzwerkkomponente. Zuvor sehen wir uns einige grundlegende Möglichkeiten zur Verwendung der Topology Rules API an.

Erstellen eines Skydive-Knotens

Um einen Knoten zu erstellen, müssen Sie einen eindeutigen Knotennamen und einen gültigen Knotentyp angeben. Sie können auch einige zusätzliche Optionen angeben.

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

Aktualisieren Sie die Metadaten der Skydive-Knoten

Um die Metadaten eines vorhandenen Knotens zu aktualisieren, müssen Sie eine Gremlin-Abfrage bereitstellen, um die Knoten auszuwählen, auf denen Sie die Metadaten aktualisieren möchten. Je nach Wunsch können Sie die Metadaten eines oder mehrerer Knoten mithilfe einer Einzelknotenregel 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')"
}

Erstellen einer Skydive Edge

Um eine Kante zu erstellen, müssen Sie die Quell- und Zielknoten sowie den Linktyp der Kante angeben; um einen untergeordneten Knoten zu erstellen, muss der Linktypwert „Ownership“ sein; entsprechend muss der Linktypwert sein, um einen Linktyp „Layer2“ zu erstellen Schicht2. Sie können mehr als eine Verbindung zwischen zwei Knoten erstellen, die Art der Verbindung muss jedoch 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 schauen wir uns an, wie ein Nicht-Netzwerkgerät in der Skydive-Topologie angezeigt wird. Nehmen wir an, dass wir über ein Data Warehouse verfügen, das in einem Skydive-Topologiediagramm mit einigen nützlichen Metadaten angezeigt werden muss.

Wir müssen lediglich eine Knotenregel erstellen, um das Gerät zur Topologie hinzuzufügen. Wir können Gerätemetadaten als Teil des Erstellungsbefehls hinzufügen oder später einen oder mehrere Aktualisierungsknotenregelbefehle erstellen.

Führen Sie den folgenden Hostregelbefehl aus, um dem Topologiediagramm ein Speichergerät 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 Befehl unterhalb der Kantenregel aus, um den erstellten Knoten dem Hostknoten zuzuordnen.

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 im Skydive-Topologiediagramm sichtbare Gerät mit den angegebenen Metadaten sehen, wie im Bild unten gezeigt.

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

Zweiter Anwendungsfall

In diesem Fall erfahren Sie, wie Sie ein Netzwerkgerät hinzufügen, das nicht Teil des Skydive-Netzwerks ist. Schauen wir uns dieses Beispiel an. Wir haben zwei Skydive-Agenten, die auf zwei verschiedenen Hosts laufen. Um diese beiden Hosts zu verbinden, benötigen wir einen TOR-Switch. Auch wenn wir dies erreichen können, indem wir Strukturknoten und Links in einer Konfigurationsdatei definieren, wollen wir sehen, wie wir dasselbe mit der Topology Rules API erreichen können.

Ohne einen TOR-Schalter erscheinen die beiden Agenten als zwei verschiedene Knoten ohne jegliche Links, wie in der Abbildung unten dargestellt.

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

Führen Sie nun die folgenden Host Rules-Befehle 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 zur Skydive-Topologie hinzugefügt. Die Topologie sieht nun wie im Bild unten aus.

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

Führen Sie nun die folgenden Edge Rule-Befehle 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 TOR-Switch-Port 2 und der öffentlichen Schnittstelle von Host 2 zu erstellen

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"

Es werden nun Eigentums- und Layer-2-Zuordnungen zwischen dem TOR-Switch und dem Port sowie Layer-2-Zuordnungen zwischen Agenten und Ports erstellt. Die endgültige Topologie sieht nun wie im Bild unten aus.

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

Jetzt sind die beiden Hosts/Agenten korrekt verbunden und Sie können die Verbindung testen oder eine Erfassung des kürzesten Pfads zwischen den beiden Hosts erstellen.

PS Link zu Originalbeitrag

Wir suchen Leute, die Beiträge über andere Skydive-Funktionen schreiben können.
Telegram-Chat über skydive.network.

Source: habr.com

Kommentar hinzufügen