Skydive — to je analizator mrežne topologije i protokola s otvorenim kodom u stvarnom vremenu. Njegov cilj je pružiti sveobuhvatan način da se razumije što se događa u mrežnoj infrastrukturi.
Da bih vas zainteresirao, ispričat ću vam nekoliko stvari o Skydiveu. Ispod će biti post o uvodu u Skydive.


Post „“ na Habré.
Skydive prikazuje mrežnu topologiju, dobivajući mrežne događaje od Skydive agenata. Jeste li se ikada pitali kako dodati ili prikazati na dijagramu topologije mrežne komponente koje nisu unutar Skydive agenstke mreže ili ne-mrežne objekte, poput TOR-a, skladišta podataka itd.? Ne brinite više o tome, zahvaljujući Node rule API-ju.
Počevši od verzije 0.20, Skydive pruža Node rule API koji se može koristiti za stvaranje novih čvorova i rubova te za ažuriranje metapodataka postojećih čvorova. Node rule API je podijeljen na dva API sučelja: API sučelje pravila čvora i API sučelje pravila ruba. API pravila čvora se koristi za stvaranje novog čvora i ažuriranje metapodataka postojećeg čvora. API pravila ruba se koristi za stvaranje veze između dva čvora, tj. povezuje dva čvora.
U ovom blogu vidjet ćemo dva slučaja upotrebe, od kojih je jedan mrežna komponenta koja nije dio Skydive mreže. Druga opcija je ne-mrežna komponenta. Prije toga, razmotrit ćemo nekoliko osnovnih načina korištenja API pravila topologije.
Stvaranje čvora Skydive
Da biste stvorili čvor, potrebno je navesti jedinstveno ime čvora i dopušteni tip čvora. Također možete pružiti nekoliko dodatnih parametara.
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": ""
}Ažuriranje metapodataka čvorova Skydive
Da biste ažurirali metapodatke postojećeg čvora, potrebno je pružiti upit na jeziku gremlin za izbor čvorova u kojima želite ažurirati metapodatke. Ovisno o vašem upitu, možete ažurirati metapodatke jednog ili više čvorova koristeći pravilo jednog čvora.
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')"
}Kreiranje ruba Skydive
Za izradu ruba potrebno je navesti početne i završne čvorove te tip veze ruba. Za stvaranje podčvora, vrijednost tipa veze treba biti ownership, a za stvaranje veze tipa layer2, tip veze treba biti layer2. Možete stvoriti više od jedne veze između dva čvora, ali tip veze mora biti različit.
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"
}
}Prvi primjer upotrebe
U ovom slučaju razmotrit ćemo kako prikazati ne-mrežni uređaj u topologiji skydive. Pogledajmo da imamo skladište podataka koje treba prikazati u topološkoj dijagramu skydive s korisnim metapodacima.
Jednostavno trebamo stvoriti pravilo čvora kako bismo dodali uređaj u topologiju. Možemo dodati metapodatke uređaja kao dio naredbe create ili kasnije stvoriti jednu ili više naredbi update node rule.
Izvršite slijedeću naredbu pravila čvora kako biste dodali uređaj za pohranu u shemu topologije.
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"Izvršite dolje navedenu naredbu pravila ruba kako biste povezali stvoreni čvor s čvorom domaćina.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"Nakon gorenavedenih naredbi, sada možete vidjeti uređaj vidljiv u shemi topologije skydive s zadanim metapodacima, kao što je prikazano na slici ispod.

Drugi primjer upotrebe
U ovom slučaju, vidjet ćemo kako dodati mrežni uređaj koji nije dio skydive mreže. Razmotrimo ovaj primjer. Imamo dva skydive agenta koja rade na dva različita hosta, a za povezivanje ta dva hosta potreban nam je TOR switch. Čak i ako to možemo postići definirajući čvorove strukture i veze u konfiguracijskoj datoteci, hajde da vidimo kako to možemo učiniti pomoću API pravila topologije.
Bez TOR switcha, dva agenta će izgledati kao dva različita čvora bez ikakvih veza, kao što je prikazano na slici ispod.

Sada izvršite sljedeće naredbe node pravila kako biste stvorili TOR switch i portove.
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"Kao što vidite, TOR switch i portovi su stvoreni i dodani u skydive topologiju, a sada će topologija izgledati ovako kao što je prikazano na slici ispod.

Sada izvršite sljedeće naredbe Edge Rule kako biste stvorili vezu između TOR switcha, porta 1 i javnog sučelja hosta 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"Izvršite sljedeće naredbe kako biste stvorili vezu između TOR switcha, porta 2 i javnog sučelja hosta 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"Sada se stvaraju veze ownership i layer2 između TOR switcha i porta, kao i veze layer2 između agenata i portova. Sada će konačna topologija izgledati ovako kao što je prikazano na slici ispod.

Sada su dva hosta / agenta ispravno povezana, a možete provjeriti vezu ili stvoriti hvatanje najkraćeg puta između dva hosta.
P.S. Link na
Tražimo osobe koje bi mogle pisati postove o drugim mogućnostima Skydive.
o skydive.network.
Izvor: habr.com
