JunosでNETCONFプロキシテレメトリセンサーを設定する
Junos Telemetry Streaming を使用すると、XML プロキシ機能を利用して、利用可能なあらゆる状態情報をテレメトリ センサーに変換できます。NETCONF XML 管理プロトコルと Junos XML API は、サポートされているすべての Junos OS 運用要求に対するすべてのオプションを完全に文書化します。XMLプロキシセンサーを設定すると、NETCONFの「取得」リモートプロシージャコール(RPC)を介してデータにアクセスできるようになります。
このタスクでは、Junos OS の動作モード コマンドの出力をストリーミングする方法を示します。
広範囲または詳細な出力を含むJunos OS操作コマンド、または出力の生成が遅い YANG ファイルにマッピングされる YANG ファイルは使用しないことを推奨します。YANG ファイルでは、顕著な遅延を伴うコマンドは避けてください。このようなコマンドを含めると、他の xmlproxyd センサーや xmlproxyd のパフォーマンスに影響を与える可能性があります。
一部の運用モードコマンドからの出力は動的であり、その詳細度は設定やハードウェアなどの要因によって異なります。このようなコマンドの例には、 show interfaces、 show route、 show arp、 show bfd、 show bgp、および show ddos-protection のバリエーションが含まれます。
コマンドの詳細レベルを確認するには、 command-name| display xml | count コマンドを発行します。行数が 4000 行の値を超える場合、このコマンドは XML プロキシー・ストリーミングには推奨されません。この値は、内部ベースラインに基づく近似値です。デバイスの種類、デバイスの処理能力、既存のCPU負荷など、さまざまな要因によってこれが少なくなる可能性があります。したがって、この機能は、デバイスのパフォーマンスに基づいて慎重に使用する必要があります。
Junos OS または Junos OS Evolved 動作モード コマンドにマッピングされた YANG ファイルを使用する前に コマンド command-name| display xml を発行して、コマンドが有効な XML 出力を生成し、無効なタグ、データ、またはフォーマットが含まれていないことを確認できます。
詳細コマンドにマッピングされた YANG ファイルを使用すると、次の 1 つ以上の結果になります。
-
xmlproxyd プロセスの CPU 使用率は高いままです。xmlproxyd でトレースが有効になっている場合、CPU 使用率はさらに高くなります。
-
xmlproxyd プロセスのメモリ使用率の増加。
-
xmlproxyd プロセスの状態には、コマンドの出力が冗長であり、xmlproxyd がコマンドのリモートプロシージャーコール (RPC) の出力の読み取りにかなりの時間を費やしていることを示す
sbwaitが表示される場合があります。 -
xmlproxyd センサー・データはラップを完了しません。
-
xmlproxyd は、センサーのデータの一部をストリーミングするか、まったくストリーミングしません。
-
xmlproxyd は、レポート間隔サイクルを見逃します。コマンドの詳細な出力のために間隔が重複し始め、その結果、xmlproxyd のセンサー ストリーミング データが遅くなったり遅れたりします。
-
verbose コマンドの RPC を提供するプロセスまたはアプリケーションでは、CPU 数が多くなったり、メイン タスクの実行に遅延が発生したりする場合があります。この動作は、プロセスまたはアプリケーションが、詳細な出力を持つ RPC の提供でビジー状態である場合に発生します。
このタスクには次のものが必要です。
-
Junos OS リリース 17.3R2 以降で動作する MXシリーズ、vMX シリーズ、または PTXシリーズ ルーター。
-
テレメトリ センサーの適切な動作を検証するための OpenNTI などのテレメトリ データ受信機。
このタスクでは、Junos OSコマンド show system usersの内容をストリーミングします。
show system users(vMXシリーズ)
user@switch> show system users USER TTY FROM LOGIN@ IDLE WHAT user1 pts/0 172.31.12.36 12:40PM 39 -cli (cli) user2 pts/1 172,16.03.25 3:01AM - -cli (cli)
show system users出力には、現在ログインしているユーザーの予想されるリストに加えて、平均システム負荷が1分、5分、15分と表示されます。負荷平均は、show system users | display xmlコマンドを使用して出力フィールドの XML タグを表示することで確認できます。以下の XML タグ付け出力の <load-average-1>、<load-average-5>、および <load-average-15> を参照してください。
user@switch> show system users | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/17.4R1/junos">
<system-users-information xmlns="http://xml.juniper.net/junos/17.4R1/junos">
<uptime-information>
<date-time junos:seconds="1520170982">1:43PM</date-time>
<up-time junos:seconds="86460">1 day, 40 mins</up-time>
<active-user-count junos:format="2 users">2</active-user-count>
<load-average-1>0.70</load-average-1>
<load-average-5>0.58</load-average-5>
<load-average-15>0.55</load-average-15>
<user-table>
<user-entry>
<user>root</user>
<tty>pts/0</tty>
<from>172.21.0.1</from>
<login-time junos:seconds="1520167202">12:40PM</login-time>
<idle-time junos:seconds="0">-</idle-time>
<command>cli</command>
</user-entry>
<user-entry>
<user>mwiget</user>
<tty>pts/1</tty>
<from>66.129.241.10</from>
<login-time junos:seconds="1520170862">1:41PM</login-time>
<idle-time junos:seconds="60">1</idle-time>
<command>cli</command>
</user-entry>
</user-table>
</uptime-information>
</system-users-information>
<cli>
<banner></banner>
</cli>
</rpc-reply>
上記の出力に示されている uptime-information タグは、 date-time、 up-time、 active-user-count、 load-average-1などのリーフを含むコンテナです。次に、このコンテナの YANG ファイルの例を示します。
container uptime-information {
dr:source "uptime-information"; // Exact name of the XML tag
leaf date-time { // YANG model leaf
type string; // Type of value
dr:source date-time; // Exact name of the XML tag
}
leaf up-time { // YANG model leaf
type string; // Type of value
dr:source up-time; // Exact name of the XML tag
}
leaf active-user-count { // YANG model leaf
type int32; // Type of value
dr:source active-user-count; // Exact name of the XML tag
}
leaf load-average-1 { // YANG model leaf
type string; // Type of value
dr:source load-average-1; // Exact name of the XML tag
}
...
uptime-informationタグには、ユーザーエントリのリストを含むuser-tableという名前の別のコンテナもあります。
次に、このコンテナの YANG ファイルの例を示します。
container user-table { // "user-table" container which contains list of user-entry
dr:source "user-table"; // Exact name of the XML tag
list user-entry { // "user-entry" list which contains the users' details in form of leafs
key "user"; // Key for the list "user-entry" which is a leaf in the list "user-entry"
dr:source "user-entry"; // Source of the list "user-entry" which is the exact name of the XML tag
leaf user { // YANG model leaf
dr:source user; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
leaf tty { // YANG model leaf
dr:source tty; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
leaf from { // YANG model leaf
dr:source from; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
leaf login-time { // YANG model leaf
dr:source login-time; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
leaf idle-time { // YANG model leaf
dr:source idle-time; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
leaf command { // YANG model leaf
dr:source command; // A leaf in the list "user-entry", exact name of the XML tag
type string; // Type of value
}
}
}
ユーザ定義の YANG ファイルの作成
YANG ファイルでは、実行する Junos CLI コマンド、センサーが配置されるリソース パス、一致する XML タグから取得されるキーと値のペアが定義されます。
Junos OS 用のカスタム YANG ファイルは、RFC 6020 YANG 1.0 YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF) および RFC 7950 The YANG 1.1 Data Modeling Language で定義された YANG 言語構文に準拠しています。XML プロキシを構成するファイルには、特定のディレクティブが存在する必要があります。
xmlproxydプロセスを使用してテレメトリデータを変換するには、render.yangファイルを作成します。このファイルでは、dr:command-appは xmlproxyd に設定されています。
XML プロキシの YANG ファイル名とモジュール名は、 xmlproxyd_ で始まる必要があります。
XML プロキシの YANG ファイル名には、拡張子
.yangを追加します(例:xmlproxyd_sysusers.yangモジュール名には、拡張子
.yangを除いたファイル名を使用します(例:xmlproxyd_sysusers
YANG ファイルの作成を簡略化するには、まず実際のサンプルを変更することから始めるのが最も簡単です。
JunosでYangファイルを読み込む
YANG ファイルが完了したら、YANG ファイルをアップロードし、モジュールが作成されていることを確認します。
センサーデータの収集
お気に入りのコレクターを使用して、新しく作成されたテレメトリセンサーデータをデバイスから取得します。
センサーを開始する前に、リソースの制約を考慮してください。
-
複数の XML プロキシ センサーに同じレポート間隔を指定することは避けてください。
-
xmlproxyd は XML およびテキスト処理を実行するため、デバイスには CPU 使用率の範囲内で実行される XML プロキシ センサーのみを含める必要があります。
プラットフォーム固有の センサー データの収集 動作
Feature Explorerを使用して、特定の機能に対するプラットフォームとリリースのサポートを確認します。
次の表を使用して、プラットフォームのプラットフォーム固有の動作を確認します。
| プラットホーム |
差 |
|---|---|
| PTX10008 |
Junos OS Evolvedで動作するPTX10008ルーターの場合、テレメトリRPC用にルーターごとに10を超えるコレクターを接続しないでください。 |
次の手順では、コレクタ jtimonを使用します。jtimon 設定の詳細については、 Junos Telemetry Interface クライアントを参照してください。
センサーのサブスクリプションがすでに存在し、重複するサブスクリプションが構成されている場合、コレクターとデバイス間の接続は閉じられ、エラー メッセージ AlreadyExistsが表示されます。
ユーザ定義の YANG ファイルのインストール
Junos Telemetry Interface の XML プロキシ用のユーザ定義 YANG ファイルを追加、検証、変更、または削除するには、動作モードから request system yang コマンド セットを使用します。
テレメトリセンサーのトラブルシューティング
問題
形容
ユーザー定義のテレメトリセンサーをトラブルシューティングするには、以下の方法を使用します。
-
gRPC 要求の送信元のインターフェイスに対して tcpdump を実行します (このタスクでは、インターフェイス
fxp0を使用しました)。user@switch>monitor traffic interface fxp0 no-resolve matching "tcp port 32767"
-
set services analytics traceoptions flag xmlproxyコマンドを使用してtraceoptionsを有効にします。
xmlproxydログファイルで、CLIコマンドのRPCが送信されたかどうか、および応答が受信されたかどうかを確認します。
show log xmlproxyd コマンドを発行して、xmlproxyd ログを表示します。フィールド
xmlproxy_execute_cli_command:の値は、RPC が送信されたかどうかを示します。フィールドxmlproxy_build_contextの値は、コマンドを示します。
user@switch>show log xmlproxyd Mar 4 18:52:46 vmxdockerlight_vmx1_1 clear-log[52495]: logfile cleared Mar 4 18:52:51 xmlproxy_telemetry_start_streaming: sensor /junos/system-users-information/ Mar 4 18:52:51 xmlproxy_build_context: command show system users merge-tag: Mar 4 18:52:51 <command format="xml">show system users</command> Mar 4 18:52:51 xmlproxy_execute_cli_command: Sent RPC.. Mar 4 18:52:51 <system-users-information xmlns="http://xml.juniper.net/junos/17.4R1/junos" xmlns:junos="http://xml.juniper.net/junos/*/junos"> <uptime-information> <date-time junos:seconds="1520189571"> 6:52PM </date-time> <up-time junos:seconds="107400"> 1 day, 5:50 </up-time> <active-user-count junos:format="1 users"> 1 </active-user-count> <load-average-1> 0.94 </load-average-1> <load-average-5> 0.73 </load-average-5> <load-average-15> 0.65