소개
이 문서에서는 샘플 텔레메트리 원격 프로시저 호출(RPC)을 수행하기 위해 YANG Suite를 사용하여 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-YANG은 NETCONF를 사용하지 않는 경우에도 디바이스에서 구성 및 실행되어야 합니다. NETCONF 구성에 대한 자세한 내용은 문서를 참조하십시오.
디바이스 프로필, YANG 저장소 및 관심 디바이스와 연결된 YANG 모듈 세트가 YANG Suite에 있어야 합니다. 디바이스 프로필, YANG 저장소 및 YANG 모듈 세트를 생성하는 방법에 대한 자세한 내용은 Managing Device Profiles(디바이스 프로필 관리)의 YANG Suite 설명서를 참조하십시오.
모델 기반 텔레메트리 정보
텔레메트리는 원격 또는 액세스할 수 없는 지점에서 측정과 기타 데이터를 수집하여 모니터링을 위해 수신 장치로 전송되는 자동화된 통신 프로세스입니다. 모델 기반 텔레메트리는 YANG 모델 데이터를 데이터 수집기로 스트리밍하는 메커니즘을 제공합니다.
애플리케이션은 NETCONF, RESTCONF 또는 gRPC Network Management Interface(gNMI) 프로토콜을 통해 표준 기반 YANG 데이터 모델을 사용하여 필요한 특정 데이터 항목에 가입할 수 있습니다. 명령줄(CLI)을 사용하여 서브스크립션을 생성할 수도 있습니다.
정형 데이터는 서브스크립션 기준 및 데이터 유형에 따라 정의된 패턴(정기) 또는 변경 시 게시됩니다.
텔레메트리 역할
텔레메트리를 사용하는 시스템에서는 서로 다른 역할이 사용됩니다. 이 문서에서는 이러한 텔레메트리 역할에 대해 설명합니다.
- 게시자: 텔레메트리 데이터를 전송하는 네트워크 요소입니다.
- 수신자: 텔레메트리 데이터를 수신합니다. 컬렉터라고도 합니다.
- 컨트롤러: 등록을 생성하지만 텔레메트리 데이터를 수신하지 않는 네트워크 요소입니다. 가입과 관련된 텔레메트리 데이터는 생성되며 수신자에게 전송됩니다. 관리 에이전트 또는 관리 엔티티라고도 합니다.
- 가입자: 등록을 만드는 네트워크 요소입니다. 기술적으로, 이 경우에도 수신자가 될 필요는 없지만 이 문서에서 둘 다 동일합니다.
구독 개요
등록은 텔레메트리 역할 간에 연결을 만들고, 간에 전송되는 데이터를 정의하는 항목입니다.
Cisco IOS XE 시스템의 텔레메트리에 두 가지 유형의 서브스크립션이 사용됩니다. 동적 및 구성된 서브스크립션
동적 서브스크립션은 게시자에 연결하는 클라이언트(가입자)에 의해 생성되며 다이얼 인으로 간주됩니다. 구성된 구독으로 인해 게시자가 수신자에 대한 연결을 시작할 수 있으며 그 결과 다이얼 아웃으로 간주됩니다.
구독 식별자
서브스크립션은 32비트 양의 정수 값으로 식별됩니다. 구성된 구독의 ID는 컨트롤러에서 설정되며 동적 구독의 경우 게시자가 설정합니다.
데이터 소스 사양
구독에 있는 텔레메트리 데이터의 소스는 스트림 및 필터를 사용하여 지정됩니다. 용어 스트림은 관련 이벤트 집합을 참조합니다. RFC 5277은 일부 포워딩 기준과 일치하는 이벤트 알림 집합으로 이벤트 스트림을 정의합니다.
Cisco IOS XE는 두 개의 스트림을 지원합니다. 양푸시와 양알티프 토박이다.
일반적으로 스트림의 이벤트 집합이 필터링됩니다. 서로 다른 필터 유형은 서로 다른 스트림 유형에 사용됩니다.
이 문서에서는 양 푸시를 스트림 유형으로 사용하며 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단계. Protocols(프로토콜) > NETCONF 아래의 YANG Suit(YANG 소송)에서 사용 중인 디바이스와 연결된 YANG 세트를 선택합니다. 이 예에서는 YANG 세트를 CSR1000V라고 합니다.
2단계. 관심 데이터가 포함된 YANG 모듈을 로드합니다. 이 예에서는 Cisco-IOS-XE-memory-oper입니다.
3단계. YANG 트리에서 XPath 필터를 가져올 노드를 찾습니다. 이 예에서는 메모리 통계입니다. 이 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
4단계. 표시되는 팝업 창에는 XPath 필터를 함께 정의하는 2가지 속성이 있습니다. 이러한 값은 Xpath 및 Prefix입니다.
정기 NETCONF 동적 서브스크립션 생성 단계
정기 NETCONF 동적 서브스크립션을 생성하려면 IETF-event-notification YANG 모듈을 사용해야 합니다.
1단계. Protocols(프로토콜) > NETCONF 아래의 YANG Suit(YANG 소송)에서 사용 중인 디바이스와 연결된 YANG 세트를 선택합니다. 이 예에서는 YANG 세트를 CSR1000V라고 합니다.
2단계. IETF-event-notifications YANG Module을 로드합니다.
3단계. NETCONF 작업은 다른 RPC여야 합니다.
4단계. Device(디바이스) 드롭다운 메뉴에서 원하는 디바이스를 선택한 다음 새 창이나 새 탭에서 디바이스 창 열기를 클릭합니다.
5단계. 열리는 별도의 창에서 Start Session(세션 시작)을 클릭하여 디바이스와 활성 NETCONF 세션을 설정합니다. 이것은 설정된 NETCONF 세션 창의 예입니다.
6단계. 이전 창으로 돌아갑니다. ietf-event-notification 트리 아래의 노드에서 establish-subscription 노드를 확장하고 입력을 선택합니다.
7단계. 스트림, 필터 및 업데이트 트리거 값을 정의해야 합니다.
스트림: 양압
필터: xpath-filter
XPath 필터에는 다음 형식이 있어야 합니다.
/prefix:xpath
이 예에서는 XPath 필터 가져오기 단계에서 얻은 매개 변수를 사용합니다.
/memory ios-xe-oper:메모리 통계/메모리 통계
팁: XPath 필터에서 "/"의 위치에 유의하십시오.
8단계. update-trigger는 10초(1/100/초)의 값입니다. 1000의 기간은 10초마다 업데이트를 가져옵니다.
9단계. 스트림, 필터 및 update-trigger 값이 제공되면 Build RPC를 클릭하고 이 이미지에 표시된 것과 같은 RPC가 나타납니다.
10단계. 이제 Run RPC(RPC 실행)를 클릭하고 주기적인 NETCONF Dial-In 구독을 만들 수 있습니다.
11단계. RPC 메시지는 NETCONF 세션이 설정된 창에 나타납니다.
이 이미지는 RPC가 전송되고 OK 메시지와 함께 수신된 RPC-reply의 예입니다. 이는 서브스크립션이 성공했음을 의미합니다.
이 이미지는 10초마다 수신되는 메모리 통계 데이터의 예입니다.
YANG Suite로 변경 시 동적 서브스크립션 구성
YANG Suite를 사용한 정기 가입 구성 섹션에 표시된 모든 단계는 이 섹션에 적용되며 유일한 차이점은 업데이트 트리거 값이며, 이 값에는 값이 0인 댐프닝 기간을 정의해야 하며 다른 값은 사용할 수 없습니다.
다음은 CDP 네이버 데이터에 대한 변경 시 서브스크립션을 설정하는 RPC의 예입니다.
YANG Suite를 사용하여 정기 구성 서브스크립션 구성
구성된 구독은 컨트롤러에서 게시자의 관리 작업에 의해 생성되며 구독에 의해 정의된 텔레메트리 데이터의 수신자의 사양을 명시적으로 포함합니다. 이러한 서브스크립션은 디바이스의 컨피그레이션에 포함되기 때문에 게시자가 재부팅될 때마다 유지됩니다.
구성된 다이얼 아웃 서브스크립션은 다음 방법 중 하나로 디바이스에 구성됩니다.
- 컨피그레이션 CLI를 사용하여 콘솔/VTY를 통해 디바이스 컨피그레이션으로 변경합니다.
- NETCONF/RESTCONF를 사용하여 원하는 서브스크립션을 구성합니다.
이 문서에서는 CLI로 전화 걸기 서브스크립션을 구성하는 방법에 대해 설명하지 않습니다. 대신 YANG Suite에서 NETCONF RPC 메시지를 전송하여 전화 걸기 서브스크립션을 구성하는 방법을 보여 줍니다.
구성된 서브스크립션의 경우 gRPC 프로토콜을 사용할 수 있으며 양-푸시 스트림에서만 사용할 수 있습니다. gRPC 전송 프로토콜에서는 kvGPB(Key-value Google Protocol Buffers) 인코딩만 지원됩니다.
YANG Suite를 수신기로 사용하여 샘플 다이얼아웃 서브스크립션을 테스트할 수 있습니다.
정기 구성 서브스크립션을 생성하려면 Cisco-IOS-XE-mdt-cfg YANG 모듈을 사용해야 합니다.
1단계. YANG Suite의 Protocols(프로토콜) > gRPC Telemetry(IP 텔레메트리)에서 IP 주소와 포트를 입력한 다음 Start telemetry receiver for YANG Suite(YANG Suite용 텔레메트리 수신기 시작)를 클릭하여 지정된 IP 주소 및 포트에서 수신 대기를 시작합니다.
참고: gRPC Telemetry 옵션을 사용할 수 없는 경우 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단계. 이 값은 다음 예에 사용됩니다.
구독 ID: 100
스트림: 양푸시
인코딩: 인코딩kvgpb
기간: 1000
xpath 필터: /memory-ios-xe-oper:memory-statistics/memory statistic
수신자에 대한 정보를 정의해야 합니다.
주소: <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(YANG Suite를 사용하여 주기적 구성 서브스크립션 구성) 섹션에 설명된 것과 동일한 프로세스를 변경 시 다이얼 아웃 서브스크립션을 구성하려면 변경된 값은 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 내부 연결을 사용하여 수신자에 대한 연결 상태를 확인합니다.
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:메모리 통계/메모리 통계
XPath 필터에 문자 누락 또는 추가 문자 등과 같은 구문 오류가 발생하면 잘못된 서브스크립션으로 이어질 수 있습니다.
YANG Suite 툴에 대한 지원이 필요한 경우 지원 메일 또는 지원 포럼에 문의하십시오.
관련 정보