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 传感器以及 xmlproxy 的性能。

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

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

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

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

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

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

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

  • xmlproxyd 传感器数据不会完成包装。

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

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

  • 提供详细命令的 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的内容。

显示系统用户(vMX 系列)

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

提示:

uptime-information前面输出中显示的标记是包含叶的容器,例如 date-time、 、 up-timeactive-user-countload-average-1。下面是此容器的示例 YANG 文件:

提示:

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

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

创建用户定义的 YANG 文件

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

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

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

    module xmlproxyd_sysusers {

  2. 对于 Junos 遥测接口,请包含进程(守护程序)名称 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 命令在守护程序下 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/ 是查询有关此自定义传感器的信息的路径。
    警告:

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

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

    容器、叶和 CLI 命令输出中的 XML 标记或值之间的一对一映射在输出容器中引用 uses 的分组中定义。可以在不同的容器输出中多次引用 分组 。下面的容器 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 代理传感器指定相同的报告间隔。
  • 对于运行 Junos OS 演化版的PTX10008路由器,对于遥测 RPC,每个路由器连接的收集器不要超过 10 个。
  • 由于 xmlproxyd 执行 XML 和文本处理,因此设备应仅包含在 CPU 利用率范围内执行的 XML 代理传感器。

以下说明使用收集器 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 跟踪选项。检查日志文件以 xmlproxyd 确认是否已发送 CLI 命令的 RPC 以及是否收到响应:

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