JunosでNETCONFプロキシーテレメトリセンサーを設定する
Junos テレメトリ ストリーミングを使用すると、XML プロキシー機能を使用して、利用可能な状態情報をテレメトリ センサーに変換できます。NETCONF XML 管理プロトコルと Junos XML API には、サポートされるすべての Junos OS 運用要求のすべてのオプションが完全に文書化されています。XMLプロキシセンサーを設定した後、NETCONF「get」リモートプロシージャコール(RPC)を介してデータにアクセスできます。
このタスクでは、Junos OS 運用モード コマンドの出力をストリーミングする方法を示します。
広範な出力または詳細な出力、または出力が遅い Junos OS 運用コマンドにマッピングされた YANG ファイルは使用しないことをお勧めします。遅延が顕著なコマンドは YANG ファイルで回避する必要があります。このようなコマンドを含めると、他の xmlproxyd センサーや xmlproxyd のパフォーマンスに影響を与える可能性があります。
一部の動作モード コマンドからの出力は動的であり、その説明レベルは、構成やハードウェアなどの要因によって異なります。このようなコマンドの例には、 、および のバリエーションshow interfaces
show route
show bfd
show arp
show bgp
があります。show ddos-protection
コマンドの動詞レベルを確認するには、 | display xml count コマンドをcommand-name発行します。行数が 4000 行の値を超える場合、 コマンドは XML プロキシ ストリーミングには推奨されません。この値は、内部ベースライニングに基づいた近似値です。デバイスタイプ、デバイスの処理能力、既存のCPU負荷など、さまざまな要因に応じて少なくなります。そのため、この機能はデバイスのパフォーマンスに基づいて慎重に使用する必要があります。
コマンド command-name| display xml を発行してから、Junos OS または Junos OS Evolved 運用モード コマンドにマッピングされた YANG ファイルを使用して、コマンドが有効な XML 出力を生成し、無効なタグ、データ、またはフォーマットが含まれていないことを確認できます。
詳細コマンドにマッピングされた YANG ファイルを使用すると、以下の 1 つ以上の結果が得られます。
-
xmlproxyd プロセス CPU の使用率は高いままです。xmlproxyd でトレースが有効になっている場合、CPU 使用率はさらに高くなります。
-
xmlproxyd プロセス メモリ使用率の増加。
-
xmlproxyd プロセスの状態には、 が表示
sbwait
される場合があります。これは、コマンド出力が詳細であり、xmlproxyd がコマンドのリモート プロシージャ コール(RPC)出力の読み取りに多くの時間を費やしていることを示しています。 -
xmlproxyd センサー データは、ラップを完了しません。
-
xmlproxyd ストリームの一部またはセンサーのデータなし。
-
xmlproxyd は、レポート間隔サイクルを逃します。コマンドの詳細出力により間隔が重なり始め、その結果、xmlproxyd のセンサー ストリーミング データが遅くなったり遅延したりします。
-
詳細コマンドの RPC を提供するプロセスまたはアプリケーションには、主なタスクの実行に高い CPU 数や遅延が表示される場合があります。この動作は、プロセスまたはアプリケーションが詳細な出力を持つ RPC の提供中に発生します。
このタスクには、以下が必要です。
-
Junos OS リリース 17.3R2 以降を動作させる MX シリーズ、vMX シリーズ、または PTX シリーズ ルーター。
-
必要なネットワークエージェントパッケージ(network-agent-x86-32-17.4R1.16-C1.tgz以降)のインストール。
-
テレメトリデータレシーバー(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-5>
、および <load-average-15>
を参照<load-average-1>
してください。
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
前述の出力に示すタグは、 などのactive-user-count
date-time
up-time
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 - ネットワーク設定プロトコル(NETCONF) およびRFC 7950 のYANG 1.1データモデリング言語で定義された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 プロキシ センサーに同じレポート間隔を指定することは避けてください。
- Junos OS Evolvedで動作する PTX10008 ルーターの場合、テレメトリ RPC 用にルーターごとに 10 を超えるコレクターを接続しないでください。
- xmlproxyd は XML およびテキスト処理を実行するため、デバイスには CPU 使用率範囲内で実行される XML プロキシ センサーのみが含まれている必要があります。
次の手順では、コレクター 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"
コマンドを使用して traceoptions を set services analytics traceoptions flag xmlproxy 有効にします。CLI コマンドの
xmlproxyd
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