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 파일은 사용하지 않는 것이 좋습니다. YANG 파일에서 눈에 띄는 지연이 있는 명령은 피해야 합니다. 이러한 명령을 포함하면 xmlproxyd의 성능뿐만 아니라 다른 xmlproxyd 센서에도 영향을 줄 수 있습니다.

일부 운영 모드 명령의 출력은 동적이며 세부 정보 표시 수준은 구성 및 하드웨어와 같은 요인에 따라 달라집니다. 이러한 명령의 예로는 , , show arpshow route, , show bfdshow bgpshow ddos-protection의 변형show interfaces이 있습니다.

명령의 세부 정보 표시 수준을 확인하려면 | | display xml count 명령을 실행합니다command-name. 줄 수가 4000줄 값을 초과하면 XML 프록시 스트리밍에 명령이 권장되지 않습니다. 이 값은 내부 기준선을 기반으로 한 근사치에 가깝습니다. 장치 유형, 장치의 처리 능력 및 기존 CPU 부하와 같은 다양한 요인에 따라 더 적을 수 있습니다. 따라서 이 기능은 장치의 성능에 따라 신중하게 사용해야 합니다.

Junos OS 또는 Junos OS Evolved 운영 모드 명령에 매핑되는 YANG 파일을 사용하기 전에 | command-namedisplay xml 명령을 실행하여 명령이 유효한 XML 출력을 생성하고 잘못된 태그, 데이터 또는 형식을 포함하지 않는지 확인할 수 있습니다.

자세한 정보 표시 명령에 매핑되는 YANG 파일을 사용하면 다음 중 하나 이상이 발생합니다.

  • xmlproxyd 프로세스 CPU 사용률이 여전히 높습니다. xmlproxyd에 추적이 사용 가능한 경우 CPU 사용률이 훨씬 더 높아집니다.

  • xmlproxyd 프로세스 메모리 사용률이 증가합니다.

  • xmlproxyd 프로세스 상태는 명령 출력이 장황하고 xmlproxyd가 명령의 원격 프로시저 호출(RPC) 출력을 읽는 데 상당한 시간을 소비하고 있음을 나타내는 로 표시될 sbwait수 있습니다.

  • 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 앞의 출력에 표시된 태그는 , up-time, . 및 load-average-1와 같은 date-time리프가 포함된 컨테이너입니다. active-user-count 다음은 이 컨테이너에 대한 샘플 YANG 파일입니다.

팁:

태그에는 uptime-information 사용자 항목 목록이 포함된 라는 다른 컨테이너 user-table 도 있습니다.

다음은 이 컨테이너에 대한 샘플 YANG 파일입니다.

사용자 정의 YANG 파일 생성

YANG 파일은 실행할 Junos CLI 명령, 센서가 배치되는 리소스 경로, 일치하는 XML 태그에서 가져온 키 값 쌍을 정의합니다.

Junos OS용 사용자 지정 YANG 파일은 RFC 6020 YANG 1.0 YANG - NETCONF(Network Configuration Protocol)를 위한 데이터 모델링 언어 및 RFC 7950 YANG 1.1 데이터 모델링 언어에 정의된 YANG 언어 구문을 따릅니다. XML 프록시를 구성하는 파일에 특정 지시문이 있어야 합니다.

(데몬) 프로세스를 사용하여 xmlproxyd 텔레메트리 데이터를 변환하려면 파일을 생성합니다 render.yang . 이 파일에서 은(는 dr:command-app ) 로 xmlproxyd설정됩니다.

