Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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 interfacesshow routeshow arpshow bfdshow 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シリーズ)

show system users出力には、現在ログインしているユーザーの予想されるリストに加えて、平均システム負荷が1分、5分、15分と表示されます。負荷平均は、show system users | display xmlコマンドを使用して出力フィールドの XML タグを表示することで確認できます。以下の XML タグ付け出力の <load-average-1><load-average-5>、および <load-average-15> を参照してください。

先端:

上記の出力に示されている uptime-information タグは、 date-timeup-timeactive-user-countload-average-1などのリーフを含むコンテナです。次に、このコンテナの YANG ファイルの例を示します。

先端:

uptime-informationタグには、ユーザーエントリのリストを含むuser-tableという名前の別のコンテナもあります。

次に、このコンテナの YANG ファイルの例を示します。

ユーザ定義の 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-appxmlproxyd に設定されています。

XML プロキシの YANG ファイル名とモジュール名は、 xmlproxyd_ で始まる必要があります。

  • XML プロキシの YANG ファイル名には、拡張子 .yangを追加します(例: xmlproxyd_sysusers.yang

  • モジュール名には、拡張子 .yangを除いたファイル名を使用します(例: xmlproxyd_sysusers

YANG ファイルの作成を簡略化するには、まず実際のサンプルを変更することから始めるのが最も簡単です。

  1. モジュールの名前を指定します。モジュール名は xmlproxyd_ で始まり、XML プロキシの YANG ファイル名と同じ名前にする必要があります。

    たとえば、 sysusers.yang という XML プロキシの YANG ファイルの場合は、 .yang 拡張子を削除し、モジュールに xmlproxyd_sysusers という名前を付けます。

    module xmlproxyd_sysusers {

  2. Junos Telemetry Interfaceには、プロセス名xmlproxydを含めます。

    dr:command-app "xmlproxyd";

  3. NETCONF get 要求には、以下の RPC を含めます。

    rpc juniper-netconf-get {

  4. RPC の出力の場所を指定します ( company-name はその場所に付けた名前です)。

    dr:command-top-of-output "/company-name";

  5. RPC を実行するには、次のコマンドを含めます。

    dr:command-full-name "drend juniper-netconf-get";

  6. データを取得する CLI コマンドを指定します。要求されたサンプル周波数で実行されるJunos OS CLIコマンドは、dr:cli-commandで定義され、xmlproxydプロセスによって実行されます。

    Junos OSコマンド show system usersのコマンド出力を取得するには:

    dr:cli-command "show system users";

  7. 権限をエスカレートし、"root" としてログオンし、Telnet 経由で内部管理ソケットに接続し、RPC のヘルプを指定します。

    dr: command-help “default <get> rpc”;

    これが YANG ファイルに含まれる場合、デバッグに役立つ出力が内部管理ソケットの help drend 出力に表示されます。

    200-juniper-netconf-get-0 system users <get> RPC

  8. 階層を指定し、 dr:source コマンドを使用してコンテナ、リスト、または特定のリーフにマッピングします。センサーが報告される絶対パスは、出力グループ junossystem-users-information から構築され、 /’ で連結されます。パス /junos/system-users-information/ は、このカスタム センサーに関する情報を照会するパスです。
    警告:

    事前定義されたネイティブパス(ジュニパー定義のパス)およびOpenConfigパス(リソース)と競合または重複するカスタムYANGモデルを作成しないでください。これを行うと、未定義の動作が発生する可能性があります。

    例えば、 /junos/system/linecard/firewall/interfacesなどのリソース・パスで新しいリーフを定義したり、ノードを拡張したりするモデルは作成しないでください。

    コンテナ、リーフ、および CLI コマンド出力からの XML タグまたは値の間の 1 対 1 のマッピングは、出力コンテナ内で uses によって参照されるグループで定義されます。 グループ化 は、異なるコンテナー出力で複数回参照できます。以下のコンテナ system-users-information では、system-users-informationというグループ化を使用しています。ただし、これは、すべてのコンテナー、リスト、およびリーフについて、前述の 1 対 1 のマッピングなしで定義され、CLI コマンド XML 出力からの出力 XML タグにされます。

  9. 以下のYANGファイルは、これらのコマンドをインクルードする方法を示しており、 xmlproxyd プロセスで完全な運用状態を取得し、ジュニパー独自のデータモデルのリーフにマッピングできます。

JunosでYangファイルを読み込む

YANG ファイルが完了したら、YANG ファイルをアップロードし、モジュールが作成されていることを確認します。

  1. YANG ファイルをルータにアップロードします。
  2. request system yang add package コマンドを使用して YANG ファイルを登録します。
    手記:

    Junos OS リリース 18.3R1以降では、 run コマンドを使用した設定モードでのYANGパッケージの追加、削除、または更新はサポートされていません。

  3. show system yang package sysusers コマンドを使用してモジュール (センサー) が登録されていることを確認します (sysusers はパッケージの名前です)。
  4. Junos OS 設定で gRPC を有効にします。

センサーデータの収集

お気に入りのコレクターを使用して、新しく作成されたテレメトリセンサーデータをデバイスから取得します。

センサーを開始する前に、リソースの制約を考慮してください。

  • 複数の XML プロキシ センサーに同じレポート間隔を指定することは避けてください。

  • xmlproxyd は XML およびテキスト処理を実行するため、デバイスには CPU 使用率の範囲内で実行される XML プロキシ センサーのみを含める必要があります。

プラットフォーム固有の センサー データの収集 動作

Feature Explorerを使用して、特定の機能に対するプラットフォームとリリースのサポートを確認します。

次の表を使用して、プラットフォームのプラットフォーム固有の動作を確認します。

表 1: センサー データの収集 動作

プラットホーム

PTX10008

Junos OS Evolvedで動作するPTX10008ルーターの場合、テレメトリRPC用にルーターごとに10を超えるコレクターを接続しないでください。

次の手順では、コレクタ jtimonを使用します。jtimon 設定の詳細については、 Junos Telemetry Interface クライアントを参照してください。

手記:

センサーのサブスクリプションがすでに存在し、重複するサブスクリプションが構成されている場合、コレクターとデバイス間の接続は閉じられ、エラー メッセージ AlreadyExistsが表示されます。

  1. ここでは vmx1.json という名前の単純な構成ファイルを作成します。必要に応じて、ホストの IP アドレスとポートを調整します。パス/junos/system-users-informationが指定されています。freq フィールドは MicroSoft で定義され、5 秒ごとに新しいキーと値のペアのセットをストリーミングします。必要に応じて、複数のパスを追加できます。
  2. 独自のコンパイル済みファイルまたは Docker Hub から自動的にビルドされたイメージを使用して、コレクターを起動します。以下のサンプル クエリ出力は、パス別のセンサー レポートを示しています。すべてのキーは、人間が判読できる形式で絶対パスとして送信されます。リストの場合、絶対パスには XPATH 形式のインデックスが含まれており、InfluxDB などの (時系列) データベースから値をグループ化するのに理想的です。例えば、以下の出力はパス /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/を示しています。

    Ctrl-C を使用して、センサー データのストリームを終了できます。

    以下に示すサンプル クエリでは、パスごとに 2 つのセンサー レポートが表示され、Ctrl-C で終了しました。すべてのキーは人間が判読できる形式で絶対パスとして送信され、リストの場合はXPATH形式のインデックスが含まれており、InfluxDBのような(時系列)データベースから値をグループ化するのに最適です(例:/junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/

  3. show system yang package sysusersコマンド(sysusersはパッケージの名前)を使用して、モジュール(センサー)がロードされていることを確認します。
  4. Junos OS 設定で gRPC を有効にします。

ユーザ定義の YANG ファイルのインストール

Junos Telemetry Interface の XML プロキシ用のユーザ定義 YANG ファイルを追加、検証、変更、または削除するには、動作モードから request system yang コマンド セットを使用します。

  1. XML プロキシの YANG ファイルの名前と、インストールするファイル パスを指定します。このコマンドは、/opt/lib/renderディレクトリに.jsonファイルを作成します。
    手記:

    このコマンドは、現在のルーティング エンジンでのみ実行できます。

    request system yang add package package-name proxy-xml module コマンドで複数の YANG モジュールを追加するには、file-path-nameを括弧で囲みます。[ file-path-name 1 file-path-name 2 ]

  2. (オプション)request system yang validate proxy-xml module module-nameコマンドを使用して、モジュールをルーターに追加する前に検証します。

    出力 XML proxy YANG module validation for xmlproxyd_<module-name> : SUCCESS は、モジュール検証が成功したことを示します。

    不一致エラーが発生することがあります。コマンドで以下のエラーが返された場合、Junos OS リリース 17.3R2 以降を使用してエラーを解消できます。

  3. (オプション)以前に追加した既存の XML プロキシ YANG ファイルを更新します。
  4. 既存の XML プロキシ YANG ファイルを削除します。
  5. show system yang package コマンドを入力して、YANG ファイルがインストールされていることを確認します。

テレメトリセンサーのトラブルシューティング

問題

形容

ユーザー定義のテレメトリセンサーをトラブルシューティングするには、以下の方法を使用します。

  • gRPC 要求の送信元のインターフェイスに対して tcpdump を実行します (このタスクでは、インターフェイス fxp0 を使用しました)。

  • set services analytics traceoptions flag xmlproxyコマンドを使用してtraceoptionsを有効にします。xmlproxydログファイルで、CLIコマンドのRPCが送信されたかどうか、および応答が受信されたかどうかを確認します。

  1. show log xmlproxyd コマンドを発行して、xmlproxyd ログを表示します。フィールド xmlproxy_execute_cli_command: の値は、RPC が送信されたかどうかを示します。フィールド xmlproxy_build_context の値は、コマンドを示します。