Skydive è un analizzatore della topologia di rete e dei protocolli open-source in tempo reale. È progettato per fornire un modo completo per comprendere ciò che accade nell'infrastruttura di rete.
Per catturare il tuo interesse, presenterò un paio di screenshot su Skydive. Qui sotto ci sarà un post di introduzione a Skydive.


Post "" su Habr.
Skydive visualizza la topologia della rete ricevendo eventi di rete dagli agenti di Skydive. Ti sei mai chiesto come aggiungere o visualizzare nella mappa topologica componenti di rete che si trovano al di fuori della rete degli agenti di Skydive o oggetti non di rete, come TOR, archiviazione dati, ecc. Non preoccuparti più grazie all'API delle regole del nodo.
A partire dalla versione 0.20, Skydive fornisce l'API delle regole del nodo, che può essere utilizzata per creare nuovi nodi e archi e per aggiornare i metadati dei nodi esistenti. L'API delle regole del nodo è suddivisa in due interfacce API: l'interfaccia dell'API delle regole del nodo e l'API delle regole degli archi. L'API delle regole del nodo è utilizzata per creare un nuovo nodo e aggiornare i metadati di un nodo esistente. L'API delle regole degli archi è utilizzata per creare un confine tra due nodi, cioè collega due nodi.
In questo blog vedremo due casi d'uso, uno dei quali è un componente di rete che non fa parte della rete di skydive. Il secondo caso è un componente non di rete. Prima di questo, esamineremo alcuni modi fondamentali per utilizzare l'API delle regole di topologia.
Creazione di un nodo Skydive
Per creare un nodo, è necessario specificare un nome nodo unico e un tipo di nodo valido. Puoi anche fornire alcune opzioni aggiuntive.
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": ""
}Aggiornamento dei Metadati dei Noduli Skydive
Per aggiornare i metadati di un nodo esistente, è necessario fornire una query in linguaggio gremlin per selezionare i nodi nei quali si desidera aggiornare i metadati. In base alla tua query, puoi aggiornare i metadati di uno o più nodi utilizzando la regola di un nodo.
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')"
}Creazione di un arco Skydive
Per creare un arco è necessario specificare i nodi sorgente e destinazione e il tipo di relazione dell'arco; per la creazione di un nodo figlio, il tipo di relazione deve essere ownership e per la creazione di una relazione di tipo layer2, il tipo di relazione deve essere layer2. È possibile stabilire più di una relazione tra due nodi, ma il tipo di relazione deve essere diverso.
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"
}
}Primo caso d'uso
In questo caso vedremo come visualizzare un dispositivo non di rete nella topologia skydive. Immaginiamo di avere un data store che deve essere rappresentato nel diagramma topologico di skydive con alcune informazioni utili nel metadato.
Dobbiamo semplicemente creare una regola per i nodi per aggiungere il dispositivo alla topologia. Possiamo aggiungere i metadati del dispositivo come parte del comando di creazione o successivamente creare uno o più comandi di aggiornamento della regola del nodo.
Esegui il comando della regola del nodo riportato di seguito per aggiungere il dispositivo di memorizzazione allo schema della topologia.
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"Esegui il comando della regola dell'arco riportato di seguito per collegare il nodo creato al nodo host.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"Dopo i comandi sopra, ora puoi vedere il dispositivo visibile nello schema della topologia skydive con i metadati forniti, come mostrato nella figura sottostante.

Secondo caso d'uso
In questo caso vedremo come aggiungere un dispositivo di rete che non fa parte della rete skydive. Esaminiamo questo esempio. Abbiamo due agenti skydive che operano su due host diversi; per connettere questi due host abbiamo bisogno di uno switch TOR. Anche se possiamo raggiungere questo obiettivo definendo i nodi della topologia e i link nel file di configurazione, vediamo come possiamo fare lo stesso utilizzando l'API delle regole di topologia.
Senza lo switch TOR, i due agenti appariranno come due nodi distinti senza alcun link, come mostrato nell'immagine sottostante.

Ora eseguite i seguenti comandi delle Regole del nodo per creare uno switch TOR e porte.
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"Come puoi vedere, lo switch TOR e le porte sono stati creati e aggiunti alla topologia skydive, e ora la topologia apparirà così come mostrato nell'immagine sottostante.

Ora esegui i comandi delle Regole Edge riportati di seguito per creare un collegamento tra lo switch TOR, la porta 1 e l'interfaccia pubblica dell'host 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"Esegui i seguenti comandi per creare un collegamento tra lo switch TOR, la porta 2 e l'interfaccia pubblica dell'host 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"Ora vengono create le relazioni di ownership e layer2 tra lo switch TOR e la porta, così come le relazioni layer2 tra gli agenti e le porte. Ora la topologia finale apparirà così come mostrato nell'immagine sottostante.

Ora i due host / agenti sono correttamente collegati e puoi verificare la connessione o creare un capture del percorso più breve tra i due host.
P.S. Riferimento a
Si cercano persone che possano scrivere post su altre funzionalità di Skydive.
su skydive.network.
Fonte: habr.com
