AI/ML ワークロード向け Junos のテレメトリ
著者: シャリーニ・ムケルジー
導入
AI クラスター トラフィックには高スループットと低レイテンシのロスレス ネットワークが必要であるため、AI ネットワークの重要な要素は監視データの収集です。Junos Telemetry を使用すると、輻輳管理やトラフィック負荷分散のしきい値やカウンターなど、主要なパフォーマンス指標をきめ細かく監視できます。gRPC セッションは、テレメトリ データのストリーミングをサポートします。gRPC は、HTTP/2 トランスポート上に構築された最新のオープンソースの高パフォーマンス フレームワークです。ネイティブの双方向ストリーミング機能を強化し、リクエスト ヘッダーに柔軟なカスタム メタデータを含めます。テレメトリの最初のステップは、収集するデータを把握することです。その後、このデータをさまざまな形式で分析できます。データを収集したら、監視、意思決定、および提供されるサービスの改善が容易な形式でデータを提示することが重要です。このホワイト ペーパーでは、Telegraf、InfluxDB、および Grafana で構成されるテレメトリ スタックを使用します。このテレメトリ スタックは、プッシュ モデルを使用してデータを収集します。従来のプルモデルはリソースを大量に消費し、手動介入が必要で、収集したデータに情報ギャップが生じる可能性があります。プッシュモデルは、データを非同期で配信することでこれらの制限を克服します。ユーザーフレンドリーな tags データが読みやすい形式になったら、データベースに保存し、インタラクティブな視覚化で使用します。 web ネットワークを分析するためのアプリケーションです。図 1 は、ネットワーク デバイスがデータをコレクターにプッシュしてから、分析のためにダッシュボードに表示されるデータに至るまで、このスタックが効率的なデータ収集、保存、視覚化のためにどのように設計されているかを示しています。
TIGスタック
TIG スタックを含むすべてのソフトウェアをインストールするために、Ubuntu サーバーを使用しました。
テレグラフ
データを収集するために、22.04.2 を実行している Ubuntu サーバーで Telegraf を使用します。このデモで実行されている Telegraf のバージョンは 1.28.5 です。
Telegrafは、メトリックを収集してレポートするためのプラグイン駆動型サーバーエージェントです。プロセッサを使用します。 plugins データを充実させ、正規化します。出力 plugins さまざまなデータストアにこのデータを送信するために使用されます。このドキュメントでは、2つの plugins1 つは openconfig センサー用、もう 1 つは Juniper ネイティブ センサー用です。
インフルDB
時系列データベースにデータを保存するには、InfluxDB を使用します。Telegraf の出力プラグインはデータを InfluxDB に送信し、非常に効率的な方法で保存します。V1.8 以上に CLI が存在しないため、V2 を使用しています。
グラファナ
このデータを視覚化するために Grafana が使用されます。Grafana は InfluxDB からデータを取得し、ユーザーがリッチでインタラクティブなダッシュボードを作成できるようにします。ここでは、バージョン 10.2.2 を実行しています。
スイッチの設定
このスタックを実装するには、まず図 2 に示すようにスイッチを構成する必要があります。ポート 50051 を使用しました。ここでは任意のポートを使用できます。QFX スイッチにログインし、次の構成を追加します。
注記: この構成は、パスワードがクリアテキストで送信されるため、ラボ/POC 用です。これを回避するには、SSL を使用します。
環境
エンギンクス
これは、Grafana がホストされているポートを公開できない場合に必要です。次の手順では、Ubuntu サーバーに nginx をインストールして、リバース プロキシ エージェントとして機能させます。nginx がインストールされたら、図 4 に示す行を「default」ファイルに追加し、ファイルを /etc/nginx から /etc/nginx/sites-enabled に移動します。
図 5 に示すように、ファイアウォールが nginx サービスへのフルアクセスを許可するように調整されていることを確認します。
nginxがインストールされ、必要な変更が行われたら、Grafanaにアクセスできるはずです。 web すべてのソフトウェアがインストールされている Ubuntu サーバーの IP アドレスを使用して、ブラウザーにアクセスします。
Grafana には、デフォルトのパスワードをリセットできない小さな不具合があります。この問題が発生した場合は、次の手順を実行してください。
Grafana でパスワードを設定するために Ubuntu サーバーで実行する手順:
- /var/lib/grafana/grafana.dbに移動します
- sqllite3をインストールする
o sudo apt install sqlite3 - ターミナルでこのコマンドを実行します
o sqlite3 grafana.db - Sqlite コマンド プロンプトが開きます。次のクエリを実行します。
>ログインが「admin」のユーザーから削除 - grafana を再起動し、ユーザー名とパスワードとして admin と入力します。新しいパスワードの入力を求められます。
すべてのソフトウェアがインストールされたら、スイッチからテレメトリ データを取得して InfluxDB にプッシュするのに役立つ設定ファイルを Telegraf で作成します。
Openconfig センサープラグイン
Ubuntuサーバーで、/etc/telegraf/telegraf.confファイルを編集して、必要なすべての設定を追加します。 plugins およびセンサー。openconfig センサーの場合、図 6 に示す gNMI プラグインを使用します。デモ用に、ホスト名「spine1」、gRPC に使用するポート番号「50051」、スイッチのユーザー名とパスワード、および失敗した場合にリダイヤルする秒数を追加します。
サブスクリプション スタンザで、この特定のセンサーの一意の名前「cpu」、センサー パス、およびスイッチからこのデータを取得する時間間隔を追加します。すべてのオープン構成センサーに同じプラグイン inputs.gnmi と inputs.gnmi.subscription を追加します。(図 6)
ネイティブセンサープラグイン
これは、ネイティブ センサーに使用される Juniper テレメトリ インターフェイス プラグインです。同じ telegraf.conf ファイルに、ネイティブ センサー プラグイン inputs.jti_openconfig_telemetry を追加します。フィールドは openconfig とほぼ同じです。センサーごとに一意のクライアント ID を使用します。ここでは、「telegraf3」を使用します。このセンサーに使用される一意の名前は「mem」です (図 7)。
最後に、出力プラグインoutputs.influxdbを追加して、このセンサーデータをInfluxDBに送信します。ここでは、データベースの名前は「telegraf」、ユーザー名は「influx」、パスワードは「influxdb」です(図8)。
telegraf.conf ファイルを編集したら、telegraf サービスを再起動します。次に、InfluxDB CLI でチェックインして、すべての一意のセンサーに対して測定値が作成されているかどうかを確認します。「influx」と入力して、InfluxDB CLI に入ります。
図 9 に示すように、influxDB プロンプトを入力し、データベース「telegraf」を使用します。センサーに与えられたすべての一意の名前が測定値としてリストされます。
いずれかの測定の出力を表示し、telegraf ファイルが正しく、センサーが動作していることを確認するには、図 1 に示すように、コマンド「select * from cpu limit 10」を使用します。
telegraf.conf ファイルに変更を加えるたびに、必ず InfluxDB を停止し、Telegraf を再起動してから InfluxDB を起動してください。
ブラウザから Grafana にログオンし、データが正しく収集されていることを確認した後、ダッシュボードを作成します。
[接続] > [InfuxDB] > [新しいデータ ソースの追加] に移動します。
- このデータ ソースに名前を付けます。このデモでは「test-1」です。
- HTTP スタンザの下で、Ubuntu サーバーの IP と 8086 ポートを使用します。
- InfluxDB の詳細では、同じデータベース名「telegraf」を使用し、Ubuntu サーバーのユーザー名とパスワードを入力します。
- 「保存してテスト」をクリックします。「成功」というメッセージが表示されていることを確認します。
- データ ソースが正常に追加されたら、[ダッシュボード] に移動して [新規] をクリックします。エディター モードで AI/ML ワークロードに不可欠なダッシュボードをいくつか作成してみましょう。
Exampセンサーグラフの
以下は例ですampAI/ML ネットワークの監視に不可欠ないくつかの主要なカウンターのリストです。
パーセンtagスパイン0の入力インターフェイスet-0/0/1のe使用率
- データ ソースとして test-1 を選択します。
- FROM セクションで、測定として「インターフェース」を選択します。これは、このセンサー パスに使用される一意の名前です。
- WHEREセクションで、デバイスを選択します::tag、そして tag 値として、スイッチのホスト名、つまり spine1 を選択します。
- SELECTセクションで、監視したいセンサーブランチを選択します。この場合は「field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)」を選択します。同じセクションで、「+」をクリックして、この計算式(/50000000000 * 100)を追加します。基本的に、パーセンテージを計算します。tag400G インターフェースの利用。
- FORMAT が「time-series」であることを確認し、ALIAS セクションでグラフに名前を付けます。
キューのピークバッファ占有率
- データ ソースとして test-1 を選択します。
- 「FROM」セクションで、測定値として「バッファ」を選択します。
- WHERE セクションには、入力するフィールドが 3 つあります。デバイスを選択します::tag、そして tag 値 スイッチのホスト名 (例: 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)」を選択します。
- FORMAT が「time-series」であることを確認し、ALIAS セクションでグラフに名前を付けます。
図 17 に示すように、et-0/0/0、et-0/0/1、et-0/0/2 などの複数のインターフェースのデータを同じグラフ上で照合できます。
PFCとECNの平均導関数
平均導関数(時間範囲内の値の差)を見つけるには、生のクエリ モードを使用します。
これは、Spine-0 の et-0/0/1 上の XNUMX 秒間の XNUMX つの PFC 値間の平均微分を求めるために使用した流入クエリです。
SELECT 派生語(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') AND $timeFilter GROUP BY time($interval)
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') AND $timeFilter GROUP BY time($interval)
入力リソースエラーは派生的な意味を持つ
リソース エラーの平均導関数の生のクエリは次のとおりです。
SELECT 派生語(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') AND $timeFilter GROUP BY time($interval)
テールドロップは微分平均
テールドロップ平均導関数の生のクエリは次のとおりです。
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使用率
- データ ソースとして test-1 を選択します。
- FROMセクションで、測定値として「newcpu」を選択します。
- WHERE には、入力するフィールドが 3 つあります。デバイスを選択します::tag そして、 tag 値にはスイッチのホスト名 (例: spine-1) を選択します。また、/components/component/properties/property/name で次の操作を実行します。tag、cpuutilization-total AND in name:: を選択します。tag RE0を選択します。
- SELECTセクションで、監視するセンサーブランチを選択します。この場合、「フィールド(状態/値)」を選択します。
複数のインターフェイス上の複数のスイッチのテール ドロップの非負導関数をビット/秒単位で検索するための生のクエリ。
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 fill(null)
これらは、元ampAI/ML ネットワークを監視するために作成できるグラフの一覧。
まとめ
このホワイト ペーパーでは、テレメトリ データを取得し、グラフを作成して視覚化する方法について説明します。このホワイト ペーパーでは、ネイティブとオープン構成の両方の AI/ML センサーについて具体的に説明していますが、セットアップはあらゆる種類のセンサーに使用できます。また、セットアップの作成中に発生する可能性のある複数の問題に対する解決策も含まれています。このホワイト ペーパーで説明されている手順と出力は、前述の TIG スタックのバージョンに固有のものです。ソフトウェア、センサー、Junos のバージョンによって変更される可能性があります。
参考文献
すべてのセンサー オプションに対応する Juniper Yang データ モデル エクスプローラー
https://apps.juniper.net/ydm-explorer/
Openconfig センサーの Openconfig フォーラム
https://www.openconfig.net/projects/models/
コーポレート・営業本部
ジュニパーネットワークス株式会社
1133イノベーションウェイ
Sunnyvale、CA 94089 USA
電話: 888. JUNIPER (888.586.4737)
または+1.408.745.2000
ファックス: +1.408.745.2100
www.juniper.net
APACおよびEMEA本社
ジュニパーネットワークス インターナショナル BV
ボーイング アベニュー 240
1119 PZ スキポール ライク
アムステルダム、オランダ
電話: +31.207.125.700
ファックス: +31.207.125.701
Copyright 2023 Juniper Networks. Inc. すべての権利を留保します。Juniper Networks、Juniper Networks ロゴ、Juniper、Junos、およびその他の商標は、米国およびその他の国における Juniper Networks. inc. および/またはその関連会社の登録商標です。その他の名前は、それぞれの所有者の商標である可能性があります。Juniper Networks は、本書の不正確な内容について一切責任を負いません。Juniper Networks は、予告なく本書を変更、修正、譲渡、または改訂する権利を留保します。
フィードバックの送信先: デザインセンターコメント@juniper.net V1.0/240807/ejm5-テレメトリ-junos-ai-ml
ドキュメント / リソース
![]() |
Juniper NETWORKS AI ML ワークロード向け Junos テレメトリ ソフトウェア [pdf] ユーザーガイド Junos の AI ML ワークロード ソフトウェア向けテレメトリ、Junos の AI ML ワークロード ソフトウェア向け、AI ML ワークロード ソフトウェア向け、ワークロード ソフトウェア向け、ソフトウェア向け |