Skydive is een open source, real-time netwerktopologie en protocolanalysator. Het is bedoeld om een alomvattende manier te bieden om te begrijpen wat er gebeurt in een netwerkinfrastructuur.
Om je te interesseren, geef ik je een paar screenshots over Skydive. Hieronder zal een bericht verschijnen over een introductie tot Skydive.
Na "
Skydive geeft de netwerktopologie weer door netwerkgebeurtenissen van Skydive-agenten te ontvangen. Heeft u zich ooit afgevraagd hoe u netwerkcomponenten kunt toevoegen of weergeven in een topologiediagram die zich buiten het Skydive-agentnetwerk of niet-netwerkobjecten zoals TOR, gegevensopslag, enz. bevinden. U hoeft zich daar geen zorgen meer over te maken dankzij de Node rule API.
Sinds versie 0.20 biedt Skydive een Node rule API die kan worden gebruikt om nieuwe knooppunten en randen te creëren en om de metagegevens van bestaande knooppunten bij te werken. De knooppuntregel-API is verdeeld in twee API's: de knooppuntregel-API en de edge-regel-API. De Node Rule API wordt gebruikt om een nieuw knooppunt te maken en de metagegevens van een bestaand knooppunt bij te werken. De edge rule API wordt gebruikt om een grens tussen twee knooppunten te creëren, d.w.z. verbindt twee knooppunten.
In deze blog zullen we twee use cases zien, waarvan er één een netwerkcomponent is die geen deel uitmaakt van het skydive-netwerk. De tweede optie is een niet-netwerkcomponent. Daarvoor zullen we enkele basismanieren bekijken om de Topology Rules API te gebruiken.
Een Skydive-knooppunt maken
Om een knooppunt te maken, moet u een unieke knooppuntnaam en een geldig knooppunttype opgeven. U kunt ook enkele extra opties opgeven.
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": ""
}
Metagegevens van Skydive-knooppunten bijwerken
Om de metagegevens van een bestaand knooppunt bij te werken, moet u een Gremlin-query opgeven om de knooppunten te selecteren waarop u de metagegevens wilt bijwerken. Op uw verzoek kunt u de metagegevens van een of meer knooppunten bijwerken met behulp van één knooppuntregel.
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')"
}
Een Skydive-rand creëren
Om een rand te maken, moet u de bron- en bestemmingsknooppunten en het linktype van de rand specificeren; om een onderliggend knooppunt te maken, moet de waarde van het linktype eigendom zijn; op dezelfde manier moet, om een linktypelaag2 te maken, de waarde van het linktype zijn laag2. U kunt meer dan één koppeling tussen twee knooppunten maken, maar het type koppeling moet verschillend zijn.
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"
}
}
Eerste gebruikscasus
In dit geval zullen we bekijken hoe we een niet-netwerkapparaat in de skydive-topologie kunnen weergeven. Laten we bedenken dat we een datawarehouse hebben dat moet worden weergegeven in een skydive-topologiediagram met enkele nuttige metagegevens.
We hoeven alleen maar een knooppuntregel te maken om het apparaat aan de topologie toe te voegen. We kunnen metagegevens van het apparaat toevoegen als onderdeel van de opdracht Create, of later een of meer regelopdrachten voor het bijwerken van knooppunten maken.
Voer de volgende hostregelopdracht uit om een opslagapparaat aan het topologiediagram toe te voegen.
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"
Voer de opdracht uit onder de randregel om het gemaakte knooppunt te koppelen aan het hostknooppunt.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"
Na de bovenstaande opdrachten kun je het apparaat nu zichtbaar zien in het skydive-topologiediagram met de gegeven metagegevens, zoals weergegeven in de onderstaande afbeelding.
Tweede gebruiksscenario
In dit geval zullen we zien hoe u een netwerkapparaat kunt toevoegen dat geen deel uitmaakt van het skydive-netwerk. Laten we naar dit voorbeeld kijken. We hebben twee skydive-agents die op twee verschillende hosts draaien. Om deze twee hosts met elkaar te verbinden hebben we een TOR-switch nodig. Ook al kunnen we dit bereiken door structuurknooppunten en koppelingen in een configuratiebestand te definiëren, laten we eens kijken hoe we hetzelfde kunnen doen met behulp van de Topology Rules API.
Zonder een TOR-schakelaar verschijnen de twee agenten als twee verschillende knooppunten zonder enige koppeling, zoals weergegeven in de onderstaande afbeelding.
Voer nu de volgende Host Rules-opdrachten uit om de TOR-switch en poorten te maken.
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"
Zoals u kunt zien, zijn de TOR-switch en poorten gemaakt en toegevoegd aan de skydive-topologie, en de topologie zal er nu uitzien als de onderstaande afbeelding.
Voer nu de volgende Edge Rule-opdrachten uit om een verbinding tot stand te brengen tussen de TOR-switch, poort 1 en de openbare interface van 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"
Voer de volgende opdrachten uit om een koppeling te maken tussen TOR-switchpoort 2 en de openbare interface van 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"
Nu worden eigendoms- en laag2-koppelingen gemaakt tussen de TOR-switch en de poort, evenals laag2-koppelingen tussen agenten en poorten. Nu zal de uiteindelijke topologie er uitzien als de onderstaande afbeelding.
Nu zijn de twee hosts/agenten correct verbonden en kunt u de verbinding testen of een kortste padregistratie tussen de twee hosts maken.
PS-link naar
We zijn op zoek naar mensen die berichten kunnen schrijven over andere Skydive-functies.
Bron: www.habr.com