2. Juniper Telemetry技术体系概览

在 Juniper 的可观测性方案中,Telemetry 并不是单一协议或单一工具,而是一套由“采集接口、传输协议、数据模型、编码格式、订阅机制”共同组成的体系。很多初学者会把 JTI、gNMI、gRPC、OpenConfig 混为一谈,导致在设备配置、采集器选型和数据解析时出现方向性错误。本节的目标是梳理这些核心组件各自的职责、彼此之间的依赖关系,并建立一张能指导实际部署的技术地图。

一、先分清“接口层”与“传输层”

Junos Telemetry Interface(JTI)是 Junos 操作系统内部对外提供遥测数据的能力集合,它定义了设备“能导出什么数据、以什么节奏导出、通过什么方式导出”。JTI 是设备侧的能力,属于接口层。它支持两种主流导出方式:一种是基于 UDP 的“原生流式遥测”,另一种是基于 gRPC 的“gNMI 遥测”。前者实现简单、开销低,适合高频、固定格式的计数器采集;后者支持订阅、按需拉取和结构化数据模型,适合需要灵活选择路径和字段的场景。

gRPC 是传输层框架,它基于 HTTP/2 提供双向流、多路复用和高效的二进制传输。gNMI(gRPC Network Management Interface)则是建立在 gRPC 之上的“网络管理接口规范”,它规定了订阅、获取、设置等操作的方法和消息格式。换句话说,gRPC 是“怎么传”,gNMI 是“传什么、怎么订阅”。在 Junos 上启用 gNMI 遥测,本质上是让设备通过 gRPC 通道,按照 gNMI 定义的订阅方式,把 JTI 采集到的数据推送出去。

二、OpenConfig 提供的是“数据模型”

OpenConfig 是一套厂商中立的网络数据模型,它用 YANG 语言描述网络设备的状态和配置结构。在 Telemetry 场景中,OpenConfig 的价值在于统一了“路径命名”和“数据结构”。例如,接口计数器不再依赖厂商私有的 MIB 或命令行输出格式,而是统一映射到 /interfaces/interface/state/counters 这样的路径下。采集器只要按 OpenConfig 路径订阅,就能以一致的方式解析不同厂商设备的数据。

需要强调的是,OpenConfig 不是协议,也不是传输方式,它是一层“语义约定”。Juniper 在 Junos 中同时支持原生 JTI 路径和 OpenConfig 路径。原生路径通常更贴近 Junos 内部实现,字段更细、更新更快;OpenConfig 路径则更规范、更易跨厂商统一。实际项目中,两者经常混用:对时延敏感、字段特殊的指标走原生路径,对标准化要求高的指标走 OpenConfig 路径。

三、技术地图:组件之间的依赖关系

把上述组件放在一起,可以得到一条清晰的数据链路:设备内部的 JTI 采集点产生数据,经过编码后,由 gRPC/gNMI 或 UDP 传输通道送出,采集器按 OpenConfig 或原生路径解析,最终写入时序数据库或流处理平台。下图展示了这一体系的核心结构与数据流向。

Junos 设备侧 JTI 采集引擎 传感器 / 计数器 / 状态数据 按周期采样并编码 UDP 原生流 固定格式 低开销高频 gRPC / gNMI 订阅式推送 结构化路径 OpenConfig 数据模型 YANG 路径 / 厂商中立语义 统一字段命名与层级 采集器 gNMI Client Subscribe / Get UDP Collector 解析原生流 路径解析器 OpenConfig / 原生 数据标准化 时间戳 / 标签 UDP gRPC 存储与分析 时序数据库 TSDB / 流处理 可视化面板 Grafana / 告警 自动化闭环 策略 / 编排 数据流向:JTI 采集 → 传输通道(UDP / gRPC-gNMI)→ 采集器解析 → 存储与分析

四、实际部署中的关键选择

理解了组件关系后,实际部署时还需要做几个关键决策。第一,选择导出方式。如果只需要采集接口计数器、队列深度等固定指标,且对设备 CPU 开销敏感,UDP 原生流是更轻量的选择;如果需要按需订阅、动态选择路径、或者要对接 OpenConfig 生态,则应启用 gRPC/gNMI。第二,确定路径体系。原生 JTI 路径通常以 /junos/ 开头,OpenConfig 路径以 /interfaces/、/network-instances/ 等开头。两者可以同时订阅,但采集器需要分别解析。第三,规划采集频率。高频采集(如 1 秒)适合 UDP 流式导出,低频或事件驱动采集更适合 gNMI 的按需订阅模式。

下面给出一个 Junos 上启用 gNMI 遥测的配置示例,用于说明设备侧需要打开哪些开关。该示例仅用于教学演示,实际参数需根据设备型号和 Junos 版本调整。

set system services extension-service request-response grpc clear-text port 50051
set system services extension-service notification allow-clients address 192.168.10.0/24
set services analytics streaming-server collector1 remote-address 192.168.10.50
set services analytics streaming-server collector1 remote-port 50051
set services analytics export-profile profile1 reporting-rate 1000
set services analytics export-profile profile1 format gpb
set services analytics sensor interface-stats server-name collector1
set services analytics sensor interface-stats export-name profile1
set services analytics sensor interface-stats resource /interfaces/interface/state/counters

这段配置做了三件事:打开 gRPC 服务端口、定义采集器地址和导出参数、创建传感器并绑定 OpenConfig 路径。配置完成后,采集器通过 gNMI Subscribe 请求订阅 /interfaces/interface/state/counters,设备按 1 秒周期推送 GPB 编码的数据。判断是否生效,可以在采集器侧观察是否收到订阅响应,并在设备上使用 show services analytics sensor 查看传感器状态和导出计数。

五、常见混淆点澄清

最后澄清几个容易混淆的概念。JTI 不等于 gNMI:JTI 是设备能力,gNMI 是访问方式之一。gRPC 不等于 gNMI:gRPC 是通用传输框架,gNMI 是网络管理领域的专用规范。OpenConfig 不等于 Juniper 私有实现:它是跨厂商模型,Juniper 通过 JTI 将其映射到 Junos 内部数据。理解这些边界,才能在排障时快速定位问题出在采集侧、传输侧还是模型映射侧。

技术地图的核心记忆点:JTI 管“采什么”,gRPC 管“怎么传”,gNMI 管“怎么订阅”,OpenConfig 管“怎么命名”。四者叠加,构成 Juniper Telemetry 的完整能力栈。