瞻博網路-徽標Junos 中針對 AI/ML 工作負載的遙測
作者:沙利尼‧慕克吉

介紹

由於AI叢集流量需要高吞吐量、低延遲的無損網絡,因此AI網路的關鍵要素是監控資料的收集。 Junos Telemetry 可對關鍵效能指標進行精細監控,包括擁塞管理和流量負載平衡的閾值和計數器。 gRPC 會話支援遙測資料流。 gRPC 是一個基於 HTTP/2 傳輸建構的現代化、開源、高效能框架。它支援本機雙向流功能,並在請求標頭中包含靈活的自訂元資料。遙測的第一步是了解要收集哪些數據。然後我們可以以各種格式分析這些數據。一旦我們收集了數據,重要的是要以易於監控、做出決策和改進所提供服務的格式呈現它。在本文中,我們使用由 Telegraf、InfluxDB 和 Grafana 組成的遙測堆疊。此遙測堆疊使用推送模型收集資料。傳統的拉動模型是資源密集型的,需要人工幹預,並且可能在其收集的數據中包含資訊差距。推送模型透過非同步傳輸資料克服了這些限制。他們透過使用用戶友好的方式豐富數據 tags 和名字。一旦資料採用更易讀的格式,我們將其儲存在資料庫中並在互動式視覺化中使用它 web 用於分析網路的應用程式。數字。圖 1 向我們展示了該堆疊是如何設計用於高效的資料收集、儲存和視覺化,從網路設備將資料推送到收集器到顯示在儀表板上進行分析的資料。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 -

氬弧焊堆疊

我們使用 Ubuntu 伺服器來安裝所有軟體,包括 TIG 堆疊。

電報
為了收集數據,我們在運行 22.04.2 的 Ubuntu 伺服器上使用 Telegraf。本示範中執行的 Telegraf 版本是 1.28.5。
Telegraf 是一個插件驅動的伺服器代理,用於收集和報告指標。它使用處理器 plugins 豐富和標準化數據。輸出 plugins 用於將此資料傳送到各種資料儲存。在本文檔中我們使用兩個 plugins:一個用於 openconfig 感測器,另一個用於 Juniper 本機感測器。
InfluxDB
為了將資料儲存在時間序列資料庫中,我們使用 InfluxDB。 Telegraf 中的輸出插件將資料傳送到 InfluxDB,後者以高效的方式儲存資料。我們使用 V1.8,因為 V2 及更高版本沒有 CLI。
格拉法納
Grafana 用於可視化這些數據。 Grafana 從 InfluxDB 中提取數據,並允許使用者建立豐富的互動式儀表板。在這裡,我們運行的是版本 10.2.2。

交換器上的配置

為了實現這個堆疊,我們首先需要設定交換機,如圖 2 所示。登入 QFX 交換器並新增以下配置。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Switch

筆記: 此配置適用於實驗室/POC,因為密碼以明文形式傳輸。使用 SSL 可以避免這種情況。

環境

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - 環境

nginx
如果您無法公開託管 Grafana 的端口,則需要執行此操作。下一步是在 Ubuntu 伺服器上安裝 nginx 作為反向代理。安裝 nginx 後,將圖 4 中所示的行新增至「default」檔案中,並將該檔案從 /etc/nginx 移至 /etc/nginx/sites-enabled。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx1

確保調整防火牆以提供對 nginx 服務的完全存取權限,如圖 5 所示。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx2

安裝 nginx 並進行所需的更改後,我們應該能夠從 web 瀏覽器使用安裝了所有軟體的 Ubuntu 伺服器的 IP 位址。
Grafana 中有一個小故障,不允許您重設預設密碼。如果遇到此問題,請使用這些步驟。
在 Ubuntu 伺服器上執行 Grafana 設定密碼的步驟:

  • 到/var/lib/grafana/grafana.db
  • 安裝sqllite3
    o sudo apt install sqlite3
  • 在您的終端機上執行此命令
    o sqlite3 grafana.db
  •  Sqlite 命令提示字元開啟;執行以下查詢:
    >從登入='admin'的用戶中刪除
  • 重新啟動 grafana 並輸入 admin 作為使用者名稱和密碼。它提示輸入新密碼。

安裝所有軟體後,在 Telegraf 中建立設定文件,這將有助於從交換器中提取遙測資料並將其推送到 InfluxDB。