XML 프록시 YANG 파일 이름 및 모듈 이름은 다음으로 시작해야 합니다.xmlproxyd_

  • XML 프록시 YANG 파일 이름에 확장자를 .yang추가합니다(예: xmlproxyd_sysusers.yang

  • 모듈 이름에는 확장자 .yang없이 파일 이름을 사용합니다. 예를 들어, xmlproxyd_sysusers

YANG 파일 생성을 단순화하려면 작업 예제를 수정하여 시작하는 것이 가장 쉽습니다.

  1. 모듈의 이름을 제공합니다. 모듈 이름은 XML 프록시 YANG 파일 이름과 동일한 이름으로 시작해야 xmlproxyd_ 합니다.

    예를 들어, 라는 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의 출력 위치를 지정합니다. 여기서 company-name 은(는) 위치에 지정한 이름입니다.

    dr:command-top-of-output "/company-name";

  5. RPC를 실행하려면 다음 명령을 포함합니다.

    dr:command-full-name "drend juniper-netconf-get";

  6. 데이터를 검색할 CLI 명령을 지정합니다. 요청된 샘플 주파수에서 실행되는 Junos OS CLI 명령은 데몬에 xmlproxyd 의해 정의 dr:cli-command 되고 실행됩니다.

    Junos OS 명령에 show system users대한 명령 출력을 검색하려면:

    dr:cli-command "show system users";

  7. 권한을 에스컬레이션하고, "루트"로 로그온하고, 텔넷을 통해 내부 관리 소켓에 연결하고, RPC에 대한 도움말을 지정합니다.

    dr: command-help “default <get> rpc”;

    이것이 YANG 파일에 포함되면 디버깅에 도움이 되는 출력이 내부 관리 소켓의 출력에 표시됩니다 help drend .

    200-juniper-netconf-get-0 system users <get> RPC

  8. 계층을 지정하고 명령을 사용하여 dr:source 컨테이너, 목록 또는 특정 리프에 매핑합니다. 센서가 보고되는 절대 경로는 로 연결된 /’출력 그룹 junos 플러스 system-users-information에서 작성됩니다. 경로는 /junos/system-users-information/ 이 사용자 지정 센서에 대한 정보를 쿼리할 경로입니다.
    경고:

    사전 정의된 네이티브 경로(주니퍼 정의 경로) 및 OpenConfig 경로(리소스)와 충돌하거나 겹치는 사용자 지정 YANG 모델을 생성해서는 안 됩니다. 이렇게 하면 정의되지 않은 동작이 발생할 수 있습니다.

    예를 들어, 에서 새 리프를 정의하거나 또는 /interfaces와 같은 /junos/system/linecard/firewall리소스 경로에 대한 노드를 보강하는 모델을 만들지 마십시오.

    컨테이너, 리프 및 CLI 명령 출력의 XML 태그 또는 값 간의 일대일 매핑은 출력 컨테이너 내에서 에서 uses 참조하는 그룹화에 정의됩니다. 그룹화 는 서로 다른 컨테이너 출력에서 여러 번 참조될 수 있습니다. 아래 컨테이너 system-users-information 는 system-users-information 그룹화를 사용합니다. 그러나 CLI 명령 XML 출력의 출력 XML 태그에 대한 모든 컨테이너, 목록 및 리프에 대해 앞서 언급한 일대일 매핑 없이 정의됩니다.

  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에서 자동으로 빌드된 이미지를 사용하여 수집기를 시작합니다. 아래 샘플 쿼리 출력은 경로별 센서 보고서를 보여 줍니다. 모든 키는 사람이 읽을 수 있는 형식으로 절대 경로로 전송됩니다. 목록의 경우 절대 경로에는 InfluxDB와 같은 (시계열) 데이터베이스의 값을 그룹화하는 데 이상적인 XPATH 형식의 인덱스가 포함됩니다. 예를 들어, 아래 출력은 경로를 /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/보여줍니다.

    Ctrl-C를 사용하여 센서 데이터 스트림을 종료할 수 있습니다.

    아래 표시된 샘플 쿼리는 경로당 두 개의 센서 보고서를 보여준 다음 Ctrl-C로 종료했습니다. 모든 키는 절대 경로로 사람이 읽을 수있는 형식으로 전송되며 목록의 경우 InfluxDB와 같은 (시계열) 데이터베이스의 값을 그룹화하는 데 이상적인 XPATH 형식의 인덱스를 포함합니다 (예 : /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/

  3. 명령을 사용하여 모듈(센서)이 로드되었는지 확인합니다. 여기서 sysusers 는 패키지 이름입니다.show system yang package sysusers
  4. Junos OS 구성에서 gRPC를 활성화합니다.

사용자 정의 YANG 파일 설치

Junos Telemetry Interface의 XML 프록시에 대한 사용자 정의 YANG 파일을 추가, 검증, 수정 또는 삭제하려면 운영 모드에서 명령 세트를 사용합니다 request system yang .

  1. XML 프록시 YANG 파일의 이름과 이를 설치할 파일 경로를 지정합니다. 이 명령은 디렉터리에 파일을 /opt/lib/render 만듭니다.json.
    참고:

    이 명령은 현재 라우팅 엔진에서만 수행할 수 있습니다.

    명령으로 request system yang add package package-name proxy-xml module 여러 YANG 모듈을 추가하려면 괄호로 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 활성화합니다. xmlproxyd 로그 파일에서 CLI 명령의 RPC가 전송되었는지 여부와 응답이 수신되었는지 확인합니다.

  1. show log xmlproxyd 명령을 실행하여 xmlproxyd 로그를 표시합니다. 필드 xmlproxy_execute_cli_command: 값은 RPC가 전송되었는지 여부를 나타냅니다. 필드 xmlproxy_build_context 값은 명령을 나타냅니다.