Skydive është një analizues i topologjisë së rrjetit dhe protokolleve me kod të hapur në kohë reale. Ai synon të ofrojë një mënyrë gjithëpërfshirëse për të kuptuar se çfarë po ndodh në infrastrukturën rrjetore.
Për të tërhequr interesin tuaj, do të sjell disa skrinshot rreth Skydive. Pjesa tjetër më poshtë do të përmbajë një postim për hyrjen në Skydive.


Postimi "" në Habré.
Skydive shfaq topologjinë e rrjetit duke marrë ngjarje rrjeti nga agjentët Skydive. A keni pyetur ndonjëherë se si të shtoni ose të shfaqni në diagramin e topologjisë komponentët rrjetorë që janë jashtë rrjetit të agjentëve Skydive ose objekte jo rrjetore, si TOR, depo të dhënash, etj.? Mos u shqetësoni për këtë më, falë API-së së rregullit të nodit.
Duke filluar nga versioni 0.20, Skydive ofron API-në e rregullit të nodit, e cila mund të përdoret për të krijuar nodë të reja dhe skaje dhe për të përditësuar metadatën e nodëve ekzistues. API-të e rregullit të nodit janë të ndara në dy ndërfaqe: ndërfaqja e rregullit të nodit dhe ndërfaqja e rregullit të skajit. API i rregullit të nodit përdoret për të krijuar një nod të ri dhe për të përditësuar metadatën e një nodi ekzistues. API i rregullit të skajit përdoret për të krijuar një kufi midis dy nodëve, dmth. lidh dy nodë.
Në këtë blog do të shohim dy variante përdorimi, një prej të cilave është një komponent rrjeti që nuk është pjesë e rrjetit Skydive. Varianti i dytë është një komponent jo rrjetor. Para kësaj, do të shqyrtojmë disa mënyra kryesore për të përdorur API-të e rregullit të topologjisë.
Krijimi i një nodi Skydive
Për të krijuar një nod, nevojitet të specifikoni një emër unik të nodit dhe një lloj të pranueshëm nodi. Ju gjithashtu mund të ofroni disa parametra shtesë.
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": ""
}Përditësimi i Metadatave të Nodëve Skydive
Për të përditësuar metadatën e një nodi ekzistues, është e nevojshme të siguroni një pyetje në gjuhën gremlin për të zgjedhur nodët në të cilat dëshironi të përditësoni metadatën. Në përputhje me pyetjen tuaj, mund të përditësoni metadatën e një ose më shumë nodëve duke përdorur rregullin për një nod.
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')"
}Krijimi i skajdivit të skajdivit
Për të krijuar një skaj, është e nevojshme të specifikoni nyjat burimore dhe përfundimtare dhe llojin e lidhjes së skajit, për të krijuar një nyje fëmijë vlera e llojit të lidhjes duhet të jetë ownership, në mënyrë të ngjashme për krijimin e lidhjes nga lloji layer2 vlera e llojit të lidhjes duhet të jetë layer2. Mund të krijoni më shumë se një lidhje ndërmjet dy nyjave, por lloji i lidhjes duhet të jetë të ndryshëm.
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"
}
}Variant i parë i përdorimit
Në këtë rast, do të shqyrtojmë se si të tregojmë një pajisje jo-rete në topologjinë e skajdivit. Le të shqyrtojmë se kemi një magazinë të dhënash që duhet të paraqitet në diagramin topologjik të skajdivit me disa metadata të dobishme.
Na nevojitet të krijojmë një rregull nyje për të shtuar pajisjen në topologji. Mund të shtojmë metadata të pajisjes si pjesë e komandës create ose më vonë të krijojmë një ose më shumë komandat update node rule.
Ekzekutoni komandën e mëposhtme të rregullave të nyjës për të shtuar pajisjen e kujtesës në planin e topologjisë.
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"Ekzekutoni komandën e mëposhtme të rregullave të skajit për të lidhur nyjën e krijuar me nyjën e hostit.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"Pas komandave të mësipërme tani mund të shihni pajisjen e dukshme në diagramin e topologjisë skajdiv me metadat e caktuara, siç tregohet në figurën më poshtë.

Variant i dytë i përdorimit
Në këtë rast, do të shohim si të shtojmë një pajisje rrjeti që nuk është pjesë e rrjetit skydive. Le të shqyrtojmë këtë shembull. Ne kemi dy agjentë skydive që punojnë në dy hoste të ndryshme; për t'i lidhur këta dy hoste, na nevojitet një switch TOR. Edhe pse mund ta arrijmë këtë duke përcaktuar nyjat e strukturës dhe lidhjet në skedarin e konfigurimit, le të shohim se si mund ta bëjmë të njëjtën gjë me API-në e rregullave të topologjisë.
Pa switch-in TOR, dy agjentët do të duken si dy nyje të ndryshme pa asnjë lidhje, siç ilustrohet në figurën më poshtë.

Tani ekzekutoni komandat e mëposhtme të Rregullave të Nyjeve për të krijuar switch-in TOR dhe portat.
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"Siç shihni, switch-i TOR dhe portat janë krijuar dhe shtuar në topologjinë skydive, dhe tani topologjia do të duket siç ilustrohet në figurën më poshtë.

Tani ekzekutoni komandat e mëposhtme të Rregullës Edge për të krijuar një lidhje midis switch-it TOR, portit 1 dhe ndërfaqes publike të hostit 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"Ekzekutoni komandat e mëposhtme për të krijuar një lidhje midis switch-it TOR, portit 2 dhe ndërfaqes publike të hostit 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"Tani krijohen lidhjet ownership dhe layer2 midis switch-it TOR dhe portit, si dhe lidhjet layer2 midis agjentëve dhe portave. Tani topologjia përfundimtare do të duket siç ilustrohet në figurën më poshtë.

Tani dy hoste / agjentët janë lidhur siç duhet, dhe ju mund të kontrolloni lidhjen ose të krijoni një kapje të rrugës më të shkurtër midis dy hosteve.
P.S. Lidhja me
Po kërkohen njerëz që mund të shkruajnë postime për mundësi të tjera Skydive.
për skydive.network.
Burimi: habr.com
