Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

JunosでNETCONFプロキシーテレメトリセンサーを設定する

Junos テレメトリ ストリーミングを使用すると、XML プロキシー機能を使用して、利用可能な状態情報をテレメトリ センサーに変換できます。NETCONF XML 管理プロトコルと Junos XML API には、サポートされるすべての Junos OS 運用要求のすべてのオプションが完全に文書化されています。XMLプロキシセンサーを設定した後、NETCONF「get」リモートプロシージャコール(RPC)を介してデータにアクセスできます。

このタスクでは、Junos OS 運用モード コマンドの出力をストリーミングする方法を示します。

ベスト プラクティス:

広範な出力または詳細な出力、または出力が遅い Junos OS 運用コマンドにマッピングされた YANG ファイルは使用しないことをお勧めします。遅延が顕著なコマンドは YANG ファイルで回避する必要があります。このようなコマンドを含めると、他の xmlproxyd センサーや xmlproxyd のパフォーマンスに影響を与える可能性があります。

一部の動作モード コマンドからの出力は動的であり、その説明レベルは、構成やハードウェアなどの要因によって異なります。このようなコマンドの例には、 、および のバリエーションshow interfacesshow routeshow bfdshow arpshow 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 シリーズ)

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

ヒント:

uptime-information前述の出力に示すタグは、 などのactive-user-countdate-timeup-timeload-average-1リーフを含むコンテナです。このコンテナの YANG ファイルの例を以下に示します。

ヒント:

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

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

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

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

  • XMLプロキシYANGファイル名の場合、例えば、 などの拡張子 .yangを追加します。 xmlproxyd_sysusers.yang

  • モジュール名の場合、拡張子 .yangのないファイル名を使用します(例:) xmlproxyd_sysusers

YANG ファイルの作成を簡素化するには、作業例の変更から始めるのが最も簡単です。

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

    例えば、 と呼ばれる sysusers.yangXMLプロキシ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 の出力の場所を指定します。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 使用してコンテナ、リスト、または特定のリーフにマッピングします。センサーが報告される絶対パスは、出力グループ junos plus system-users-informationから構築され、 で /’連結されています。このパス /junos/system-users-information/ は、このカスタム センサーに関する情報をクエリーするパスです。
    警告:

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

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

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

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

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

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

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

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

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

センサーデータの収集

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

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

  • 複数の XML プロキシ センサーに同じレポート間隔を指定することは避けてください。
  • Junos OS Evolvedで動作する PTX10008 ルーターの場合、テレメトリ RPC 用にルーターごとに 10 を超えるコレクターを接続しないでください。
  • xmlproxyd は XML およびテキスト処理を実行するため、デバイスには CPU 使用率範囲内で実行される XML プロキシ センサーのみが含まれている必要があります。

次の手順では、コレクター 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. モジュール(センサー)が コマンドsysusersshow system yang package sysusers使用してロードされていることを確認します。これはパッケージの名前です。
  4. Junos OS設定でgRPCを有効にします。

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

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

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

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

    コマンドで複数のYANGモジュールを request system yang add package package-name proxy-xml module 追加するには、角括弧で囲みます 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 が使用されました)。

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

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