Junosテレメトリについて
Junosテレメトリは、ジュニパーネットワークスが開発したフレームワークで、Junosデバイスから外部コレクターに運用データをエクスポートすることができます。このデータは、リアルタイムのデバイス監視のために分析されます。このトピックでは、Junos Telemetryで使用されるモデル駆動型テレメトリ、テレメトリモード、トランスポートプロトコル、テレメトリセンサー、センサーパス、およびデータモデルの概念について説明します。
ネットワークテレメトリ
ネットワークテレメトリとは、ネットワークデバイスからデータを収集、送信、分析するプロセスです。このデータには、トラフィックパターン、デバイスのステータス、エラー率、およびネットワークの健全性と動作に関するインサイトを提供するその他のメトリックに関する情報が含まれます。このデータを使用して、有用なインサイトを引き出し、この情報を使用してネットワークパフォーマンスとセキュリティを効果的に監視および管理できます。ネットワーク管理者は、テレメトリデータを使用して、ネットワーク問題のトラブルシューティング、異常の検出、ネットワーク全体のリソース利用の最適化を行うことができます。ネットワーク テレメトリの主な利点の 1 つは、ネットワーク運用をリアルタイムで可視化できることです。
ネットワーク テレメトリは、ネットワーク セキュリティの強化にも重要な役割を果たします。テレメトリデータを分析することで、セキュリティチームはサイバー攻撃やその他のセキュリティ上の脅威を示す可能性のある異常なパターンを特定できるため、潜在的なセキュリティインシデントの検出と対応が迅速化され、ネットワークとそのデータの保護につながります。
Junosテレメトリ
Junos Telemetryは、テレメトリデータをストリーミングするために開発されたジュニパーのテレメトリソリューションです。拡張性が高く、ネットワーク内のリモート監視デバイスをサポートできます。また、トラブルシューティングの改善、ネットワークのプロアクティブな管理、運用コストの削減にも役立ちます。
Junosテレメトリは、さまざまなネットワークシナリオに適用できます。
- パフォーマンス監視: インターフェイス使用率、遅延、パケットロスなどの主要なメトリックを監視して、最適なネットワークパフォーマンスを確保します。
- セキュリティ監視: セキュリティイベントを追跡し、トラフィックパターンを分析し、潜在的なセキュリティ脅威を特定します。
- アプリケーションパフォーマンス管理: ネットワークデータとアプリケーションデータを関連付けることで、アプリケーションパフォーマンスに関するインサイトを得ることができます。
- ネットワーク容量計画: 過去およびリアルタイムのデータを分析して潜在的なボトルネックを特定し、将来の容量ニーズに対して計画を立てます。
他のジュニパーアプリケーションも、Junosテレメトリを利用してリアルタイムデータを提供し、ネットワーク要素と外部コントローラ(ジュニパーのMist、ジュニパーのRouting Director、Apstraなど)間の運用状態の同期をサポートします。
モデル駆動型テレメトリ
Junos Telemetryは、モデル駆動型テレメトリ(MDT)アーキテクチャを採用しています。モデル駆動型ネットワークテレメトリシステムは、データモデルを活用してネットワークデバイスからテレメトリデータを定義して収集する、ネットワーク監視への高度なアプローチです。このシステムでは、データモデルがYANG(Yet Another Next Generation)言語を使用して定義され、収集またはストリーミングするデータの構造とタイプが指定されます。
ジュニパーは現在、以下のさまざまなデータモデルをサポートしています。
-
ジュニパーネイティブデータモデル
-
OpenConfigデータモデル
-
Genstateモデル
すべてのモデルは YANG を使用して、ストリーミングするデータ構造とデータ型を指定します。詳細については、「 データモデル」を参照してください。
適切なデータモデルの選択は、特定のニーズによって異なります。任意のモデルのセンサーに同時にサブスクリプションできます。ネイティブセンサーには、さまざまなユースケースをサポートするという点で優位性があります。
モデル駆動型テレメトリ ソリューションを設定するには、次の手順に従います。
テレメトリデータをストリーミングするようにジュニパーデバイスを設定します。 ジュニパーデバイスがJunosテレメトリをサポートする互換性のあるJunos OSバージョンを実行していること、およびジュニパーデバイスとコレクター間のネットワーク接続が存在することを確認します。
- データコレクターの設定: データを収集してデコードするようにコレクターを構成します。詳細については、「 テレメトリデータコレクタ」を参照してください。
- トランスポートプロトコルを確立する:データ転送に適したトランスポートプロトコルを選択して設定します。詳細については、「 トランスポートプロトコル」を参照してください。
- センサーを設定する: センサープロファイルは、監視およびストリーミングするシステムリソースのパラメーターを定義します。各センサープロファイルを監視するシステムリソースを1つだけ有効にすることも、システムリソースごとに異なるセンサープロファイルを設定することもできます。ただし、複数のセンサーを設定して、同じシステムリソースを監視することはできます。詳細については、「 センサーとセンサーパス」を参照してください。
- サブスクリプションの作成: 監視する必要があるデータストリームのサブスクリプションを設定します。テレメトリセッションは、デバイスまたは受信機がサブスクリプションを開始するように設定されているかどうかに応じて、ダイヤルインモードまたはダイヤルアウトモードで確立できます。詳細については、「 テレメトリモード」を参照してください。
センサーとセンサーパス
テレメトリセンサーは、テレメトリソリューションの重要なコンポーネントです。さまざまな物理的、環境的、およびパフォーマンスのパラメーターを測定し、それらをデータに変換し、リモート監視と分析のためにTCPまたはUDP接続を介してコレクターに送信します。例としては、温度センサー、インターフェイスセンサー、流量センサーなどがあります。テレメトリセンサーパスは、YANGを使用して定義されたデータモデル内の特定のルートであり、ネットワークデバイスから収集およびストリーミングされる正確なデータを指定します。ジュニパーは、Openconfig、ネイティブ、genstateモデルの両方のセンサーをサポートしています。Openconfigセンサーはカウンターベースまたは状態ベースのメトリックを追跡します。ネイティブセンサーはデバイスの詳細なデータにアクセスできるため、イベント駆動型メトリックを効果的に追跡します。Openconfigベースのセンサーパスを設定して、ベンダーに依存しない形式でセンサー情報を取得したり、ネイティブセンサーパスを設定してジュニパー独自の情報をネイティブ形式で取得することができます。詳細については、「 センサーパスの探索」を参照してください。
テレメトリデータコレクター
テレメトリ コレクターは、テレメトリ データのデータ収集、処理、送信、および保存を実行する特殊なテレメトリ コレクターです。これは、テレメトリデータを生成するJunosデバイスと、データを保存、分析、可視化するバックエンドシステムの間の仲介者です。
データコレクターの機能:
- データ収集:コレクターは、gRPCまたはUDP接続を介してジュニパーデバイスからテレメトリデータを受信します。
- データ処理: コレクターは、収集されたデータを集約および正規化して処理し、不要な情報をフィルタリングし、メトリックを集約し、初期分析を実行します。この処理により、データ量を削減し、最も重要なメトリックに集中できます。
- データ伝送: 信頼性の高いデータ伝送と低遅延を保証します。
- データストレージ: 処理されたデータは、さらなる分析、視覚化、保存のためにさまざまなバックエンド システムにエクスポートされます。長期的な分析や履歴の比較のために、データレイクに保存することができます。このコレクターは複数のデータ形式とプロトコルをサポートしているため、さまざまな監視ツールや分析ツールと互換性があります。分析されたデータは、インタラクティブなダッシュボードとレポートを通じて表示され、ネットワーク管理者に実用的なインサイトを提供します。
テレメトリモード
Junosテレメトリは、次の2つのモードでテレメトリセッションをサポートします。
ジュニパーデバイスは、ダイヤルインモードとダイヤルアウトモードの両方で動作できます。ネットワークのトポロジーに基づいて、どちらのモードでもジュニパーデバイスを設定できます。どちらのモードも同じデータモデルを使用し、ネットワークを介して同じテレメトリデータをストリーミングします。2つのモードの違いは、コレクターデバイスとジュニパーデバイスのどちらが接続を開始し、維持するかに基づいています。
サブスクリプションタイプ
Junos Telemetryはさまざまなサブスクリプションモードをサポートしており、特定のニーズや状況に基づいてデータを収集できます。サブスクリプションモードは、CLIコマンドを使用してデバイス上で設定するか、テレメトリタイプに基づくサブスクリプションリクエストの一部です。これらのモードは、データストリームの動作を決定します。ストリーミング間隔によって、デバイスとコレクター間のテレメトリデータ転送頻度が決まります。データの収集とストリーミングは、特定の条件が満たされた場合、またはテレメトリデータの収集とストリーミングを開始するイベントが発生したときにトリガーされます。これらのトリガーにより、特定の基準が満たされたときにデータが収集されます。例えば、パケット損失が検出された場合に、テレメトリデータを収集してストリーミングできます。以下のサブスクリプションモードがサポートされています。
- 1回: これはテレメトリ データの 1 回限りの要求です。このサブスクリプションタイプは、サブスクライブされたデータの現在の状態のスナップショットが必要な場合に設定できます。デバイスは、テレメトリデータをコレクターに一度送信すると停止します。
- ポーリング: テレメトリデータの定期的なオンデマンド取得です。この構成は、特定の間隔でセンサーを監視するのに適しています。ダイヤルインのシナリオでは、コレクターはこのタイプのサブスクリプションを通じてテレメトリデータをサブスクライブし、必要に応じて情報をポーリングします。
- ストリーム: この継続的なサブスクリプションは、構成されたトリガーが発生すると、データを継続的にストリーミングします。
注: すべてのセンサー(OpenConfigまたはネイティブ)がすべてのタイプのサブスクリプションをサポートしているわけではありません。
サブスクリプションモード
Junos テレメトリは、以下のサブスクリプション モードをサポートしています。
- ON_CHANGE: デバイスは、監視対象データが変更されたとき(たとえば、インターフェイス カウンターのインクリメントや状態の反転)にのみ更新を送信します。このモードは、時間駆動型ではなくイベント駆動型メトリックに適しています。
- サンプル: テレメトリの更新は、設定された間隔に基づいて定期的にストリーミングされます。このモードは、時間の経過とともにサンプリングされるパケット数や転送バイト数などのメトリックに適しています。
- TARGET_DEFINED:デバイスは、監視されたセンサーまたはリソースに基づいて最適なモード(SAMPLEまたはON_CHANGE)を決定します。センサーで明示的にサポートされていない限り、ジュニパー の実装は既定で SAMPLE ON_CHANGEになる場合があります。
-
注:設定パスに対するTARGET_DEFINEDのサブスクリプションリクエストは、ON_CHANGEリクエストのみとして扱われます。
-
ネットワークに適したテレメトリ設定を決定する
ネットワークトポロジーとデータ要件によって、適切なセンサー、サブスクリプションタイプ、サブスクリプションモードが決まります。例えば、OpenConfigセンサーをSAMPLEサブスクリプションモードとともに使用し、マルチベンダーダッシュボードのサポートなど、標準化された定期的な監視を行います。ハードウェアのトラブルシューティングなど、ジュニパー固有のインサイトやイベント主導のインサイトを得るには、ON_CHANGEサブスクリプションモードでネイティブセンサーを使用します。
トランスポートプロトコル
トランスポートプロトコルは、Junosデバイスとテレメトリコレクターの間でテレメトリデータがどのように送信されるかを定義します。
以下のプロトコルがサポートされています。
-
伝送制御プロトコル(TCP)
-
ユーザーデータグラムプロトコル(UDP)
TCP
TCPは、Junosテレメトリがサポートする主要なプロトコルです。TCPは接続指向で、ステートフルでセキュア(TLSサポート)であるため、データ配信において信頼性が高くなります。TCP は、ダイヤルインおよびダイヤルアウト テレメトリ モードでサポートされます。pre-gNMI(ジュニパー独自仕様)やgNMIなどのテレメトリメカニズムの基盤層を形成します。
| ダイヤルイン | ダイヤルアウト | |
|---|---|---|
| 輸送 | TCP | TCP |
| セッション | HTTP/2 | HTTP/2 |
| RPCフレームワーク | gRPC | gRPC |
| テレメトリAPI | gNMI | gNMI |
| データモデル |
|
|
テレメトリを設定し、テレメトリメッセージをデコードするには、 gNMIサブスクリプション、 gRPCサービスの設定、 サポートされているデータタイプ、 ジュニパーGitHubリポジトリ、 およびProtobufコンパクトメッセージフォーマット(ジュニパー独自)を参照してください。
UDP
UDPは、Junos Telemetryでサポートされている軽量のコネクションレストランスポートプロトコルです。UDPは、ダイヤルアウトテレメトリモードでサポートされています。
| ダイヤルイン | ダイヤルアウト | |
|---|---|---|
| 輸送 | - | UDP |
| セッション | - | - |
| RPCフレームワーク | - | gRPC |
| テレメトリAPI | - | - |
| データモデル | - |
|
UDPテレメトリでは、プロトファイルはテレメトリメッセージ構造をデコードするために必要です。テレメトリメッセージを設定およびデコードするには、 UDPを介したテレメトリデータのストリーミング、 センサーデータカプセル化形式、 サポートされているデータ型、 ジュニパーGitHubリポジトリ、 およびProtobufコンパクトメッセージ形式(ジュニパー独自)を参照してください。
データモデル
Junosテレメトリデータモデルは、YANG(Yet Another Next Generation)を使用して、ネットワークデバイスから収集されたテレメトリデータの構造を定義します。YANGは、ネットワークデバイスの構成、運用状態データ、リモートプロシージャコール(RPC)を定義するためにJunosテレメトリで使用される、標準ベースの拡張可能なデータモデリング言語です。Junos Telemetryでは、YANGモデルは、インターフェイスの統計情報などのセンサーを含むデータモデルの構造と詳細を表現します。YANG規格は、 RFC 6020 および RFC 7950で定義されています。
ジュニパーネットワークスは、Junosデバイス用のYANGモジュールを公開しており、 ジュニパーのGitHubリポジトリからダウンロードできます。リリース23.4以降、設定とテレメトリYANGモデルは統合され、 ジュニパーのGitHubリポジトリで公開されています。これには、設定、RPC、テレメトリモデルのYANG定義が含まれています。
OpenConfigワーキンググループは、OpenConfigデータモデルを定義します。これは、ネットワークを設定および管理するためのベンダーに依存しないデータモデルです。OpenConfigデータモデルは、ユニバーサルキー/値形式のGPB(Google Protocol Buffers)メッセージとしてデータを生成します。Junos Telemetryでは、OpenConfigモデルを活用して、ベンダーに依存しない、より広範なネットワークビューを得ることができます。Openconfigセンサーパスは、Openconfigデータモデルに基づいてセンサーからセンサー情報を取得するために使用されます。Openconfigリソースパスの詳細は、 Junos YANGデータモデルエクスプローラを参照してください。
ジュニパーのネイティブデータモデルは、ジュニパーが開発したオープンで拡張可能なフレームワークです。このモデルは、ジュニパーデバイスに搭載されている独自の機能に関するテレメトリデータをストリーミングするために使用されます。これには、インターフェイス統計、ルーティング情報、セキュリティメトリックなどが含まれます。さらに、ネイティブモデルでは、エンタープライズ固有のセンサーを定義できます。ジュニパーまたはエンタープライズ固有のセンサーからの情報にアクセスするには、ジュニパーネイティブセンサーに登録してください。ネイティブセンサーパスは、ネイティブデータモデルに基づいてセンサーからセンサー情報を取得するために使用されます。ネイティブセンサー用ジュニパーのYANGモジュールは、 GitHubにあるジュニパーのYANGリポジトリから入手できます。
生成状態モデルは、運用状態データから派生した自動生成されたYANGモデルです。genstate YANGモデルは、gNMIサブスクライブRPCを介してshowコマンドデータのサブセットを公開します。gNMI テレメトリコレクターは、公開されたモデルで定義されたリソースパスにサブスクライブして、特定の状態データを取得できます。gNMIサブスクリプションを設定するには、 gNMIサブスクリプションを参照してください。コレクターは、genstate モデルを使用してリソース パス クエリを発行し、特定の運用状態データを取得します。各ルートタグは、単一のgenstateモデル(つまり、ルートタグごとに1つのYANGファイル)に対応します。
センサーパスの探索
テレメトリセンサーパスは、監視する必要があるデータポイントまたはメトリックへの階層パスを記述します。関連データの識別、アクティブ化、ストリーミングに使用されます。Junos Telemetryは、Openconfig、Genstate、ネイティブセンサーパスをサポートします。
-
Openconfigセンサーパス
Openconfigセンサーからのデータ収集を設定するには、サブスクリプションとセンサーパス(例:
/interfaces/interface/state/counters)を定義し、データコレクターを設定し、ジュニパーネットワークスサポートページからJunos Telemetryプロトコルバッファファイルをダウンロードします。キャプチャしたデータをコレクターでキャプチャしてデコードします。 -
ネイティブセンサーパス
ネイティブセンサーパスはJunos OS(
/junos/system/line card/interface/など)に固有で、デバイス固有のメトリックへのきめ細かジュニパーに最適化されたアクセスを提供します。サブスクリプションモードは、CLIコマンドを使用してデバイス上で設定するか、テレメトリタイプに基づくサブスクリプションリクエストの一部です。プロトコルバッファーのファイルを使用して、コレクター上のセンサーデータをデコードします。
-
Genstateセンサーパス
genstate リソース パスは、genstate YANG データ モデルを通じて公開された状態データをネットワーク デバイスから取得するために使用されます。genstate YANGモデルは、gNMIサブスクライブRPCを介してshowコマンドデータのサブセットを公開します。genstate モデルのリソースパスには、
/genstate/が追加されます。例えば、コレクターは以下のクエリを送信して mpls lsp 名を取得します。genstate:/genstate/mpls-lsp-information/rsvp-session-data/rsvp-session/mpls-lsp/name注:genstate YANGモジュールの詳細、および特定のshowコマンドに対応するモジュールと利用可能なリソースパスを検出する方法については、 Junos Genstate YANGデータモデルを参照してください。
サポートされているshowコマンドとルートパスを表示するには、 Genstate YANGデータモデル を参照してください。
すべてのパスタイプにより、JSON や XML などの形式でデータを構造化して出力できるため、外部コレクターとの互換性が確保されて効率的な監視と分析が実現します。
センサーパスエクスプローラ
ジュニパーネットワークスの Junos YANGデータモデルエクスプローラ は、サポートされているすべてのリソースパス、それに対応するリーフ、およびそれらをサポートするデバイスプラットフォームを表示するためのオンラインツールです。これにより、さまざまなデータモデル属性を調査または比較できます。ソフトウェアリリース番号または製品に基づくフィルターオプションを使用して、各プラットフォームのリソースパスとセンサーのリストを表示します。
テレメトリセンサーパスの選択
モデル駆動型テレメトリシステムでは、センサーパスは、データモデルのコンテナー階層内の任意のレベルで終了するように構成できます。必要なテレメトリ情報に基づいて、広範なデータセットを取得するようにセンサーパスを設定したり、特定のセンサーのターゲット情報を非常に具体的に取得したりできます。例えば、センサーパスは、ルーター上のすべてのインターフェイス統計情報を含むコンテナを指している場合もあれば、特定のインターフェイスでのパケット損失などの単一のメトリックに焦点を当てた、より詳細なパスになる場合もあります。
例えば、デバイス上で生成されたアラームに関するテレメトリデータを(OpenConfigデータモデルを使用して)受信するには、必要なセンサーデータの粒度に基づいて、以下のいずれかのリソースパスを設定できます。
/system/alarms/alarm/id:このパスはアラームIDのみを取得します。/system/alarms/alarm/config:このパスは、詳細なアラーム情報を取得します。
正しいセンサーパスを設定することで、効率的なテレメトリシステムが保証されます。各リソース・パスは、システム・リソースのデータ・ストリーミングをグローバル (つまりシステム全体) に有効にします。各リソースパスを変更して、論理インターフェイスまたは物理インターフェイスを指定できます。リソースパス「/interfaces/interface/config」は、グローバルな物理インターフェイスレベルで設定可能な項目のリストを取得し、パス「/interfaces/interface/config/name」はインターフェイスの名前を指定します。デバイスは、インターフェイスのタイプに応じてこのリーフに許可される値を制限する場合があります。
センサーパスの重要なガイドラインと命名規則
ほとんどの場合、センサーを構成するときは、完全かつ直接的なリソース パスを指定する必要があります。「/components/component/」などの部分的なリソースパスを指定すると、設定が不完全になったり、エラーが発生したりする可能性があります。このようなリソースパスは、その階層内で使用可能なすべてのオプションを取得して表示する必要があるため、デバイスに大きな負荷を課す可能性があります。これを防ぐには、常に完全なリソースパスを検証して使用し、正確で効率的なセンサー構成を確保します。
システムコンポーネントには階層コンポーネントの命名規則を使用します。この規則により、ルーティングエンジンの CHASSIS0:REx やネットワーク処理ユニット(NPU)の CHASSIS0:FPCx:PICy:NPUz など、ルートノードから始まるフルパスを使用して、コンポーネントを正確に識別できます。
以下の表に、コンポーネント名の変更例を示します。
| コンポーネントカテゴリ |
古い名称 |
新しい名前 |
|---|---|---|
| シャーシ |
|
|
| コントロールボード(CB) |
|
|
| ファントレイ |
ファントレイ、ファントレイ0 |
|
| ファン |
ファントレイ0ファン0 |
|
| FPC |
|
|
| RE CPU |
|
|
| FPC CPU(論理) |
|
|
| FPC CPU(コア) |
|
|
| PIC |
|
|
| CC |
|
|
| NPU |
|
|
| DP |
|
|
| ポート |
|
|
| XCVR |
|
|
| OCH |
|
|
| レーン |
|
|
| FPM |
|
|
| ミッドプレーン |
|
|
| PSM |
|
|
| ルーティングエンジン(RE) |
|
|
| FTC |
|
|
| SIB |
|
|
| REブートローダー |
|
|
| RE BIOS |
|
|
| 2月 |
|
|
たとえば、 fpc フルパスの例は /components/component[name="CHASSIS0:FPC0"]/state/parent : CHASSIS0です。
コンポーネントの命名規則の詳細については、インターフェイス命名を参照してください
センサーパスの例
| 完全なセンサーパス | 部分的なセンサーパス |
|---|---|
/interfaces/interface/subinterfaces/subinterface/state/counters/out-pkts |
/interfaces/interface |
/junos/system/linecard/interface/logical/ usage/パスを生成
/interfaces/interface/サブスクライブパスは、キー名のリーフ
parent_ae_nameと
init_time(リーフ名にアンダースコア付き)を報告します。ストリーミングパスを生成するサブスクライブパス
/interfaces/interface/state/
/ junos/system/linecard/interface/queue/ キー名、リーフ
parent-ae-name、
init-time(リーフ名にハイフンを含む)を報告します。
Junos Evolvedデバイスのパフォーマンスは、サービスベースのアーキテクチャによって最適化されており、サービス設定に基づいて一部のプロセスまたはデーモンがアクティブ化されます。これらのプロセスは、サービスが設定されるまで非アクティブなままです。テレメトリサブスクリプションが非アクティブなサービスを対象としている場合、テレメトリ出力は生成されません。
センサーデータカプセル化フォーマット
Junosテレメトリは、プロトコルバッファ(GPB)形式でデータをエクスポートする2つの方法をサポートしています。このセクションでは、UDP 経由でテレメトリデータをエクスポートするときにネイティブセンサーが使用するデータ形式について説明します。データはUDPヘッダーにカプセル化され、IPv4ペイロードにさらにカプセル化されます。このテレメトリモデルは、設定されたセンサーによって生成されたデータは、データプレーンから直接エクスポートされる分散アーキテクチャに従います。このアプローチは、コントロールプレーンをバイパスすることで、他の重要な機能のためにコントロールプレーンのリソースを節約するのに役立ちます。
ネイティブセンサーは、UDPを使用してソースに近いデータをエクスポートします。物理インターフェイスの統計情報、ファイアウォールフィルターカウンターの統計情報、ラベルスイッチパス(LSP)の統計情報など、さまざまな種類のテレメトリデータをエクスポートできます。センサーは、有効になるとすぐにデータの出力を開始します。
センサー データは、 TelemetryStream という名前の 1 つの構造化プロトコル バッファー メッセージとして表されます。以下に示すメッセージ( .proto ファイル)には、ラインカード、パケット転送エンジン、ルーティングエンジンなど、データソースを識別する複数の属性が含まれています。設定されたセンサーの名前も含まれています。センサーの構成方法の詳細については、「 センサー パスの探索」を参照してください。サポートされているネイティブセンサーの一覧については、 センサー(Junos Telemetry Interface)を参照してください。
また、ストリーミングサーバーまたはコレクターでサポートされているすべてのセンサーの.proto ファイルもダウンロードする必要があります。OpenConfigおよびYANGモデルファイルをダウンロードするには、Webブラウザを開いて https://www.hpe.com/us/en/networking/hpe-juniper-networking.html に移動し、[サポート]をクリックして https://support.juniper.net/support/ でジュニパーサポートポータルを開きます。ダウンロードタブを選択し、製品名を入力フィールドに製品名を入力し、製品の検索をクリックし、必要な製品を検索して選択し、ドロップダウンリストから適切なJunos OSとソフトウェアバージョンを選択します。同じページを下にスクロールし、+ツールセクションを展開し、必要なファイルをダウンロードします。OpenConfigモデル用のJUNOS Telemetry InterfaceデータモデルファイルとYANGファイル用のYANGモジュール。ストリーミングサーバーの設定の詳細については、streaming-server(Junos Telemetry Interface)を参照してください。
Protobufコンパクトメッセージフォーマット(ジュニパー独自仕様)
コレクターにストリーミングされた情報は、 TelemetryStream (テレメトリ_top.protoファイル)のトップレベルメッセージ構造を使用して送信されます。メッセージには、ストリーミングされるセンサー データのメタデータが含まれています (たとえば、センサー パス、データが送信されているシステム、データが送信されているノードなど)。実際のセンサー データは、トップレベル メッセージの拡張として送信されます。センサーデータ用に別のプロトファイルが送信されます。 テレメトリ_top.proto ファイルとセンサーprotoファイルは、コレクターでセンサーデータをデコードするために使用されます。
テレメトリ_top.protoファイルの構造
message TelemetryStream {
required string system_id = 1
[(telemetry_options).is_key = true];
optional uint32 component_id = 2
[(telemetry_options).is_key = true];
optional string sensor_name = 4
[(telemetry_options).is_key = true];
….
optional EnterpriseSensors enterprise = 101;
}
message EnterpriseSensors {
extensions 1 to max;
}
extend EnterpriseSensors {
// re-use IANA assigned numbers
optional JuniperNetworksSensors juniperNetworks = 2636;
}
message JuniperNetworksSensors {
extensions 1 to max; → ends with the extension message
}
このファイルは、 extension メッセージで終わります。
センサープロトファイルの構造
このファイルは extension メッセージで始まります。
extend JuniperNetworksSensors { → begins with the extension message
optional Port jnpr_interface_ext = 3;
}
message Port {
repeated InterfaceInfos interface_stats = 1;
}
message InterfaceInfos {
required string if_name = 1
[(telemetry_options).is_key = true];
optional uint64 init_time = 2;
…..
}
TelemetryStream メッセージには、さまざまな種類のデータを伝送するオプションのネスト構造体も含まれています。ネストされた構造体は、次のようなプライベートに定義されたセンサーデータを伝送することもできますEnterpriseSensors.以下の例を参照してください。
//
// This file defines the top level message used for all Juniper
// Telemetry packets encoded to the protocol buffer format.
// The top level message is TelemetryStream.
//
import "google/protobuf/descriptor.proto";
extend google.protobuf.FieldOptions {
optional TelemetryFieldOptions telemetry_options = 1024;
}
message TelemetryFieldOptions {
optional bool is_key = 1;
optional bool is_timestamp = 2;
optional bool is_counter = 3;
optional bool is_gauge = 4;
}
message TelemetryStream {
// router name or export IP address
required string system_id = 1 [(telemetry_options).is_key = true];
// line card / RE (slot number)
optional uint32 component_id = 2 [(telemetry_options).is_key = true];
// PFE (if applicable)
optional uint32 sub_component_id = 3 [(telemetry_options).is_key = true];
// configured sensor name
optional string sensor_name = 4 [(telemetry_options).is_key = true];
// sequence number, monotonically increasesing for each
// system_id, component_id, sub_component_id + sensor_name.
optional uint32 sequence_number = 5;
// timestamp (milliseconds since 00:00:00 UTC 1/1/1970)
optional uint64 timestamp = 6 [(telemetry_options).is_timestamp = true];
// major version
optional uint32 version_major = 7;
// minor version
optional uint32 version_minor = 8;
optional IETFSensors ietf = 100;
optional EnterpriseSensors enterprise = 101;
}
message IETFSensors {
extensions 1 to max;
}
message EnterpriseSensors {
extensions 1 to max;
}
extend EnterpriseSensors {
// re-use IANA assigned numbers
optional JuniperNetworksSensors juniperNetworks = 2636;
}
message JuniperNetworksSensors {
extensions 1 to max;
}
ジュニパーネットワークスなどの個々の企業が、エンタープライズセンサーによって生成される属性を定義および管理しています。各企業には固有の属性識別子が割り当てられています。現在の慣習では、各属性に IANA が割り当てたエンタープライズ MIB 識別子を使用しています。ジュニパーネットワークスの場合、この割り当てられた識別子は2636です。
推奨: 特定のメッセージタイプがエクスポートおよび受信されたことを確認するには、gpbメッセージの TelemetryStream.enterprise.juniperNetworks にある属性を確認します。
センサー データによって収集された各要素 (セマンティクスと対応するスキーマを含む) の説明については、 表 5 を参照してください。
| 要素タイプ |
説明 |
|---|---|
| カウンタ |
単調に増加する符号なし整数。最大値に達すると、ゼロに戻ります。 |
| ゲージ |
値を増減できる符号なしの 32 ビットまたは 64 ビット整数。この要素によって表されるデータの例としては、キューの深さや温度などの特定のリソースの瞬時値があります。 |
| レート |
カウンターやゲージなどの基本メトリックが変化するレート。この要素タイプでは、測定単位(ビット/秒など)と、レートが収集される間隔が明示的に定義されます。 |
| 平均 |
基本メトリックの複数のサンプルの平均。例えば、 平均キューの深さ データ要素は、キューの深さの複数の要素を平均することによって計算されます。この要素タイプでは、平均の計算に使用する測定数と、測定値間の時間間隔を定義することを強くお勧めします。それ以外の場合は、この平均値を計算する方法を明示的に定義する必要があります。 |
| ピーク |
基本メトリックの複数のサンプルの最大値。たとえば、 ピーク キューの深さ 要素は、キューの深さの複数の測定値を比較し、最大値を選択することによって計算されます。このデータ要素タイプでは、ピーク値の計算に使用する測定数と、測定値と測定値の間隔を定義することを強くお勧めします。それ以外の場合は、このピーク値の定義方法を明示的に定義します。また、この値が決してクリアされず、したがって全期間全体の最大値を表しているかどうかも知っておく必要があります。 |
各データ要素タイプには、要素サブセットも含まれます。たとえば、 Counter と Gauge のデータ要素には、 rate、 average、および peak 測定用のサブセットが含まれます。
サポートされているデータ型
GetRequest は、コレクター クライアントがテレメトリ データを受信するために Get RPC を開始すると送信されます。GetRequest 内で指定されるのは、ターゲットがデータ型を含むデータをコレクタに返すデータ要素です。データ型は、データが配信される形式を指定する変数です。
表6 は、Junosテレメトリでサポートされているデータ型を示しています。特に指定されていない限り、このデータタイプは、リモートプロシージャコール(gRPC)サービス、gRPCネットワーク管理インターフェイス(gNMI)サービス、またはUDPを使用したJunosテレメトリデータのエクスポートでサポートされています。
| タイプ |
値 |
説明 |
|---|---|---|
| 文字列 |
|
文字列値。 |
| int64 |
|
整数値。 |
| uint64 |
|
符号なし整数値。 |
| ブール値 |
|
ブール値。 |
| 浮動小数点 |
|
浮動小数点値。
注:
このデータ型は非推奨です。このデータ型ではなく、 |
| ダブル |
|
double 値は 64 ビット浮動小数点値です。 |
| 10進数64 |
|
10進数64でエンコードされた値。gNMIサービスでのみサポートされます。decimal64 を使用して、固定精度の 10 進数をエンコードします。値は、一連の数字として表され、精度は数字セットの小数点に続く桁数を指定します。次に例を示します。 message Decimal64 {
int64 digits = 1; // Set of digits.
uint32 precision = 2; // Number of digits following the decimal point.
注:
このデータ型は非推奨です。このデータ型ではなく、 |
| スカラー配列 |
|
混合型スカラー配列値。混合データ型 (string、int64、uint64、bool float、または decimal64) の値の同種配列。gNMIサービスでのみサポートされます。 |
| タイプ | 値 | 説明 |
|---|---|---|
| ieeefloat32 | バイナリ、長さ = 4 | IEEE 32ビット浮動小数点数。これは Open Config モデルのデータ型です。 この番号の形式は次のとおりです。 1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
注:バイナリ形式に相当するgNMIデータ型は「バイト」です。gNMI応答で、デバイスからfloat_val形式のデータが誤って受信され、コンプライアンス違反エラーが表示されました。データがbytes_val形式で返されるように変更が組み込まれました。4バイト(浮動小数点値を表す)は、ネットワークバイト順に送信されます。値を解釈する前に、必ずホストバイト順に並べ替えてください。
|
データ型の詳細については、 github と http://www.openconfig.net/ を参照してください。
Junosテレメトリによるパフォーマンス監視
Junosテレメトリの主な機能の1つにパフォーマンス監視があります。パフォーマンス管理システムへデータをストリーミングすると、ネットワーク管理者はリンクとノードの使用率の傾向を測定し、ネットワークの輻輳などの問題をリアルタイムでトラブルシューティングできます。
一般的な導入では、ネットワーク要素またはデバイスが、パフォーマンス管理システムのコレクターとして機能する2つの宛先サーバーに重複データをストリーミングします。2 つのコレクターにデータをストリーミングすると、冗長性が得られます。パフォーマンス管理システムのコレクターがデータを要求する方法と、デバイスがデータをストリーミングする方法の図については、 図 1 を参照してください。デバイスは、コマンドラインインターフェイス(CLI)、NETCONFによる設定、またはgRPCサブスクリプション呼び出しを使用して、データを収集およびエクスポートするためのセンサーをプロビジョニングします。コレクターは、テレメトリサブスクリプションを開始してデータを要求します。データは1回のみ要求され、定期的にストリーミングされます。
Junosテレメトリのその他の用途には、ネットワーク要素と、ネットワーク全体のトラフィック制御パスの作成を自動化するNorthstar Controllerなどの外部コントローラ間の運用状態の同期をサポートするリアルタイムデータの提供が含まれます。NorthStar Controllerは、ラベルスイッチパス(LSP)統計など、特定のネットワーク要素に関するテレメトリデータをサブスクライブできます。