소개
이 문서에서는 YANG Suite를 사용하여 샘플 텔레메트리 원격 프로시저 호출(RPC)을 수행함으로써 Cisco IOS®-XE 디바이스에서 모델 기반 텔레메트리를 구성하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- 텔레메트리를 사용할 때 필요한 데이터를 이해하기 위해서는 YANG에 대한 지식이 필요합니다.
- get, get-config, edit-config 등의 NETCONF 작업에 대한 지식
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- CSR1000V(Cisco IOS XE 17.3.3 포함)
- Cisco YANG Suite 버전 2.8
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
관련 제품
이 문서는 Cisco Catalyst 9000 스위치, Cisco ASR 1000, ISR 4000 및 CSR 1000 라우터를 비롯한 Cisco IOS XE 장치와 같은 하드웨어 및 소프트웨어 버전에서도 사용할 수 있습니다.
배경 정보
YANG Suite를 설치해야 합니다. YANG Suite 설치에 대한 자세한 내용은 설명서 또는 Github 저장소를 참조하십시오.
NETCONF를 사용하지 않더라도 디바이스에서 NETCONF-YANG을 구성하고 실행해야 합니다. NETCONF 컨피그레이션에 대한 자세한 내용은 설명서를 참조하십시오.
장치 프로파일, YANG 저장소 및 해당 장치와 관련된 YANG 모듈 집합이 YANG 제품군에 있어야 합니다. 디바이스 프로필 생성 방법, YANG 저장소 및 YANG 모듈 세트에 대한 자세한 내용은 Managing Device Profiles(디바이스 프로필 관리) 아래의 YANG Suite 설명서를 참조하십시오.
모델 기반 텔레메트리 정보
텔레메트리는 측정 및 기타 데이터를 원격 또는 액세스 불가능한 지점에서 수집하고 모니터링을 위해 수신 장비로 전송하는 자동화된 통신 프로세스입니다. 모델 기반 텔레메트리는 YANG 모델 데이터를 데이터 컬렉터로 스트리밍하는 메커니즘을 제공합니다.
애플리케이션은 NETCONF, RESTCONF 또는 gRPC gNMI(Network Management Interface) 프로토콜을 통해 표준 기반 YANG 데이터 모델을 사용하여 필요한 특정 데이터 항목을 구독할 수 있습니다. 명령줄(CLI)을 사용하여 서브스크립션을 생성할 수도 있습니다.
정형 데이터는 등록 기준 및 데이터 유형에 따라 정의된 범위(주기적으로) 또는 변경 시 게시됩니다.
텔레메트리 역할
텔레메트리를 사용하는 시스템에는 다양한 역할이 관련되어 있다. 이 문서에서는 다음과 같은 텔레메트리 역할에 대해 설명합니다.
- 게시자: 텔레메트리 데이터를 전송하는 네트워크 요소입니다.
- 수신자: 텔레메트리 데이터를 수신합니다. 이를 컬렉터라고도 합니다.
- 컨트롤러: 등록을 생성하지만 텔레메트리 데이터를 수신하지 않는 네트워크 요소입니다. 서브스크립션과 연결된 텔레메트리 데이터는 수신자에게 전달됩니다. 이를 관리 에이전트 또는 관리 엔터티라고도 합니다.
- 가입자: 구독을 만드는 네트워크 요소입니다. 기술적으로, 이 또한 수신자일 필요는 없지만, 이 문서에서는 둘 다 동일하다.
서브스크립션 개요
서브스크립션은 텔레메트리 역할 간의 연결을 생성하고, 텔레메트리 역할 간에 전송되는 데이터를 정의하는 항목입니다.
Cisco IOS XE 시스템의 원격 측정에는 두 가지 서브스크립션 유형이 사용됩니다. 동적 및 구성된 서브스크립션.
동적 구독은 게시자에 연결되는 클라이언트(구독자)에 의해 만들어지며 다이얼 인으로 간주됩니다. 구성된 서브스크립션은 게시자가 수신자에 대한 연결을 시작하도록 하므로 다이얼 아웃으로 간주됩니다.
서브스크립션 식별자
서브스크립션은 32비트 양의 정수 값으로 식별됩니다. 구성된 서브스크립션의 ID는 컨트롤러에 의해 설정되고 동적 서브스크립션의 ID는 게시자에 의해 설정됩니다.
데이터 원본 사양
서브스크립션의 텔레메트리 데이터 소스는 스트림 및 필터를 사용하여 지정됩니다. 스트림이라는 용어는 관련 이벤트 집합을 가리킵니다. RFC 5277은 이벤트 스트림을 일부 전달 기준과 일치하는 이벤트 알림 집합으로 정의합니다.
Cisco IOS XE는 두 개의 스트림을 지원합니다. yang-push 및 yang-notif-native입니다.
일반적으로 스트림의 이벤트 집합이 필터링됩니다. 서로 다른 필터 유형은 서로 다른 스트림 유형에 사용됩니다.
이 문서에서는 yang-push를 스트림 유형으로 사용하고 XPath 필터를 활용합니다.
구성
YANG Suite로 정기 동적 서브스크립션 구성
동적 구독은 게시자에 연결하고 해당 연결 내의 메커니즘(일반적으로 RPC)을 사용하여 구독 생성을 요청하는 구독자에 의해 만들어집니다. 구독의 수명은 구독자와 게시자 간의 연결 수명으로 제한되며, 텔레메트리 데이터는 해당 구독자에게만 전송됩니다. 게시자 또는 가입자가 재부팅되면 이러한 구독이 유지되지 않습니다. 대역 내 <establish-subscription> RPC를 사용하여 동적 서브스크립션을 생성할 수 있습니다. <establish-subscription> RPC는 IETF 텔레메트리 가입자에서 네트워크 디바이스로 전송됩니다. RPC의 스트림, xpath-filter 및 기간 필드는 필수입니다.
RPC가 전송되면 게시자의 RPC 회신에 결과 문자열이 포함된 요소가 있는 메시지가 포함됩니다.
이 표에서는 <rpc-reply> 메시지의 응답 및 응답 이유를 표시합니다.

