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“获取”远程过程调用 (RPC) 访问数据。

此任务向您展示如何对 Junos OS作模式命令的输出进行流式传输。

最佳实践:

建议不要使用映射到具有广泛或冗长输出的 Junos OS作命令或者生成输出速度较慢的 YANG 文件。应避免在 YANG 文件中使用具有明显延迟的命令。包含此类命令可能会影响其他 xmlproxyd 传感器以及 xmlproxyd 的性能。

某些作模式命令的输出是动态的,其详细程度取决于配置和硬件等因素。此类命令的示例包括 、、show routeshow bgpshow arpshow bfdshow ddos-protection的任意变体。show interfaces

要检查命令的详细级别,请发出 command-name| display xml | count 命令。如果行数超过 4000 行,则不建议将命令用于 XML 代理流式处理。该值更像是基于内部基线的近似值。它可能会更少,具体取决于各种因素,例如设备类型、设备的处理能力和现有 CPU 负载。因此,需要根据设备的性能谨慎使用此功能。

在使用映射到 Junos OS 或 Junos OS 演化版作模式的 YANG 文件之前,可以发出 command-name命令 | display xml 以验证命令是否生成有效的 XML 输出,并且不包含无效的标记、数据或格式。

使用映射到详细命令的 YANG 文件会导致以下一项或多项结果:

  • xmlproxyd 进程 CPU 利用率仍然很高。如果 xmlproxyd 启用了跟踪,则 CPU 使用率会更高。

  • xmlproxyd 进程内存利用率增加。

  • xmlproxyd 进程状态可能显示 sbwait,表示命令输出是详细的,并且 xmlproxyd 正在花费大量时间读取命令的远程过程调用 (RPC) 的输出。

  • xmlproxyd 传感器数据未完成换行。

  • xmlproxyd 流传输传感器的部分数据或不传输数据。

  • xmlproxyd 错过了报告间隔周期。由于命令的详细输出,间隔开始重叠,导致 xmlproxyd 的传感器流数据变慢或延迟。

  • 为详细命令的 RPC 提供服务的进程或应用程序在执行主要任务时可能会显示 CPU 数量过高或延迟。当进程或应用程序忙于为具有详细输出的 RPC 提供服务时,会导致此行为。

此任务需要满足以下条件:

  • 运行 Junos OS 17.3R2 或更高版本的 MX 系列、vMX 系列或 PTX 系列路由器。

  • 遥测数据接收器,如 OpenNTI,用于验证遥测传感器的正确运行。

在此任务中,您将流式传输 Junos OS 命令 show system users的内容。

显示系统用户(vMX 系列)

除了当前登录用户的预期列表外, show system users 输出还提供平均系统负载为 1、5 和 15 分钟。您可以使用命令查看输出字段的 XML 标记来 show system users | display xml 查找平均负载。请参阅 <load-average-1><load-average-5>、以及 <load-average-15> 下面的 XML 标记输出。

提示:

前面的输出中显示的 uptime-information 标记是包含叶的容器,例如 date-timeup-timeactive-user-count. 和 load-average-1。下面是此容器的示例 YANG 文件:

提示:

uptime-information 标记还有另一个名为 user-table 的容器,其中包含用户条目列表。

下面是此容器的示例 YANG 文件:

创建用户定义的 YANG 文件

YANG 文件定义了要执行的 Junos CLI 命令、放置传感器的资源路径以及从匹配的 XML 标记中获取的键值对。

