本页内容
了解拨入式遥测
拨入式遥测是一种网络监控方法,收集器启动与设备的连接以检索遥测数据。收集器“拨入”到网络设备,通常使用 gRPC 等协议来请求和接收数据。
在拨入模式下,数据收集器启动与网络设备的连接并订阅遥测数据。收集器和设备建立会话。设备按配置的时间间隔将数据流式传输到收集器。当运维人员需要统一通道来存储配置和操作数据时,通常使用此模式。
Junos 遥测支持通过 gRPC 传输进行的 gNMI 和瞻博网络扩展工具包 (JET) 拨入连接。
您可以以拨入方式将 gNMI 用于按需请求(例如,用于获取数据的一次性“获取”操作)。对于 gNMI 拨入连接,您必须启用 gNMI 服务。支持 POLL(收集器轮询快照)和 ONCE(单个快照)订阅模式。设备通常会启动 gRPC,以便在 Junos 遥测中进行流式遥测。
gRPC 服务
gRPC 是一个开源框架,提供安全可靠的数据传输。您可以使用一组远程过程调用 (RPC) 接口来配置 Junos 遥测,并通过 gRPC 框架流式传输遥测数据。gRPC 远程过程调用用于配置传感器以及订阅和接收遥测数据。OpenConfig 支持 YANG 数据模型。OpenConfig 数据模型以通用键/值格式将数据生成为 Google Protocol Buffer (.gpb) 消息。
使用 gRPC 流式传输数据
根据 OpenConfig 规范,流数据仅支持基于 gRPC 的传输。gRPC 服务器从运行客户端的管理系统终止 gRPC 会话。RPC 调用会触发 Junos OS 传感器的创建,这些传感器会定期流传输数据或报告特定事件。然后,这些传感器通过相应的 gRPC 通道转发更新。
从 Junos OS 18.2R1 版开始,当外部流服务器或收集器配置传感器以在运行 Junos OS 的设备上通过 gRPC 导出数据时,传感器配置将提交给 junos-analytics 临时配置数据库的实例。可以使用操作 show ephemeral-configuration instance junos-analytics 命令查看配置。在早期版本中,传感器的配置承诺到临时配置数据库的默认实例。
瞻博网络遥测报头之前作为遥测更新的一部分导出,现在导出为扩展报头。
- 用于
GnmiJuniperTelemetryHeader.proto解码运行 Junos OS 19.3 或更低版本的设备的更新。 GnmiJuniperTelemetryHeaderExtension.proto用于运行 Junos OS 19.4 或更高版本的设备。
为了支持 Junos 遥测解决方案而实施的 RPC 的列表和说明,请参阅 表 1 。
| RPC 名称 |
描述 |
|---|---|
|
|
为指定的 OpenConfig 路径列表指定遥测参数和流数据。 |
|
|
检索通过 |
|
|
取消订阅通过 |
通过 gRPC 流式传输的数据在协议缓冲区 (.gpb) 消息中的 OpenConfig 键值对中进行格式化。在这种通用格式中,键是与受监视设备的 OpenConfig 架构中的系统资源路径相对应的字符串。值对应于标识系统资源操作状态的整数或字符串,如接口计数器。
从 Junos OS 18.2R1 版开始,除了用于基于 OpenConfig 的路由引擎 (RE) 传感器的键值对外,通过 gRPC 流式传输的数据还可以格式化为 protobuf。这些传感器是对数据包转发引擎 (PFE) 传感器的补充。
下面显示了通用键/值格式:
message KeyValue {
string key = 1 [(telemetry_options).is_key = true];
uint64 int_value = 2;
string str_value = 3;
string prefix_str = 4;
}
message TelemetryStream {
// router name or export IP address
required string system_id = 1 [(telemetry_options).is_key = true];
// line card / RE (slot number)
optional uint32 component_id = 2 [(telemetry_options).is_key = true];
// PFE (if applicable)
optional uint32 sub_component_id = 3 [(telemetry_options).is_key = true];
// timestamp (common to all entries in the kv array)
optional uint64 timestamp = 4 [(telemetry_options).is_timestamp = true];
// key / value pairs
repeated KeyValue kv;
}
以下示例显示如何表示接口的一组计数器:
key = “/interfaces/counters/rx-bytes”, int_value = 1000 key = “/interfaces/counters/tx-bytes”, int_value = 2000 key = “/interfaces/counters/rx-packets”, int_value = 10 key = “/interfaces/counters/rx-bytes” , int_value = 20 key = “/interfaces/counters/oper-state”, str_value = “up”
映射表将字段名称映射到 OpenConfig 键字符串。
使用 OpenConfig 启用 Junos 遥测
OpenConfig for Junos OS 指定了一个 RPC 模型来启用 Junos 遥测。此软件包还包括所需的 YANG 型号。
您可以在 GitHub 存储库中找到给定操作系统的所有 YANG 数据模型 ,并在单个下载包中发布。包和存储库包括本机配置、状态和 RPC 数据模型,以及该操作系统支持的 OpenConfig 和 IETF 数据模型。您还可以从瞻博网络下载站点访问 YANG 数据模型。
要下载 OpenConfig 和 YANG 模型文件,请打开 Web 浏览器并导航到 https://www.hpe.com/us/en/networking/hpe-juniper-networking.html,然后单击 支持以打开 https://support.juniper.net/support/ 的 瞻博网络 支持门户。选择“下载”选项卡,在“键入产品名称”字段中输入产品名称,单击“查找产品”,搜索并选择所需的产品,然后从下拉列表中选择相应的 Junos OS 和软件版本。在同一页面上向下滚动,展开 + 工具部分,然后下载所需文件:用于 OpenConfig 模型的 JUNOS 遥测接口数据模型文件和用于 YANG 文件的 YANG 模块。
编程接口 OpenConfigTelemetry 定义遥测 gRPC 服务。 telemetrySubscribe RPC 指定以下订阅参数:
-
OpenConfig 路径,用于识别用于流式传输遥测数据的系统资源,例如:
/interfaces/interface/state/counters/ -
报告数据并将其流式传输到收集器服务器的间隔(以毫秒为单位),例如:
sample_frequency = 4000
流式处理服务器或收集器使用 telemetrySubscribe RPC 请求指定路径上数据的内联订阅。然后,设备会在与订阅请求相同的连接上发回遥测数据。
gRPC 服务器概述
Junos 遥测支持多端口服务配置,允许您配置多组遥测服务以侦听不同的端口。
Junos 遥测提供灵活的 gRPC 服务配置功能,允许您设置多台 gRPC 服务器,每台服务器都有不同的服务、侦听地址和端口。这些功能提供了对服务管理和遥测数据收集的精细控制。您可以为每个服务器配置 TLS 证书以确保安全通信。要配置 gRPC 服务器,请参阅 配置 gRPC 服务。
gNMI 服务
gNMI(gRPC 网络管理接口)是一种基于 gRPC 的协议,用于配置和监控网络设备。gNMI 由 OpenConfig 专门为网络管理开发,允许网络运营商检索和修改设备配置数据,并订阅来自网络设备的实时遥测数据。数据收集是遥测解决方案中的一项关键任务。gNMI 支持 ONCE、POLL 和 STREAM 等订阅模式,用于遥测更新。gNMI 使用 gRPC 框架,支持协议缓冲区 (protobuf) 等高效的数据编码格式,并通过 TLS 确保安全通信。YANG 模型定义了配置和遥测数据的结构。
gNMI 的主要组件是:
-
gNMI 客户端:在外部系统上运行。它发送 gNMI 请求来配置设备、检索配置数据和订阅遥测流。
-
gNMI 服务器:在网络设备上运行并提供对遥测和配置数据的访问。gNMI 服务器根据请求的类型处理请求。如果是配置管理更改,gNMI 服务器会更新设备配置并向客户端发送响应。如果是遥测数据收集请求,它会将数据流式传输到 gNMI 客户端。
gNMI 支持以下用于控制和监视网络设备的远程过程调用 (RPC):
-
获取:此 RPC 检索网络设备的当前状态,包括配置和操作数据。
注意:使用
typegNMI get 命令中的选项指定要检索的数据类型。可用选项包括CONFIG、STATE和ALL。有效的类型选项为CONFIG。使用编码定义 gNMI 协议支持的值编码格式。可用选项包括JSON、BYTES、PROTO、ASCII和JSON_IETF。有效的编码选项是JSON_IETFASCII和 。选择除有效选项之外的任何其他配置都会导致错误消息。 -
Set:set RPC 修改网络设备的配置。
-
订阅:使用此 RPC 订阅来自网络设备的遥测数据。支持以下订阅模式:
- ONCE:仅检索一次当前值。
- POLL:每当收到轮询消息时发送当前值。
- STREAM:按指定的时间间隔或发生更改时持续发送更新。
有关更多信息,请参阅 gNMI 订阅
-
功能:使用此 RPC 可发现设备的功能,例如支持的模型和编码。
gNMI 起源
Path消息的origin字段标识路径的架构。该origin字段编码为字符串。<origin, path>元组唯一标识消息中的路径。
该 origin 字段在消息的任何 Path 上下文中都有效。通常,它按以下方式使用:
- 使用 a
SetRequest指示特定模式修改了目标配置。 - 使用 a
GetRequest检索特定架构的内容,或使用 aGetResponse指示有效负载包含来自特定<origin, path>架构的数据。 - 使用 a
SubscribeRequest订阅特定架构中的路径,或使用 aSubscribeResponse指示更新对应于特定<origin, path>元组。
当一条消息使用多个 origin时,请勿在 中prefix指定路径,因为 适用于prefix消息中的所有路径。指定 a prefix 时,包括任何必需origin的 。请勿在单个请求中同时prefix指定origin任何 RPC 有效负载消息的 path 字段。
原产地的特殊值
源值在 gNMI 协议的带外商定。如果字段未指定,则 origin 其值必须默认为 openconfig。建议显式设置原点。
YANG 建模数据的来源定义
该 openconfig-extensions:origin 字段可用于确定实例化特定模块的来源。
origin与 namespace不同 。虽然 YANG 命名空间是在模式树中的任何深度定义的,但 an origin 仅用于消除整个模式树的歧义。也就是说,任何不在根的元素都会从其根实体继承其origin元素,而不管构成该根的 YANG 模式模块如何。
原产地的部分规格
如果 RPC 指定了 、 或replace在其消息中Path包含 的origin字段,则Set必须通过以下方式将相应的更改限制到指定的update源:delete
replace操作只能替换指定路径上指定origin的内容。不得替换未在 中SetRequest指定的来源 其内容。为了使replace操作替换它的任何origin内容,必须在SetRequest.delete操作必须仅删除指定origin.要从多个源中删除内容,客户端必须deleteSetRequest在 .
这些规则适用于源表示不重叠的数据的情况。在某些情况下(例如 CLI 和 OpenConfig),源可能会反映同一数据的不同“视图”,因此它们的交互更加复杂。
具有多个来源的集合的交易性
当 a SetRequest 指定多个源时(换句话说,当它包含两个或多个路径引用不同源的操作时),所有受影响的数据树都必须被视为单个事务。只有当所有操作都成功时,才 SetResponse 应指示成功。如果任何操作失败,则必须回滚所有源的更改,并且必须返回错误状态以响应 Set RPC。