Skydive 是一款開源的即時網路拓撲和協定分析器。 它旨在提供一種全面的方法來了解網路基礎設施中發生的情況。
為了引起您的興趣,我將給您一些有關 Skydive 的螢幕截圖。 下面會有一篇介紹跳傘的文章。
郵政 ”
Skydive 透過接收來自 Skydive 代理程式的網路事件來顯示網路拓撲。 您是否想知道如何在拓撲圖中新增或顯示 Skydive 代理網路以外的網路元件或非網路物件(例如 TOR、資料儲存等)。使用 Node 規則 API,無需再擔心這一點。
從0.20版本開始,Skydive提供了節點規則API,可用來建立新節點和邊以及更新現有節點的元資料。 節點規則API分成兩個API:節點規則API和邊緣規則API。 節點規則 API 用於建立新節點並更新現有節點的元資料。 邊緣規則 API 用於在兩個節點之間建立邊界,即連接兩個節點。
在本部落格中,我們將看到兩個用例,其中之一是不屬於跳傘網路的網路元件。 第二個選項是非網路元件。 在此之前,我們將了解使用拓樸規則 API 的一些基本方法。
創建跳傘節點
要建立節點,您必須提供唯一的節點名稱和有效的節點類型。 您也可以提供一些附加選項。
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": ""
}
更新跳傘節點元數據
若要更新現有節點的元數據,您必須提供 gremlin 查詢來選擇要更新元資料的節點。 根據您的要求,您可以使用單節點規則更新一個或多個節點的元資料。
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')"
}
創建跳傘邊緣
建立邊時,必須指定來源節點、目的節點以及邊的連結類型;當建立子節點時,連結類型值必須為ownership;同樣,當建立連結類型layer2時,連結類型值必須為第2層。 您可以在兩個節點之間建立多個鏈接,但連結的類型必須不同。
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"
}
}
第一個用例
在本例中,我們將了解如何在跳傘拓撲中顯示非網路設備。 讓我們考慮一下我們有一個資料倉儲,需要在跳傘拓撲圖中顯示一些有用的元資料。
我們只需要建立一個節點規則即可將設備新增到拓撲中。 我們可以新增設備元資料作為建立命令的一部分,或稍後建立一個或多個更新節點規則命令。
執行下列主機規則指令,將儲存裝置新增至拓樸圖中。
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"
執行邊緣規則下方的指令,將建立的節點與宿主節點關聯起來。
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"
執行上述命令後,您現在可以在跳傘拓撲圖中看到帶有給定元資料的設備,如下圖所示。
第二個用例
在本例中,我們將了解如何新增不屬於跳傘網路的網路設備。 讓我們看一下這個例子。 我們有兩個跳傘代理程式在兩個不同的主機上,為了連接這兩個主機,我們需要一個 TOR 交換器。 儘管我們可以透過在設定檔中定義結構節點和連結來實現此目的,但讓我們看看如何使用拓樸規則 API 來實現相同的目的。
如果沒有 TOR 交換機,兩個代理將顯示為兩個不同的節點,沒有任何鏈接,如下圖所示。
現在執行下列主機規則命令來建立 TOR 交換器和連接埠。
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"
如您所見,TOR 交換器和連接埠已建立並新增至 skydive 拓撲中,拓撲現在如下圖所示。
現在執行以下 Edge Rule 指令在 TOR 交換器、連接埠 1 和主機 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"
執行以下命令在 TOR 交換器連接埠 2 和主機 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"
現在,在 TOR 交換器和連接埠之間以及代理和連接埠之間建立了所有權和第 2 層關聯。 現在最終的拓樸如下圖所示。
現在,兩個主機/代理程式已正確連接,您可以測試連接或建立兩個主機之間的最短路徑擷取。
PS 連結到
我們正在尋找可以撰寫有關其他跳傘功能的帖子的人。
來源: www.habr.com