YANG Suite에서 RPC를 전송하여 정기 구독을 구성할 수 있습니다.
XPath 필터를 가져오는 단계
XPath 필터를 가져오려면 스트리밍해야 하는 데이터를 정의한 후 YANG Suite를 활용할 수 있습니다. 이 예에서 메모리 통계 정보는 스트리밍할 데이터입니다.
1단계. YANG Suit의 Protocols(프로토콜) > NETCONF 아래에서 사용 중인 디바이스에 연결된 YANG 세트를 선택합니다. 이 예에서는 YANG 집합을 CSR1000V라고 합니다.
2단계. 관심 데이터가 포함된 YANG 모듈을 로드합니다. 이 예에서는 Cisco-IOS-XE-memory-oper입니다.
3단계. YANG 트리에서 XPath 필터를 가져올 노드를 찾습니다. 이 예에서는 memory-statistics입니다. 마우스 오른쪽 단추로 누르고 등록 정보를 선택합니다.
4단계. 표시되는 팝업 창에는 XPath 필터를 함께 정의하는 2개의 속성이 있습니다. 이러한 값은 Xpath 및 Prefix입니다.

주기적 NETCONF 동적 서브스크립션 생성 단계
주기적인 NETCONF 동적 서브스크립션을 생성하려면 IETF-event-notification YANG 모듈을 사용해야 합니다.
1단계. YANG Suit의 Protocols(프로토콜) > NETCONF 아래에서 사용 중인 디바이스에 연결된 YANG 세트를 선택합니다. 이 예에서는 YANG 집합을 CSR1000V라고 합니다.
2단계. IETF-event-notifications YANG 모듈을 로드합니다.
3단계. NETCONF 작업은 Other RPC여야 합니다.
4단계. Device(디바이스) 드롭다운 메뉴에서 원하는 디바이스를 선택한 다음 새 창 또는 새 탭에서 Open device window(디바이스 창 열기)를 클릭합니다.
5단계. 열리는 별도의 창에서 Start Session(세션 시작)을 클릭하여 디바이스와의 활성 NETCONF 세션을 설정합니다. 설정된 NETCONF 세션 창의 예입니다.

6단계. 이전 창으로 돌아갑니다. ietf-event-notification 트리의 노드에서 establish-subscription 노드를 확장하고 input을 선택합니다.
7단계. 스트림, 필터 및 업데이트 트리거 값을 정의해야 합니다.
스트림: 양-푸쉬
필터: xpath 필터
XPath 필터의 형식은 다음과 같아야 합니다.
/prefix:xpath
이 예에서는 Steps to Obtain the XPath Filter 섹션에서 얻은 매개변수를 사용합니다.
/memory-ios-xe-oper:memory-statistics/memory-statistics
팁: XPath 필터에서 "/"의 위치를 확인합니다.
8단계. update-trigger는 센티초(1/100초) 단위의 값입니다. 기간이 1000이면 10초마다 업데이트를 가져옵니다.
9단계. 스트림, 필터 및 업데이트 트리거 값이 제공되면 Build RPC를 클릭합니다. 그러면 이 이미지에 표시된 것과 같은 RPC가 나타납니다.

