Telemetry是一种网络设备监控技术,提供周期采样网络设备内的统计数据和状态数据的能力。
一、Telemetry概述
1.1、技术背景:
网络设备的统一监控和性能管理是运维平台的重要功能,设备的监控数据包括数据、控制和管理平面数据。
获取设备监控数据的方式有:SNMP、CLI、Syslog、Netstream和sFlow等。常用的是SNMP方式,但是SNMP采集周期是5分钟,通常会导致细节信息的丢失。
传统网络采集技术的问题:
传统网络通过平均5-15分钟的Pulling拉取采样数据,更密集的Pulling拉取会造成网络设备瘫痪。
SNMP为主的运维系统效率低。
无法检测网络大量微突发造成的网络问题。
1.2、telnmetry简介:
Telemetry也叫NetworkTelemetry(网络遥测技术),是一项远程的从物理设备或虚拟设备上高速采集数据的技术。设备通过推模式(PushMode)周期性的主动向采集器上送设备的接口流量统计、CPU或内存数据等信息,相对传统拉模式(Pull Mode)的一问一答式交互,提供了更实时更高速的数据采集功能。
业界也有将SNMP认为是传统的Telemetry技术,把当前Telemetry叫做Streaming Telemetry或Model-Driven Telemetry的说法。
Telemetry技术特点:
telemetry采用推模式工作,YANG模型定义结构,精度可达到亚秒级。
Telemetry技术优势:
telemetry采用推模式及时获取丰富的监控数据,可以实现网络故障的快速定位,提供统一的数据流格式,简化采集器分析检测数据的难度,从而解决传统网络运维问题。
- 精细监控:采集数据的精度高,且类型十分丰富,可以充分反应网络状况。
- 快速定位:在复杂的网络中,能够快速定位故障,达到秒,亚秒级的故障定位速度。
- 主动上报:telemetry仅需配置一次订阅,设备就可以持续上报数据,减轻设备处理查询请求的压力。
Telemetry网络模型分为广义和狭义两种:
广义telemetry:包括采集器,分析器,控制器和设备功能构成的一个自闭环系统。
狭义telemetry:指设备采样数据上送给采集器的功能。
利用telemetry技术,采集器可以收集到大量的设备数据,然后将数据交给分析器进行综合分析,分析器将决策结果发送给控制器,由控制器调整设备的配置,便可以几乎实时的反馈调整后的设备状态是否符合预期。
二、Telemetry技术原理
狭义的telemtry框架可以分为四个模块:数据源、数据生成、数据订阅和数据推送。
Telemetry协议栈:
telemetry协议栈具有分层结构:传输层、通信层、数据编码层和数据模型层。
举个订外卖的例子便于理解:YANG是个快餐店的菜谱,顾客想吃汉堡和炸鸡便照着YANG菜单写了一份A4纸采购清单(如一份汉堡,两份炸鸡),将清单折成邮票大小的小纸条装到了GPB信封里,找到门口的信使gRPC,信使gRPC骑上HTTP2电动车到了快餐店。信使gRPC将GPB信封给老板,老板解开GPB信封核对顾客采购清单是否在销售范围内。
Telemetry数据源:
telemetry数据源定义了可被获取的数据,telemetry采用了YANG模型定义设备可获取数据源,支持各类YANG模型,包括Huawei-YANG、IETF-YANG和OpenConfig-Yang
Telemetry数据订阅:
telemetry数据订阅定义了数据发送端和数据获取端交互关系。
1.静态订阅
静态订阅是指设备作为客户端,采集器作为服务端。由设备主动发起到采集器的连接,进行数据采集上送。多用于长期巡检。
2.动态订阅
动态订阅是指设备作为服务端,采集器作为客户端发起到设备的连接。由设备进行数据采集上送。多用于短期监控。
Telemetry数据推送:
Telemetry的数据推送有两种方式:基于gRPC方式和基于UDP方式
1.基于gRPC方式 (gRPC官网:gRPC)
gRPC面向连接,只在采集器和主控板CPU之间建立gRPC隧道。(蓝色箭头表示gRPC隧道)【gRPC封装层由gRPC开源软件提供】
2.基于UDP方式
UDP推送相较于gRPC推送做出了一定优化,采集器也可以和线路卡CPU之间建立UDP隧道,由一对一变为多对一建立隧道,缓解了主控板CPU的压力同时也提高了效率。
三、Telemetry配置与实践
案例描述:某公司现有一台CE12800设备,管理IP地址为192.168.56.100。为了更好的采集设备性能数据,现在要求通过Telemetry静态订阅方式,设备推送CPU信息到服务端。
配置思路:
华为配置步骤:
1、进入telemetry视图
[CE1] telemetry
2、配置设备推送目标
本例中创建目标组Dest1。推送目标IP地址为192.168.56.1,端口为20000。
[CE1-telemetry] destination-groupDest1
[CE1-telemetry-destination-group-Dest1]ipv4-address 192.168.56.1 port 20000protocol gRPC no-tls
3、配置设备采集数据
配置Telemetry静态订阅采样数据时,需要创建采样传感器组,并指定好采样路径。本例中创建采样组Sensor1。采样路径为CPU信息。
[CE1-telemetry] sensor-groupSensor1
[CE1-telemetry-sensor-group-Sensor1]sensor-path huawei-devm:devm/cpuInfos/cpuInfo
4、创建静态订阅
创建订阅,将配置好的上送目标组和采样传感器组进行关联,完成数据上送。本例中关联目标组Dest1与传感器组Sensor1,并设置采样间隔为1000ms。配置完后,设备将持续向目标推送数据。 [CE1-telemetry]subscriptionSub1
[CE1-telemetry-subscription-Sub1]destination-groupDest1
[CE1-telemetry-subscription-Sub1]sensor-groupSensor1 sample-interval 1000
5、采集器编译proto文件
6、编写Python代码,获取设备信息
7、结果验证(运行python脚本进行Telemetry订阅实现设备的数据采样)