Openconfig 感測器插件

在 Ubuntu 伺服器上,編輯 /etc/telegraf/telegraf.conf 檔案以新增所有必要的 plugins 和感測器。對於 openconfig 感測器,我們使用圖 6 中所示的 gNMI 插件。數。
在訂閱節中,為此特定感測器添加唯一名稱「cpu」、感測器路徑以及從交換器獲取此資料的時間間隔。為所有開放配置感測器添加相同的插件inputs.gnmi和inputs.gnmi.subscription。 (圖6)

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx3

本機感測器插件

這是用於本機感測器的瞻博網路遙測介面插件。在同一個 telegraf.conf 檔案中,新增本機感測器插件 input.jti_openconfig_telemetry,其中欄位幾乎與 openconfig 相同。為每個感測器使用唯一的客戶端 ID;在這裡,我們使用“telegraf3”。此感測器在此使用的唯一名稱是「mem」(圖 7)。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx4

最後,新增一個輸出插件outputs.influxdb以將此感測器資料傳送到InfluxDB。此處,資料庫名為“telegraf”,使用者名為“influx”,密碼為“influxdb”(圖 8)。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx5

編輯 telegraf.conf 檔案後,重新啟動 telegraf 服務。現在,檢查 InfluxDB CLI 以確保是否為所有獨特的感測器建立了測量結果。輸入“influx”進入 InfluxDB CLI。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx6

如圖所示。 9.進入influxDB提示字元並使用資料庫「telegraf」。為感測器指定的所有唯一名稱均列為測量值。
要查看任何一項測量的輸出,只是為了確保電報文件正確並且感測器正常工作,請使用命令“select * from cpu limit 1”,如圖 10 所示。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx7

每次對 telegraf.conf 檔案進行更改時,請確保停止 InfluxDB,重新啟動 Telegraf,然後啟動 InfluxDB。
從瀏覽器登入 Grafana,並在確保正確收集資料後建立儀表板。
前往連接 > InfuxDB > 新增資料來源。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx8

  1. 為此資料來源命名。在這個演示中它是“test-1”。
  2.  在 HTTP 節下,使用 Ubuntu 伺服器 IP 和 8086 連接埠。
    Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx9
  3. 在 InfluxDB 詳細資訊中,使用相同的資料庫名稱“telegraf”,並提供 Ubuntu 伺服器的使用者名稱和密碼。
  4. 點擊儲存並測試。確保您看到訊息“成功”。
    Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Nginx10
  5. 成功新增資料來源後,請前往儀表板並點選新建。讓我們建立一些對於編輯器模式下的 AI/ML 工作負載至關重要的儀表板。

Examp感測器圖的文件

以下是前amp一些對於監控 AI/ML 網路至關重要的主要計數器的檔案。
百分比tagspine-0 上入口介面 et-0/0/1 的使用率
Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - 圖表

  • 選擇資料來源為 test-1。
  • 在 FROM 部分中,選擇測量作為「interface」。這是用於該感測器路徑的唯一名稱。
  • 在 WHERE 部分中,選擇設備::tag,並且在 tag value,選擇交換器的主機名,即spine1。
  • 在 SELECT 部分中,選擇您要監控的感知器分支;在這種情況下,請選擇「field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)」。現在在同一部分中,按一下「+」並新增此計算數學 (/50000000000 * 100)。我們基本上是在計算百分比tage 利用 400G 介面。
  • 確保格式為“時間序列”,並在“別名”部分中為圖形命名。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Graphs1任何佇列的峰值緩衝區佔用率

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Graphs2

  • 選擇資料來源為 test-1。
  • 在“FROM”部分中,選擇測量作為“緩衝區”。
  • 在 WHERE 部分中,需要填寫三個欄位。選擇設備::tag,並且在 tag value選擇交換器的主機名稱(即spine-1);並選擇 /cos/interfaces/interface/@name::tag 並選擇介面(即et-0/0/0);並選擇隊列,/cos/interfaces/interface/queues/queue/@queue::tag 並選擇隊列號4。
  • 在 SELECT 部分中,選擇您要監控的感知器分支;在本例中,選擇“field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)”。
  • 確保格式為“時間序列”,並在“別名”部分中為圖形命名。

您可以在同一個圖表上整理多個介面的數據,如圖 17 所示的 et-0/0/0、et-0/0/1、et-0/0/2 等。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - Graphs3