10단계. 이제 Run RPC(RPC 실행)를 클릭하고 주기적인 NETCONF Dial-In 서브스크립션을 생성할 수 있습니다.
11단계. RPC 메시지가 NETCONF 세션이 설정된 창에 나타납니다.
이 이미지는 전송된 RPC의 예이며 RPC-reply가 OK 메시지와 함께 수신되었음을 나타냅니다.

이 이미지는 10초마다 수신되는 메모리 통계 데이터의 예입니다.

YANG Suite로 On-Change Dynamic Subscription 구성
Configure a Periodic subscription with YANG Suite(YANG Suite로 정기 서브스크립션 구성) 섹션에 나와 있는 모든 단계는 이 섹션에 적용되며, 유일한 차이점은 업데이트 트리거 값에 있습니다. 여기서 값 0으로 댐핑 기간을 정의해야 합니다. 다른 값은 사용할 수 없습니다.
CDP 네이버 데이터에 대한 변경 시 서브스크립션을 설정하기 위한 RPC의 예입니다.

YANG Suite를 사용하여 정기적으로 구성된 서브스크립션 구성
구성된 서브스크립션은 컨트롤러에 의한 게시자의 관리 작업에 의해 생성되고, 서브스크립션에 의해 정의된 텔레메트리 데이터의 수신기 사양을 명시적으로 포함합니다. 이러한 서브스크립션은 디바이스의 컨피그레이션에 포함될 때 게시자의 재부팅 시에도 유지됩니다.
구성된 전화 접속 서브스크립션은 다음 방법 중 하나로 디바이스에 구성됩니다.
- 컨피그레이션 CLI를 사용하여 콘솔/VTY를 통해 디바이스 컨피그레이션으로 변경합니다.
- NETCONF/RESTCONF를 사용하여 원하는 서브스크립션을 구성합니다.
이 문서에서는 CLI를 사용하여 전화 접속 서브스크립션을 구성하는 방법을 다루지 않으며, 대신 YANG 제품군에서 NETCONF RPC 메시지를 보내 전화 접속 서브스크립션을 구성하는 방법을 보여 줍니다.
구성된 서브스크립션의 경우 gRPC 프로토콜을 사용할 수 있으며 yang-push 스트림에서만 사용할 수 있습니다. gRPC 전송 프로토콜에서는 키 값 Google 프로토콜 버퍼(kvGPB) 인코딩만 지원됩니다.
YANG Suite를 수신자로 사용하여 샘플 전화 접속 서브스크립션을 테스트할 수 있습니다.
정기적으로 구성된 서브스크립션을 작성하려면 Cisco-IOS-XE-mdt-cfg YANG 모듈을 사용해야 합니다.
1단계. YANG Suite의 Protocols(프로토콜) > gRPC Telemetry(gRPC 텔레메트리)에서 IP 주소 및 포트를 입력한 다음 Start telemetry receiver for YANG Suite를 클릭하여 지정된 IP 주소 및 포트에서 수신을 시작합니다.
참고: gRPC Telemetry 옵션을 사용할 수 없는 경우 YANG 제품군의 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단계. 이 예에서는 다음 값이 사용됩니다.
구독 id: 100
스트림: 양 푸쉬
인코딩: 인코드-kvgpb
기간: 1000
xpath 필터: /memory-ios-xe-oper:memory-statistics/memory-statistics

수신자에 대한 정보를 정의해야 합니다.
address: <IP 주소>
포트: <포트>
프로토콜: grpc-tcp

8단계. Build RPC(RPC 빌드) 버튼을 클릭합니다.
9단계. Run RPC(RPC 실행)를 클릭합니다.
10단계. 성공하면 Protocols(프로토콜) > gRPC Telemetry(gRPC 텔레메트리)에서 정보가 수신됩니다.

YANG Suite를 사용하여 변경 시 구성된 서브스크립션 구성
Configure a Periodic Configured Subscription with YANG Suite 섹션에 설명된 것과 동일한 프로세스를 수행하여 On-Change 다이얼아웃 서브스크립션을 구성하려면 no-sync-on-start leaf를 false로 설정해야 합니다.
이 이미지는 변경 시 구성된 구독에 대한 예제 RPC입니다.

다음을 확인합니다.
구성이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
Cisco IOS XE의 텔레메트리 서브스크립션에 대한 정보를 show telemetry ietf subscription all과 함께 표시합니다.
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> 세부 정보를 사용하여 서브스크립션에 대한 세부 정보를 나열합니다.
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 필터는 다음과 같습니다.
/memory-ios-xe-oper:memory-statistics/memory-statistics
XPath 필터의 문자 누락 또는 추가 문자와 같은 구문 오류는 잘못된 구독으로 이어질 수 있습니다.
YANG Suite 툴에 대한 지원이 필요한 경우 지원 메일러 또는 지원 포럼에 문의하십시오.
관련 정보