A Skydive egy valós idejű hálózati és protokoll topológia elemző nyílt forráskódú szoftver. Célja, hogy átfogó módot nyújtson a hálózati infrastruktúra eseményeinek megértésére.
Az érdeklődése érdekében bemutatok néhány képernyőképet a Skydive-ról. Az alábbiakban egy bejegyzés lesz a Skydive bevezetéséről.


Bejegyzés "" a Habr-on.
A Skydive a hálózati események megjelenítésével ábrázolja a hálózati topológiát a Skydive ügynököktől. Valaha is azon töprengtél, hogyan lehet hozzáadni vagy megjeleníteni a topológiai diagramon azokat a hálózati komponenseket, amelyek nem részei a Skydive ügynöki hálózatának, vagy nem hálózati objektumokat, mint például TOR, adattároló stb.? Már nem kell emiatt aggódni, hála a Node rule API-nak.
A 0.20 verziótól kezdve a Skydive Node rule API-t kínál, amely új csomópontok és élek létrehozására és meglévő csomópontok metadatainak frissítésére használható. A Node rule API két API interfészre van osztva: csomópont szabály API és él szabály API. A csomópont szabály API új csomópont létrehozására és a meglévő csomópont metadatáinak frissítésére szolgál. Az él szabály API két csomópont közötti határ létrehozására szolgál, azaz összeköti a két csomópontot.
Ebben a blogban két felhasználási lehetőséget fogunk megvizsgálni, az egyik egy hálózati komponens, amely nem részese a skydive hálózatának. A második lehetőség – nem hálózati komponens. Ezt megelőzően néhány alapvető módszert fogunk áttekinteni a topológia szabály API használatára.
Skydive csomópont létrehozása
Csomópont létrehozásához meg kell adni egy egyedi csomópontnevet és egy érvényes csomóponttípust. Ezenkívül néhány további paramétert is megadhatsz.
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 Csomópont Metadatáinak Frissítése
A meglévő csomópont metadatáinak frissítéséhez meg kell adni egy gremlin nyelvű lekérdezést a csomópontok kiválasztásához, amelyekben frissíteni szeretnéd a metadatákat. A lekérdezésed szerint egy vagy több csomópont metadatáját frissítheted egy egységes csomópont szabályozása révén.
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 élrendszer élek létrehozása
Él létrehozásához meg kell adni a forrás- és célcsomópontokat, valamint az él típusát. Gyermekcsomópont létrehozásához a kapcsolati típus értéke ownership kell, hogy legyen. Hasonlóan, ha layer2 típusú kapcsolatot hozunk létre, a kapcsolati típusnak layer2-nek kell lennie. Két csomópont között több kapcsolatot is létrehozhat, de a kapcsolati típusnak eltérőnek kell lennie.
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"
}
}Első használati lehetőség
Ebben az esetben azt fogjuk megvizsgálni, hogyan lehet bemutatni a nem hálózati eszközt a skydive topológiában. Tegyük fel, hogy van egy adattárolónk, amelyet meg kell jeleníteni a skydive topológiai diagramján néhány hasznos metaadat mellett.
Csak annyira van szükség, hogy létrehozzunk egy csomóponti szabályt az eszköz hozzáadásához a topológiához. Az eszköz metaadatait a create parancs részeként vagy később egy vagy több update node rule parancs létrehozásával adhatjuk meg.
Futtassa az alábbi csomóponti szabály parancsot az adattároló hozzáadásához a topológiai sémához.
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"Futtassa az alábbi él szabály parancsot a létrehozott csomópont összekapcsolásához a gazda csomóponttal.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"A fenti parancsok után most láthatja, hogy az eszköz megjelenik a skydive topológiai sémájában a megadott metaadatokkal, ahogyan az az alábbi ábrán látható.

Második használati lehetőség
Ebben az esetben láthatjuk, hogyan adhatunk hozzá egy hálózati eszközt, amely nem része a skydive hálózatnak. Nézzük meg ezt a példát. Két skydive ügynökünk van, amelyek két különböző hoszton futnak; ezek összekapcsolásához TOR switch szükséges. Még ha ezt el is érjük a struktúrák és hivatkozások csomagfájljában való definiálásával, nézzük meg, hogyan végezhetjük el ugyanezt az API topológiás szabályaival.
TOR switch nélkül a két ügynök két különálló csomópontnak tűnik, amelyeken nincsenek hivatkozások, ahogyan az az alábbi képen látható.

Most futtassa az alábbi csomópont-szabályokat a TOR switch és a portok létrehozásához.
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"Ahogy látja, a TOR switch és a portok létre lettek hozva és hozzá lettek adva a skydive topológiához, és a topológia most így néz ki, ahogyan az az alábbi képen látható.

Most futtassa az alábbi Edge Rule parancsokat a TOR switch, az 1-es port és az 1-es hoszt publikus interfésze közötti kapcsolat létrehozásához.
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"Futtasson le az alábbi parancsokat a TOR switch, a 2-es port és a 2-es hoszt publikus interfésze közötti kapcsolat létrehozásához.
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"Most ownership és layer2 kapcsolatok jönnek létre a TOR switch és a port között, valamint layer2 kapcsolatok az ügynökök és a portok között. Most a végső topológia így néz ki, ahogyan az az alábbi képen látható.

Most már a két hoszt/ügynök megfelelően csatlakozik, és ellenőrizheti a kapcsolatot vagy létrehozhat egy legrövidebb útvonalat a két hoszt között.
P.S. Hivatkozás az
Olyan embereket keresünk, akik posztokat írhatnak a Skydive egyéb lehetőségeiről.
a skydive.network-höz.
Forrás: habr.com
