概要
このドキュメントでは、YANG Suiteを使用してCisco IOS®-XEデバイスのモデル駆動型テレメトリを設定し、テレメトリリモートプロシージャコール(RPC)のサンプルを実行する方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- YANGの知識は、テレメトリを使用する際に必要なデータを理解するために必要です。
- get、get-config、edit-configなどのNETCONF操作に関する知識。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Cisco IOS XE 17.3.3を搭載したCSR1000V
- Cisco YANG Suiteバージョン2.8
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
関連製品
このドキュメントは、Cisco Catalyst 9000スイッチ、Cisco ASR 1000、ISR 4000、およびCSR 1000ルータを含むCisco IOS XEデバイスのハードウェアとソフトウェアのバージョンでも使用できます。
背景説明
YANG Suiteをインストールする必要があります。YANG Suiteのインストールに関する詳細は、ドキュメントまたはGithubリポジトリを参照してください。
NETCONF-YANGは、NETCONFが使用されていない場合でも、デバイスで設定および実行する必要があります。NETCONFの設定の詳細については、ドキュメントを参照してください。
対象のデバイスに関連付けられたデバイスプロファイル、YANGリポジトリ、およびYANGモジュールセットがYANG Suiteに存在する必要があります。デバイスプロファイル、YANGリポジトリ、およびYANGモジュールセットの作成方法の詳細については、「デバイスプロファイルの管理」のYANG Suiteのドキュメントを参照してください。
モデル駆動型テレメトリに関する情報
テレメトリは、測定およびその他のデータをリモートまたはアクセス不可能なポイントで収集し、受信機器に送信して監視するための自動通信プロセスです。モデル駆動型テレメトリは、YANGモデル化データをデータコレクタにストリーミングするメカニズムを提供します。
アプリケーションは、NETCONF、RESTCONF、またはgRPC Network Management Interface(gNMI)プロトコルを介して、標準ベースのYANGデータモデルを使用して、必要な特定のデータ項目をサブスクライブできます。サブスクリプションは、コマンドライン(CLI)でも作成できます。
構造化データは、サブスクリプション基準とデータタイプに基づいて、定義された順序(定期的)または変更時にパブリッシュされます。
テレメトリの役割
テレメトリを使用するシステムでは、さまざまな役割が関係します。このドキュメントでは、次のテレメトリの役割について説明します。
- 発行元:テレメトリデータを送信するネットワーク要素。
- レシーバ:テレメトリデータを受信します。これはコレクタとも呼ばれます。
- コントローラ:サブスクリプションを作成するが、テレメトリデータを受信しないネットワーク要素。サブスクリプションに関連付けられたテレメトリデータは、レシーバに送信されます。これは、管理エージェントまたは管理エンティティとも呼ばれます。
- 加入者:サブスクリプションを作成するネットワーク要素。技術的には、これはレシーバである必要はありませんが、このドキュメントでは、両方とも同じです。
サブスクリプションの概要
サブスクリプションは、テレメトリロール間の関連付けを作成し、その間で送信されるデータを定義するアイテムです。
Cisco IOS XEシステムのテレメトリでは、次の2種類のサブスクリプションが使用されます。動的および設定済みのサブスクリプション
ダイナミックサブスクリプションは、パブリッシャに接続するクライアント(サブスクライバ)によって作成され、ダイヤルインと見なされます。設定されたサブスクリプションにより、パブリッシャはレシーバへの接続を開始し、その結果、ダイヤルアウトと見なされます。
サブスクリプションID
サブスクリプションは、32ビットの正の整数値で識別されます。設定済みのサブスクリプションのIDはコントローラによって設定され、ダイナミックサブスクリプションのIDはパブリッシャによって設定されます。
データソースの仕様
サブスクリプション内のテレメトリデータのソースは、ストリームおよびフィルタを使用して指定されます。ストリームという用語は、関連する一連のイベントを指します。RFC 5277では、イベントストリームを、転送基準に一致するイベント通知のセットとして定義しています。
Cisco IOS XEは、次の2つのストリームをサポートします。yang-pushおよびyang-notif-native。
通常、ストリームからの一連のイベントがフィルタリングされます。異なるストリームタイプに対して異なるフィルタタイプが使用されます。
このドキュメントでは、ストリームの種類としてyang-pushを使用し、XPathフィルタを利用します。
設定
YANG Suiteによる定期的なダイナミックサブスクリプションの設定
ダイナミックサブスクリプションは、パブリッシャに接続し、その接続内のメカニズム(通常はRPC)を使用してサブスクリプションの作成を呼び出すサブスクライバによって作成されます。サブスクリプションのライフタイムは、サブスクライバとパブリッシャ間の接続のライフタイムに制限され、テレメトリデータはそのサブスクライバにのみ送信されます。パブリッシャまたはサブスクライバがリブートされても、これらのサブスクリプションは保持されません。インバンド<establish-subscription>のRPCを使用して、動的なサブスクリプションを作成できます。<establish-subscription> RPCは、IETFテレメトリサブスクライバからネットワークデバイスに送信されます。RPCのstream、xpath-filter、およびperiodフィールドは必須です。
RPCが送信されると、パブリッシャからのRPC応答に、結果文字列を含む要素を含むメッセージが含まれます。
次の表に、<rpc-reply>メッセージの応答とその理由を示します。
YANG SuiteからRPCを送信して、定期的なサブスクリプションを設定できます。
XPathフィルタの取得手順
XPathフィルタを取得するには、ストリーミングする必要があるデータを定義した後でYANG Suiteを利用できます。この例では、メモリ統計情報はストリームするデータです。
ステップ1:YANGスーツの[Protocols] > [NETCONF]で、使用中のデバイスに関連付けられているYANGセットを選択します。この例では、YANGセットはCSR1000Vと呼ばれます。
ステップ2:対象のデータを含むYANGモジュールをロードします。この例では、Cisco-IOS-XE-memory-operです。
ステップ3:YANGツリーでは、XPathフィルタを取得するノードを探します。この例では、memory-statisticです。ノードを右クリックし、[Properties]を選択します。
ステップ4:表示されるポップアップウィンドウには、XPathフィルタを定義する2つのプロパティがあります。これらの値はXpathとPrefixです。
定期的なNETCONFダイナミックサブスクリプションを作成する手順
定期的なNETCONFダイナミックサブスクリプションを作成するには、IETF-event-notification YANGモジュールを使用する必要があります。
ステップ1:YANGスーツの[Protocols] > [NETCONF]で、使用中のデバイスに関連付けられているYANGセットを選択します。この例では、YANGセットはCSR1000Vと呼ばれます。
ステップ2: IETF-event-notifications YANG Moduleをロードします。
ステップ3:NETCONFの操作は他のRPCである必要があります。
ステップ4:[デバイス(Device)]ドロップダウンメニューで対象のデバイスを選択し、[新しいウィンドウまたは新しいタブでデバイスウィンドウを開く(Open device window in a new window)]をクリックします。
ステップ5:開いた別のウィンドウで、[Start Session]をクリックして、デバイスとのアクティブなNETCONFセッションを確立します。これは、確立されたNETCONFセッションウィンドウの例です。
ステップ6:前のウィンドウに戻ります。ietf-event-notification treeの下のノードで、establish-subscriptionノードを展開し、inputを選択します。
ステップ7:ストリーム、フィルタ、および更新トリガー値を定義する必要があります。
stream:ヤンプッシュ。
[filter]:xpath-filter
XPathフィルタは、次の形式である必要があります。
/prefix:xpath
この例では、「XPathフィルタの取得手順」セクションで取得したパラメータを使用します。
/memory-ios-xe-oper:memory-statistics/memory-statistic
ヒント:XPathフィルタの「/」の位置に注意してください
ステップ8:update-triggerは100秒(1/100秒)の値です。1000の期間は、10秒ごとに更新を取得します。
ステップ9:ストリーム、フィルタ、および更新トリガーの値を指定したら、[Build RPC]をクリックします。この図に示すようなRPCが表示されます。
ステップ10:[Run RPC]をクリックして、定期的なNETCONFダイヤルインサブスクリプションを作成できます。
ステップ11:NETCONFセッションが確立されたウィンドウにRPCメッセージが表示されます。
次の図は、送信されたRPCの例であり、OKメッセージで受信されたRPC-replyは、サブスクリプションが成功したことを意味します。
次の図は、10秒ごとに受信されるメモリ統計情報データの例です。
YANG SuiteによるOn-Changeダイナミックサブスクリプションの設定
「YANG Suiteを使用した定期購読の設定」セクションに示されているすべての手順がこのセクションに適用されます。唯一の違いは、update-triggerの値で、0の値を使用してダンプニング期間を定義する必要があり、他の値は使用できません。
これは、CDPネイバーデータに対する変更時のサブスクリプションを確立するためのRPCの例です。
YANG Suiteを使用した定期的な設定済みサブスクリプションの設定
設定済みのサブスクリプションは、コントローラによってパブリッシャの管理操作によって作成され、サブスクリプションによって定義されたテレメトリデータのレシーバの指定を明示的に含めます。これらのサブスクリプションは、デバイスの設定の一部になるため、パブリッシャのリブート後も継続します。
設定されたダイヤルアウトサブスクリプションは、次のいずれかの方法でデバイスに設定されます。
- 設定CLIを使用して、コンソール/VTYを介してデバイス設定に変更する。
- NETCONF/RESTCONFを使用して、必要なサブスクリプションを設定します。
このドキュメントでは、CLIを使用してダイヤルアウトサブスクリプションを設定する方法については説明しません。代わりに、YANG SuiteからNETCONF RPCメッセージを送信してダイヤルアウトサブスクリプションを設定する方法を示します。
設定されたサブスクリプションでは、gRPCプロトコルが使用可能であり、yang-pushストリームでのみ使用できます。gRPCトランスポートプロトコルでは、キー値のGoogleプロトコルバッファ(kvGPB)エンコーディングだけがサポートされています。
YANG Suiteをレシーバとして使用して、ダイヤルアウトサブスクリプションのサンプルをテストできます。
定期的に構成されたサブスクリプションを作成するには、Cisco-IOS-XE-mdt-cfg YANGモジュールを使用する必要があります。
ステップ1:YANG Suiteでは、[Protocols] > [gRPC Telemetry]の下にIPアドレスとポートを入力し、[Start telemetry receiver for YANG Suite]をクリックして、表示されたIPアドレスとポートでリスニングをを開始します。
注:gRPCテレメトリオプションが使用できない場合、プラグインはYANG Suiteの[Admin] > [Manage plugins]ページからインストールできます
ステップ2:[Protocols] > [NETCONF]で、使用中のデバイスに関連付けられているYANGセットを選択します。この例では、YANGセットはCSR1000Vと呼ばれます。
ステップ3: Cisco-IOS-XE-mdt-cfg YANGモジュールをロードします。
ステップ4:NETCONF操作はedit-configである必要があります。
ステップ5:対象のデバイスを選択します。
ステップ6:Cisco-IOS-XE-mdt-cfgツリーで、mdt-subscriptionノードに次の値を定義する必要があります。subscription-id、stream、encoding、period、およびxpath-filterまた、レシーバに関する情報は次のとおりです。IPアドレス、ポート、プロトコル。
ステップ7:この例では、次の値を使用します。
subscription-id:100
stream:ヤンプッシュ
エンコード:encode-kvgpb
期間:1,000
xpathフィルタ:/memory-ios-xe-oper:memory-statistics/memory-statistic
レシーバに関する情報を定義する必要がある
address :<IPアドレス>
port :<port>
protocol :grpc-tcp
ステップ8:[Build RPC]ボタンをクリックします。
ステップ9:[RPCの実行]をクリックします。
ステップ10:成功した場合、[Protocols] > [gRPC Telemetry]の下に情報が表示されます。
YANG SuiteによるOn-Change構成済みサブスクリプションの設定
On-Changeダイヤルアウトサブスクリプションを設定するには、「YANGスイートによる定期構成済みサブスクリプションの設定」セクションで説明したのと同じプロセスに従います。変更される唯一の値は、no-sync-on-startリーフをfalseに設定する必要があります。
次の図は、変更時に設定されるサブスクリプションのRPCの例です。
確認
ここでは、設定が正常に機能しているかどうかを確認します。
show telemetry ietf subscription allを使用して、Cisco IOS XEのテレメトリサブスクリプションに関する情報を表示します。
Device#
show telemetry ietf subscription all
Telemetry subscription brief
ID Type State Filter type
--------------------------------------------------------
100 Configured Valid xpath
2147483651 Dynamic Valid xpath
show telemetry ietf <subscriptionID> detailを使用して、サブスクリプションに関する詳細をリストします。
Device#show telemetry ietf 100 detail
Telemetry subscription detail:
Subscription ID: 2147483651
Type: Dynamic
State: Valid
Stream: yang-push
Filter:
Filter type: xpath
XPath: /memory-ios-xe-oper:memory-statistics/memory-statistic
Update policy:
Update Trigger: periodic
Period: 10000
Encoding: encode-xml
Source VRF:
Source Address:
Notes:
Receivers:
Address Port Protocol Protocol Profile
-----------------------------------------------------------------------------------------
10.88.246.10 57344 netconf
show telemetry internal connectionを使用して、レシーバへの接続のステータスを確認します。
Device# show telemetry internal connection
Telemetry connection
Peer Address Port VRF Source Address Transport State Profile
--------------- ----- --- --------------- ---------- ------------- -------------
10.88.246.10 57344 0 10.88.246.2 grpc-tcp Active
トラブルシュート
ここでは、設定のトラブルシューティングに使用できる情報を示します。
シナリオ1.テレメトリサブスクリプションの状態が有効で、レシーバでストリームを受信しない場合。
レシーバへの接続のステータスを確認します。
Device#show telemetry internal connection
Telemetry connection
Peer Address Port VRF Source Address Transport State Profile
--------------- ----- --- --------------- ---------- ------------- -------------
10.88.246.10 57350 0 10.88.247.86 grpc-tcp Connecting
状態がConnectingの場合は、パブリッシャとレシーバの間の正しい接続を確認します。
Device# ping
使用中のポートが開いていることを確認します。
Device# telnet
Trying 10.88.246.10, 57350 ... % Connection refused by remote host
この例では、ポートはオープンまたは到達不能です。ポートをブロックできるファイアウォールが存在せず、指定されたポートが正しいことを確認します。
VRFを使用するデバイスでは、設定されたサブスクリプションのRPCで送信元VRF/送信元アドレスを指定する必要があります。次の図は、送信元VRFが指定されているRPCを示しています。
シナリオ2.テレメトリサブスクリプションの状態が無効である場合。
Device# show telemetry ietf subscription all
Telemetry subscription brief
ID Type State Filter type
--------------------------------------------------------
200 Configured Invalid xpath
サブスクリプションの詳細を確認します。
Device# show telemetry ietf subscription 200 detail
Telemetry subscription detail:
Subscription ID: 200
Type: Configured
State: Invalid
Stream: yang-push
Filter:
Filter type: xpath
XPath: /memory-ios-xe-oper:/memory-statistics/memory-statistic
Update policy:
Update Trigger: periodic
Period: 1000
Encoding: encode-kvgpb
Source VRF:
Source Address:
Notes: XPath parse error 'Invalid expression: offset(21)' 58.
Receivers:
Address Port Protocol Protocol Profile
-----------------------------------------------------------------------------------------
10.88.247.89 57344 grpc-tcp
XPathフィルタの構文に注意してください。XPathフィルタには、「:」の後に「/」が追加されています。正しいXPathフィルタは次のとおりです。
/memory-ios-xe-oper:memory-statistics/memory-statistic
XPathフィルタに文字や余分な文字がないなどの構文エラーがあると、無効なサブスクリプションが発生する可能性があります。
YANG Suiteツールのサポートが必要な場合は、サポートメーラまたはサポートフォームにお問い合わせください。
関連情報