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 arpshow bfdshow bgpshow ddos-protection的任何变体show interfaces

要检查命令的详细程度,请发出 command-name| display xml | count 命令。如果行计数超过 4000 行的值,则不建议将命令用于 XML 代理流。此值更接近于基于内部基础衬里的近似值。它可以减少取决于各种因素,如设备类型、设备的处理能力和现有 CPU 负载。因此,需要根据设备的性能来明智地使用此功能。

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

使用映射到详细命令的 YANG 文件可产生以下一项或多项:

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

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

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

  • xmlproxyd 传感器数据无法完成封装。

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

  • xmlproxy 会错过报告间隔周期。由于命令输出的详细输出,间隔开始重叠,从而导致 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 分钟的平均系统负载。您可以使用命令查看输出字段的 XML 标记,从而查找负载平均 show system users | display 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) 和 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 文件名同名。

    例如,对于名为 YANG 的 sysusers.yangXML 代理文件,丢弃 .yang 扩展名并命名模块 xmlproxyd_sysusers

    module xmlproxyd_sysusers {

  2. 对于 Junos 遥测接口,请包括进程(守护程序)名称 xmlproxyd

    dr:command-app "xmlproxyd";

  3. 包括以下 RPC,用于 NETCONF 获取请求:

    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 命令映射到容器、列表或特定叶。报告传感器的绝对路径基于输出组 junossystem-users-information,并串联 /’在一起。该路径 /junos/system-users-information/ 是查询有关此自定义传感器信息的路径。
    警告:

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

    例如,请勿创建在节点上定义新叶或扩充资源路径的模型,如 /junos/system/linecard/firewall/interfaces

    容器、枝叶与 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 文件的名称和要安装的文件路径。此命令在目录中创建一个 .json 文件 /opt/lib/render
    注意:

    此命令只能在当前路由引擎上执行。

    要用 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的值表示命令。