Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Skydive är en öppen källkod, realtidsnätverkstopologi och protokollanalysator. Det syftar till att tillhandahålla ett heltäckande sätt att förstå vad som händer i en nätverksinfrastruktur.

För att intressera dig ska jag ge dig ett par skärmdumpar om Skydive. Nedan kommer ett inlägg om en introduktion till Skydive.

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Inlägg "Introduktion till skydive.network» på Habré.

Skydive visar nätverkstopologin genom att ta emot nätverkshändelser från Skydive-agenter. Har du någonsin undrat hur man lägger till eller visar i ett topologidiagram nätverkskomponenter som är utanför Skydive-agentnätverket eller icke-nätverksobjekt som TOR, datalagring, etc. Du behöver inte oroa dig för det längre tack vare Node rule API .

Sedan version 0.20 tillhandahåller Skydive ett nodregel-API som kan användas för att skapa nya noder och kanter och för att uppdatera metadata för befintliga noder. Node rule API är uppdelat i två API:er: nod rule API och edge rule API. Node Rule API används för att skapa en ny nod och uppdatera metadata för en befintlig nod. Edge rule API används för att skapa en gräns mellan två noder, d.v.s. kopplar ihop två noder.

I den här bloggen kommer vi att se två användningsfall, varav ett är en nätverkskomponent som inte ingår i fallskärmshoppsnätverket. Det andra alternativet är en icke-nätverkskomponent. Innan dess ska vi titta på några grundläggande sätt att använda Topology Rules API.

Skapa en fallskärmsnod

För att skapa en nod måste du ange ett unikt nodnamn och en giltig nodtyp. Du kan också ge några ytterligare alternativ.

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

Uppdatera metadata för Skydive Nodes

För att uppdatera metadata för en befintlig nod måste du tillhandahålla en gremlin-fråga för att välja de noder som du vill uppdatera metadata på. Enligt din begäran kan du uppdatera metadata för en eller flera noder med en enda nodregel.

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

Skapa en Skydive Edge

För att skapa en kant måste du ange käll- och målnoderna och länktypen för kanten; för att skapa en undernod måste länktypvärdet vara ägande; på samma sätt, för att skapa en länktyp layer2, måste länktypvärdet vara lager2. Du kan skapa mer än en länk mellan två noder, men typen av länk måste vara olika.

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

Första användningsfallet

I det här fallet kommer vi att titta på hur man visar en icke-nätverksenhet i fallskärmstopologin. Låt oss överväga att vi har ett datalager som måste visas i ett skydive-topologidiagram med lite användbar metadata.

Vi behöver bara skapa en nodregel för att lägga till enheten i topologin. Vi kan lägga till enhetsmetadata som en del av skapa kommandot, eller senare skapa ett eller flera uppdateringsnodregelkommandon.

Kör följande värdregelkommando för att lägga till en lagringsenhet till topologidiagrammet.

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"

Kör kommandot under edge-regeln för att associera den skapade noden med värdnoden.

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

Efter ovanstående kommandon kan du nu se enheten synlig i skydive-topologidiagrammet med de givna metadata som visas i bilden nedan.

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Andra användningsfallet

I det här fallet kommer vi att se hur man lägger till en nätverksenhet som inte är en del av fallskärmshoppsnätverket. Låt oss titta på detta exempel. Vi har två skydive-agenter som körs på två olika värdar, för att koppla ihop dessa två värdar behöver vi en TOR-switch. Även om vi kan uppnå detta genom att definiera strukturnoder och länkar i en konfigurationsfil, låt oss se hur vi kan göra detsamma med Topology Rules API.

Utan en TOR-switch kommer de två agenterna att visas som två olika noder utan några länkar, som visas i bilden nedan.

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Kör nu följande Host Rules-kommandon för att skapa TOR-växeln och portarna.

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"

Som du kan se har TOR-switchen och portarna skapats och lagts till i fallskärmstopologin, och topologin kommer nu att se ut som bilden nedan.

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Kör nu följande Edge Rule-kommandon för att skapa en anslutning mellan TOR-switchen, port 1 och det offentliga gränssnittet för värd 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"

Kör följande kommandon för att skapa en länk mellan TOR-växelport 2 och värd 2:s offentliga gränssnitt

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"

Ägarskap och layer2-associationer skapas nu mellan TOR-switchen och porten, såväl som layer2-associationer mellan agenter och portar. Nu kommer den slutliga topologin att se ut som bilden nedan.

Lägga till en nod till Skydive-topologin manuellt via Skydive-klienten

Nu är de två värdarna/agenterna anslutna korrekt och du kan testa anslutningen eller skapa en kortaste vägfångst mellan de två värdarna.

PS Länk till ursprungliga inlägget

Vi söker personer som kan skriva inlägg om andra Skydive-funktioner.
Telegram chatt via skydive.network.

Källa: will.com

Lägg en kommentar