PFC 和 ECN 均值導數
Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - 衍生產品

若要尋找平均導數(某個時間範圍內的值的差異),請使用原始查詢模式。
這是我們用來在一秒鐘內找出 Spine-0 的 et-0/0/1 上兩個 PFC 值之間的平均導數的流入查詢。
SELECT導數(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM“interface”WHERE(“device”::tag = 'Spine-1') 和 $timeFilter GROUP BY 時間($interval)

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - ECN 類似

SELECT導數(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') 和 $timeFilter GROUP BY 時間($interval)

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - ECN1 類似

輸入資源錯誤均值導數

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - ECN2 類似

資源錯誤均值導數的原始查詢是:
SELECTderive(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') 和 $timeFilter GROUP BY 時間($interval)

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - ECN3 類似

尾部下降均值導數

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - ECN4 類似

尾部下降均值導數的原始查詢是:
SELECT導數(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM“buffer”WHERE(“device”::tag = 'Leaf-1' AND “/cos/interfaces/interface/@name”::tag ='et-0/0/0'和“/cos/interfaces/interface/queues/queue/@queue”::tag = '4') AND $timeFilter GROUP BY time($__interval) fill(null)
 CPU利用率

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - CPU 使用率

  • 選擇資料來源為 test-1。
  • 在 FROM 部分中,選擇測量“newcpu”
  • 在 WHERE 中,需要填寫三個欄位。選擇設備::tag 並在 tag 值選擇交換器的主機名稱(即spine-1)。並在/組件/組件/屬性/屬性/名稱:tag,然後在名稱中選擇 cpuutilization-total AND::tag 選擇 RE0。
  • 在「選擇」部分中,選擇要監控的感測器分支。在這種情況下,選擇“欄位(狀態/值)”。

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - CPU 使用率1

用於尋找多個介面上多個交換器尾部丟棄的非負導數的原始查詢(以位元/秒為單位)。
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (device::tag =~ /^Spine-[1-2]$/) 和 (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ 或 “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) AND $timeFilter GROUP BY time($__interval),device::tag 填充(空)

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - CPU 使用率2

這些是一些前任amp可以建立用於監控 AI/ML 網路的圖表檔案。

概括

本文說明了提取遙測資料並透過創建圖形將其視覺化的方法。本文特別討論了 AI/ML 感測器,包括原生感測器和開放配置感測器,但此設定可用於所有類型的感測器。我們還提供了您在建立設定時可能遇到的多個問題的解決方案。本文中描述的步驟和輸出特定於前面提到的 TIG 堆疊的版本。它可能會根據軟體版本、感測器和 Junos 版本而變化。

參考

適用於所有感測器選項的 Juniper Yang 資料模型瀏覽器
https://apps.juniper.net/ydm-explorer/
Openconfig 感測器的 Openconfig 論壇
https://www.openconfig.net/projects/models/

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 - 圖標

公司和銷售總部
瞻博網路公司
1133創新之路
Sunnyvale, CA 94089 美國
電話:888.JUNIPER (888.586.4737)
或+1.408.745.2000
傳真:+1.408.745.2100
www.juniper.net
亞太和歐洲、中東和非洲總部
瞻博網絡國際有限公司
波音大道 240 號
1119 PZ 史基浦-萊克
荷蘭阿姆斯特丹
電話:+31.207.125.700
傳真:+31.207.125.701
版權所有 2023 瞻博網路。 Inc. 保留所有權利。 Juniper Networks、Juniper Networks 標誌、Juniper、Junos 和其他商標是 Juniper Networks 的註冊商標。公司和/或其在美國和其他國家的附屬公司。其他名稱可能是其各自所有者的商標。瞻博網路對本文檔中的任何不準確之處不承擔任何責任。瞻博網路保留更改的權利。調整。轉讓或以其他方式修改本出版物,恕不另行通知。
發送回饋至: 設計中心評論@juniper.net V1.0/240807/ejm5-遙測-junos-ai-ml

文件/資源

Junos 中用於 AI ML 工作負載軟體的瞻博網路遙測 [pdf] 使用者指南
Junos for AI ML 工作負載軟體中的遙測、Junos for AI ML 工作負載軟體、AI ML 工作負載軟體、工作負載軟體、軟體

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *