本页内容
了解拨入遥测
拨号遥测是一种网络监视方法,收集器在这种方法中启动与设备的连接以检索遥测数据。收集器“拨入”到网络设备,通常使用 gRPC 等协议来请求和接收数据。
在拨号模式下,数据收集器会启动与网络设备的连接并订阅遥测数据。收集器和设备建立会话。设备按配置的时间间隔将数据流式传输到收集器。当运维人员需要统一的配置和作数据通道时,通常会使用此模式。
Junos 遥测支持通过 gRPC 传输进行 gNMI 和瞻博网络扩展工具包 (JET) 拨入连接。
您可以以拨入的方式将 gNMI 用于按需请求(例如,用于获取数据的一次性“获取”作)。对于 gNMI 拨入连接,必须启用 gNMI 服务。支持 POLL(收集器轮询快照)和 ONCE(单个快照)订阅模式。设备通常会在 Junos 遥测中启动 gRPC,以便进行流式遥测。
gRPC 服务
gRPC 是一个开源框架,提供安全可靠的数据传输。您可以使用一组远程过程调用 (RPC) 接口来配置 Junos 遥测,并通过 gRPC 框架对遥测数据进行流式传输。gRPC 远程过程调用用于预配传感器以及订阅和接收遥测数据。OpenConfig 支持 YANG 数据模型。OpenConfig 数据模型以通用的键/值格式将数据生成为 Google Protocol Buffe (.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 或更高版本的设备。
请参见 表 1 ,了解为支持 Junos 遥测解决方案而实现的 RPC 的列表和说明。
| 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 指定用于启用 Junos 遥测的 RPC 模型。此软件包还包括所需的 YANG 型号。
您可以在 GitHub 存储库中找到给定作系统的所有 YANG 数据模型 ,并在单个下载包中发布。软件包和存储库包括本机配置、状态和 RPC 数据模型,以及该作系统支持的 OpenConfig 和 IETF 数据模型。您也可以从瞻博网络下载站点访问 YANG 数据模型。
使用 Web 浏览器导航至 瞻博网络 网页上的所有 Junos 平台软件下载 URL: https://www.juniper.net/support/downloads/。 在“网络管理”选项卡中,向下滚动以选择“OpenConfig”。选择“软件”选项卡。选择适当的 OpenConfig 模块版本。
编程接口 OpenConfigTelemetry 定义遥测 gRPC 服务。RPC telemetrySubscribe 指定以下订阅参数:
-
用于标识用于流式传输遥测数据的系统资源的 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 检索网络设备的当前状态,包括配置和作数据。
注意:type使用 gNMI get 命令中的选项指定要检索的数据类型。可用选项有CONFIG、STATE和ALL。有效类型选项为CONFIG。使用编码定义 gNMI 协议支持的值编码格式。可用选项包括JSON、BYTES、PROTO、ASCII和JSON_IETF。有效的编码选项为JSON_IETF和ASCII。在有效选项之外选择任何其他配置都会导致错误消息。 -
Set:set RPC 修改网络设备的配置。
-
订阅:使用此 RPC 订阅来自网络设备的遥测数据。支持以下订阅模式:
- ONCE:仅检索一次当前值。
- POLL:每当收到轮询消息时发送当前值。
- STREAM:以指定的时间间隔或发生更改时持续发送更新。
有关详细信息,请参阅 通过 gNMI 订阅遥测数据的准则
-
功能:使用此 RPC 发现设备的功能,例如支持的型号和编码。
gNMI 起源
Path消息的origin字段标识路径的架构。该origin字段编码为字符串。元<origin, path>组唯一标识消息中的路径。
该 origin 字段在消息的任何上下文中都 Path 有效。通常,它以以下方式使用:
- 使用 来
SetRequest指示特定架构修改了目标配置。 - 使用 a
GetRequest检索特定架构的内容,或使用 aGetResponse指示有效负载包含来自特定<origin, path>架构的数据。 - 使用 a
SubscribeRequest订阅特定架构中的路径,或使用 aSubscribeResponse指示更新对应于特定<origin, path>元组。
当一条消息使用多个 origin时,不要在 prefix中指定路径,因为 prefix 适用于消息中的所有路径。指定 a prefix 时,包括任何必需origin的 .请勿在单个请求的 和 路径字段中指定originprefix任何 RPC 有效负载消息。
特殊原产地价值
源值是在 gNMI 协议的带外商定的。 origin 如果未指定字段,则其值必须默认为 openconfig。建议显式设置原点。
YANG 建模数据的来源定义
该 openconfig-extensions:origin 字段可用于确定特定模块实例化的原点。
origin与 不同于 namespace。虽然 YANG 命名空间是在模式树中的任何深度定义的,但 origin an 仅用于消除整个模式树的歧义。也就是说,任何不在根中的元素都从其根实体继承其origin元素,而不管组成该根的 YANG 模式模块如何。
集合中原产地的部分规格
Set如果 RPC 指定delete了在其Path消息中包含 an origin 的字段,updatereplace则必须通过以下方式将相应的更改限制在指定的源上:
replace作只能替换指定路径中指定origin的内容。不得替换未在 中SetRequest指定的源。要使replace作替换其origin任何内容,必须在 中SetRequest显式指定。delete作必须仅删除指定origin路径中的内容。要从多个源中删除内容,客户端必须在 中指定多个路径deleteSetRequest。
当源表示不重叠的数据时,这些规则适用。在某些情况下(例如,CLI 和 OpenConfig),源可能会对同一数据反映不同的“视图”,因此它们的交互更加复杂。
具有多个源的集合的事务性
当 a SetRequest 指定多个源时(换句话说,当它包含两个或多个路径引用不同源的作时),所有受影响的数据树都必须被视为单个事务。仅当所有作都成功时,才 SetResponse 应指示成功。如果任何作失败,则必须回滚所有源中的更改,并且必须返回错误状态以响应 Set RPC。