Junos OS 的自定义 YANG 文件符合 RFC 6020 YANG 1.0 YANG - 网络配置协议 (NETCONF) 的数据建模语言 )和 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. 提供模块的名称。模块名称必须以 xmlproxyd_ XML 代理 YANG 文件名开头,并且与 XML 代理 YANG 文件名同名。

    例如,对于名为 sysusers.yang的 XML 代理 YANG 文件,请删除 .yang 扩展名并将模块 xmlproxyd_sysusers命名为:

    module xmlproxyd_sysusers {

  2. 对于 Junos 遥测接口,请包含进程名称xmlproxyd

    dr:command-app "xmlproxyd";

  3. 为 NETCONF 获取请求添加以下 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 命令在进程下dr:cli-command定义并由进程执行xmlproxyd

    要检索 Junos OS 命令 show system users的命令输出,请执行以下作:

    dr:cli-command "show system users";

  7. 提升权限,以“root”身份登录,通过 Telnet 连接到内部管理套接字,并指定 RPC 的帮助:

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

    当它包含在 YANG 文件中时,有助于调试的输出将显示 help drend 在内部管理套接字的输出中:

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

  8. 指定层次结构并使用 dr:source 命令映射到容器、列表或特定叶。报告传感器的绝对路径是由输出组 junos plus system-users-information构建的,由 /’。路径 /junos/system-users-information/ 是用于查询有关此自定义传感器的信息的路径。
    警告:

    您不应创建与预定义的原生路径(瞻博网络定义的路径)和 OpenConfig 路径(资源)冲突或重叠的自定义 YANG 模型。这样做可能会导致未定义的行为。

    例如,不要创建一个模型来定义在 或 等资源路径/junos/system/linecard/firewall/interfaces的节点上定义新叶或扩充节点。

    容器、叶与 CLI 命令输出中的 XML 标记或值之间的一对一映射在输出容器内引用 uses 的分组中定义。可以在不同的容器输出中多次引用 分组 。下面的容器 system-users-information 使用分组 system-users-information。但是,在定义它没有上述每个容器、列表和叶从 CLI 命令 XML 输出到输出 XML 标记的一对一映射的情况下。

  9. 以下 YANG 文件显示了如何包含这些命令, xmlproxyd 使进程能够检索完整的作状态,并将其映射到瞻博网络自己的数据模型中的叶:

在 Junos 中加载 Yang 文件

YANG 文件完成后,上传 YANG 文件并验证模块是否已创建。

  1. 将 YANG 文件上传到路由器。
  2. 使用 request system yang add package 命令注册 YANG 文件。
    注意:

    从 Junos OS 18.3R1 版开始,不支持在配置模式下使用命令 run 添加、删除或更新 YANG 软件包。

  3. 使用 show system yang package sysusers 命令验证模块(传感器)是否已注册,其中 sysusers 是软件包的名称:
  4. 在 Junos OS 配置中启用 gRPC:

收集传感器数据

使用您喜欢的收集器从设备中提取新创建的遥测传感器数据。

在启动传感器之前,请考虑资源限制:

  • 避免为多个 XML 代理传感器指定相同的报告间隔。

  • 由于 xmlproxyd 执行 XML 和文本处理,因此设备应仅包含在 CPU 利用率范围内执行的 XML 代理传感器。

特定平台 采集传感器数据 行为

使用 功能浏览器 确认平台和版本对特定功能的支持。

使用下表查看平台的特定于平台的行为:

表 1:收集传感器数据行为

平台

差异

PTX10008

对于运行Junos OS演化版的PTX10008路由器,每个路由器连接的收集器不要超过 10 个,用于遥测 RPC。

以下说明使用收集器 jtimon。有关 jtimon 设置的信息,请参阅 Junos 遥测接口客户端

注意:

如果传感器已存在订阅,并且配置了重复订阅,则收集器与设备之间的连接将关闭,并显示错误消息 AlreadyExists

  1. 创建一个简单的配置文件,此处名为 vmx1.json。根据需要调整主机 IP 地址和端口。路径 /junos/system-users-information 已指定。该 freq 字段在 MicroSoft 中定义,每 5 秒流式传输一组新的键值对。或者,您可以添加多个路径。
  2. 使用您自己的编译文件或从 Docker Hub 自动生成的映像启动收集器。下面的示例查询输出按路径显示传感器报告。每个密钥都以人类可读的形式作为绝对路径发送。对于列表,绝对路径包含 XPATH 形式的索引,该索引非常适合对(时间序列)数据库(如 InfluxDB)中的值进行分组。例如,下面的输出显示了路径 /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/

    您可以使用 Ctrl-C 终止传感器数据流。

    下面显示的示例查询显示每个路径有两个传感器报告,然后我用 Ctrl-C 终止了它。每个键都以人类可读的形式作为绝对路径发送,如果是列表,则包含 XPATH 形式的索引,非常适合对 InfluxDB 等(时间序列)数据库中的值进行分组,例如 /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/

  3. 使用 show system yang package sysusers 命令验证模块(传感器)是否已加载,其中 sysusers 是软件包的名称:
  4. 在 Junos OS 配置中启用 gRPC:

安装用户定义的 YANG 文件

要为 Junos 遥测接口的 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 )。

  • 使用 set services analytics traceoptions flag xmlproxy 命令启用 traceoptions。检查日志文件以 xmlproxyd 确认是否发送了 CLI 命令的 RPC 以及是否收到了响应:

  1. 发出 show log xmlproxyd 命令以显示 xmlproxyd 日志。字段 xmlproxy_execute_cli_command: 的值指示 RPC 是否已发送。字段 xmlproxy_build_context 的值表示命令。