此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本白皮书旨在帮助客户快速了解模型驱动遥测(MDT)功能的一般信息,以及它在聚合服务路由器9000(ASR9K)中的实施方式,包括一些设计指南和配置详细信息。它还包括一些部署注意事项,在使用ASR9K部署此功能时,这些注意事项会很有帮助。总之,本白皮书可作为任何使用此功能的人员的快速参考指南。
虽然遥测技术作为一项通用功能而引入,但重点是ASR9K的实施;即,并非其他思科平台支持的所有功能都受ASR9K平台支持,某些功能实施可能特定于ASR9K。
首先,简单地说,遥测是有用操作数据的收集过程。根据维基百科,遥测是一种自动通信过程,通过该过程在远程或无法访问的点收集测量数据和其他数据,并将其传输到接收设备进行监控。遥测词本身源自希腊语根:tele = remote,metron = measure。
对于网络管理,网络运营商一直依赖简单网络管理协议(SNMP)。 虽然SNMP被广泛用于网络监控,但它从未用于配置,即使使用snmp的配置功能始终存在。操作员已经编写了自动化脚本来处理日常配置任务,但脚本对于此类任务来说很困难,而且难以管理。
因此,操作员转向了数据模型驱动的管理。网络配置基于网络会议等协议推送的YANG数据模型。现在,仅推送配置并不意味着已配置的服务正在运行,必须有一种机制可以在监控服务运行数据的同时监控配置。这是操作数据模型;遥测用于将信息从设备中推送出去;帮助。因此,配置是YANG数据模型驱动的,因此也必须对服务进行验证;与遥测的情况一样,以便具有相同的对象语义。因此,该术语称为模型驱动遥测或流遥测。
型号驱动遥测(MDT)自版本6.1.1开始在cXR(32位IOS XR)中引入,允许近实时地收集和测量关键数据,从而快速解决大多数现代网络的运行问题。
高级遥测架构
MDT利用网络设备支持的结构化数据模型,并提供在这些数据模型中定义的关键数据。遥测技术可帮助客户使用一个通用网络管理系统、流程和应用程序来管理其多供应商网络,因为从网络收集的数据基于标准,并且在整个供应商实施过程中保持一致。
而不是等待从集中管理站(通常为SNMP NMS)检索(提取)数据;使用MDT,网络设备主动发送(推送)与网络关键功能有关的性能数据,如数据包转发信息、错误统计、系统状态、CPU和内存资源等。
收集数据用于分析和故障排除一直是监控网络运行状况的一个重要方面。SNMP、CLI和Syslog等多种机制可用于从网络收集数据。虽然这些方法在网络中的使用时间很长,但不适合现代网络,而在现代网络中,自动化需求是必不可少的,但规模化服务是必不可少的。网络运行状况信息、流量统计信息和关键基础设施信息被发送到NMS中的远程站,在该远程站中,它们用于增强操作性能并减少故障排除时间。客户端轮询所有网络节点的snmp之类的拉式模型效率不高。当有更多客户端需要轮询时,网络节点上的处理负载会增加。相反,推送模型能够连续地从网络流出数据并通知客户端。遥测支持推送模式,提供对监控数据的近实时访问。
流遥测提供一种机制,用于从路由器中选择感兴趣的数据并以标准格式将其传输到远程管理站进行监控。此机制支持基于实时数据对网络进行微调,这对网络的无缝运行至关重要。通过遥测获得更精细的粒度和更高的数据频率,可实现更好的性能监控,从而实现更好的故障排除。
它有助于提高网络的带宽利用率、链路利用率、风险评估和可扩展性,从而提高服务效率。借助流遥测,网络运营商可以获得更接近实时的数据,这有助于改善决策。
SNMP已经存在了30年,其运行方式并未改变以满足现代网络的监控需求。真正的问题是SNMP的执行速度。
SNMP带来的三个主要挑战实际上是其基本操作行为的一部分,因此SNMP几乎没有改进空间,遥测解决了这三个问题。
SNMP使用PULL Model - GetBulk / GetNext操作,通过将表从一列遍历到另一列,以线性方式工作。此外,如果大表不能容纳在一个数据包中,则需要多个请求。 这是导致SNMP速度减慢的最大瓶颈,而且发送的数据通常在几分钟内因特定时间因素而过时。这种延迟是现代网络监控要求无法接受的。
MDT(模型驱动遥测)使用PUSH模型,并且本身不受上述限制,因为它知道将哪些数据发送到谁以及以什么间隔发送。它只需一次查找即可收集数据,并且使用预构建的内部模板来实现超快的内部操作速度,从而在极短的时间内交付更多数据。
SNMP提取的数据实际上存储为内部数据结构,需要由节点内部转换。这是网络节点将内部数据结构映射为SNMP格式的场景的额外工作。已执行内部优化,但仍不够。
另一方面,遥测直接提取内部数据结构并在发送此数据之前执行最少的处理,从而以尽可能少的时间和精力提供最新的数据。
每增加一个轮询站都会导致节点上的额外工作负载,即使我们在同一精确时间轮询相同的数据也是如此。从多个轮询站并行访问相同的MIB会导致响应更慢,CPU利用率更高。这在大型表中尤其明显,在大型表中,多个站点访问同一MIB表的不同部分。
另一方面,如果多个目标需要相同的数据,则遥测需要提取一次数据并复制数据包。推送模式胜过SNMP速度和扩展拉取。
使用MDT时,数据收集方法会发生根本变化,其基本原则列于下表,并与SNMP技术要点进行比较。
简单网络管理协议 (SNMP) | 模型驱动遥测(MDT) |
非实时信息 |
实时信息 |
扩展性差 |
高度可扩展 |
拉式模型 |
推式 |
非自动化 |
自动化就绪/数据模型驱动 |
流式实时遥测数据在以下方面非常有用:
容量规划/流量优化:当网络中的带宽利用率和数据包丢弃频繁受到监控时,添加或删除链路、重新定向流量、修改策略等操作会更容易。通过快速重路由等技术,网络可以切换到新路径,并且重新路由的速度比SNMP轮询间隔机制更快。流遥测数据有助于快速响应更快的流量。
更好的可视性:帮助快速检测并避免在网络中出现问题后导致的故障情况。
以下部分介绍IOS XR型号驱动遥测(也称MDT)的技术功能和主要组件。
遥测框架分为三个独立且相互关联的功能块。
第一块是关于数据表示的,即参考分析或测量的信息在船上的组织方式。
第二块是关于编码。遥测将每个采样间隔的上述测量数据转换为可在线路上序列化的格式。当然,另一端的控制器必须能够解码数据,以便拥有设备发送的原始数据的相同副本。
最后一块是关于传输。这是用于在设备之间传输数据的协议栈。
下表总结了模型驱动遥测构建块的主要结构:
功能 | 组件 |
数据表示 |
YANG数据模型 |
编码 |
GPB/GPB自描述 |
传输 |
TCP/gRPC |
表 3 遥测构建块
在了解遥测和底层配置片段的工作原理之前,了解遥测的不同组件以评估最佳设置非常重要。遥测依赖于IOS XR可编程性堆栈,其中新的基础设施框架为网络自动化提供基本功能。
YANG最近成为数据建模的标准,思科可编程性堆栈使用此标准来形成结构化数据集,该数据集可以在网络中尽可能快速地编码和传输。YANG的灵活性使其具有巨大优势,也可用作自动化流程的配置工具。这些数据模型与特定的编码格式和传输协议相结合,使MDT成为网络分析的完整解决方案。
对于模型驱动遥测设置,YANG数据模型成为关键组件,以便为收集和分析提供必要的数据流。
IOS XR可编程性堆栈
Yang被定义为“用于为网络管理协议建立配置数据、状态数据和通知的数据建模语言”。 由于YANG与典型编程语言体系结构的解耦性,因此可以实施YANG来与各种工具交互。
YANG建模数据结构是围绕模块和子模块的概念而构建的,这些模块和子模块以树形方式定义数据的层次结构,可用于包括配置操作和通知处理在内的多种操作。
YANG型号有多种可用来源,其中以下三个被视为主要来源:
思科特定型号:这些也称为本机型,由包括Cisco在内的各种设备供应商发布。 例如,Cisco-IOS-XR-ptp-oper.yang
OpenConfig型号: OpenConfig是由网络运营商组成的非正式工作组。OpenConfig定义了所有供应商配置任务关键型功能时应支持的常见YANG模型。 例如openconfig-interfaces.yang
IETF模型:IETF还定义了几个通用YANG模块,这些模块描述接口的基本配置、QOS,并定义其他通用数据类型(如Ipv4、IPv6等)。 例如ietf-syslog-types.yang
思科确实支持可用的Openconfg模型。供应商正在融合到标准化的数据建模方式以支持多供应商环境。
杨氏模型有三种类型:
遥测只关注可识别为*-oper-*.yang的Yang模型。
YANG定义为RFC 7950:https://tools.ietf.org/html/rfc7950。
编码(或“序列化”)将数据(对象、状态)转换为可通过网络传输的格式。当接收方解码(“解序列化”)数据时,它具有原始数据的语义相同副本。
在遥测的早期开发阶段,XML由于其基于标签的结构而被视为首选编码格式。然而XML的问题在于其不紧凑的编码结构。思科最终采用了GPB(Google协议缓冲区),因为它提高了编码操作的效率和速度。
遥测流的编码选项有两种GPB:
两种GPB遥测格式之间的主要区别在于它们如何表示和编码遥测数据流中的密钥。
JSON是另一个易于理解、几乎任何应用程序都能够解码的人工友好编码方案。
从部署角度来看,编码方案的优点和缺点很少。遥测设计指南一节中对各种编码方案进行了比较。
遥测为传输协议提供了三种可能的选择:
遥测还定义了两种不同的启动模式,以启动节点和收集器之间的会话:
两种模式之间的区别只在于传输会话的建立方式。
在拨出会话期间,设备通过向预配置的服务器端口发送syn数据包来发起连接。建立连接后,数据流会立即从设备推离。
对于拨入会话,路由器被动侦听等待服务器连接的tcp端口。
但是,一旦建立会话,服务器本身就不会轮询路由器,因为设备仍负责数据推送操作。在MDT中,数据轮询的概念甚至不存在。
默认情况下,TCP是遥测的预定义传输方法,因为它可靠且非常易于配置为选项。
gRPC是一种现代开源框架,旨在在任何环境中运行。它构建在HTTP/2之上,并提供增强且丰富的功能集。
从订用数据集中的数据以配置的周期性间隔或仅在发生事件时被流传输到目的地。此行为取决于MDT是配置用于基于节奏的遥测还是基于事件的遥测。
基于事件的遥测配置类似于基于节奏的遥测,只以示例间隔作为区分因素。将示例间隔值配置为零将基于事件的遥测的订用设置为零,而将间隔配置为任何非零值将设置基于节奏的遥测的订用。
它建议使用事件驱动遥测来处理与变更相关的事件。
如前所述,遥测堆栈中有许多组件,以下是在XR设备上实施遥测时需要考虑的一些准则。
如上所述,编码或序列化将数据(对象、状态)转换为可通过网络传输的格式。当接收方解码或反序列化数据时,它具有原始数据的语义上相同的副本。
各种编码选项在线路效率和易用性方面各不相同。
编码 | 简要说明 | 布线效率 | 其他考虑事项 |
GPB(紧凑型) | 所有二进制 (除字符串值外) 速度提高2倍,操作更复杂(但与SNMP无关) |
高 | 每个模型的原始文件 |
GPB - KV(密钥值对) | 字符串键和二进制值 (字符串值除外) 大3倍, 本地型号:仍然需要启发法来查找密钥名 |
中到低 | 单个.proto文件用于煎煮 |
JSON | 所有字符串:密钥和值 | 低 | 友好。可读性、应用友好且易于解析 |
GPB-KV为编码方案提供了良好的平衡中点。
关于所选编码方案的消息长度,下面是线路上的比较。
编码比较 — 消息长度(以字节为单位)
不同的编码选项对带宽的要求不同。在考虑遥测时,网络运营商需要根据所选的编码方案处理足够的带宽调配。只想得到一个公平的想法,即比每个编码方案比较的带宽消耗低。
网络带宽比较
思科建议使用KV-GPB。它在效率和便利性之间起着很好的中点作用。
在配置模型驱动遥测时,操作员应了解遥测中涉及的所有不同组件。根据上面详述的可用于传输、编码和流传输方向的选项,您可以进一步选择更适合环境的组合。
四个关键组件是
传输: 如前所述,节点可以通过TCP、UDP或gRPC over HTTP/2传输遥测数据。
尽管为简单起见,gRPC是首选的TCP,但它提供可选的TLS功能,从安全角度来说,这可能被视为额外的优势。
编码: 路由器可以以两种不同类型的Google协议缓冲区提供遥测数据:紧凑且自我描述的GPB。
紧凑型GPB是最高效的编码,但需要为流传输的每个YANG模型提供唯一的.proto。自描述GPB效率较低,但它使用单个.proto文件对所有YANG模型进行解码,因为密钥在.proto中作为字符串传递。
会话方向: 在遥测部署中发起会话有两种选项。路由器可以“拨出”到收集器,或者收集器可以“拨入”到路由器。
YANG是业界公认的数据建模标准,思科可编程性堆栈也使用它来形成结构化数据集,该数据集可以在网络中尽可能快地编码和传输。
这些数据模型与上文讨论的特定编码格式和传输协议相结合,使模型驱动遥测(MDT)成为分析的完整解决方案。
在拨出模式下,路由器负责向收集器发起TCP会话,并发送订阅中传感器组指定的数据。
遥测拨出从配置角度来看,遥测配置是一个三步过程。首先,在传感器组配置下识别要传输的信息并捕获信息。其次,我们确定信息必须流传输到的目标,并在目标组配置下捕获信息。第三,我们使用前两个步骤中确定的信息配置实际订用。
传感器组配置标识要流式传输的信息。以下配置模板提供配置传感器组所需的配置。
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group <Sensor-Group-Name> RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path <Sensor-Path> RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# commit RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# end RP/0/RP0/CPU0:XR#
以下示例显示路由器CLI中传感器组配置的实际示例:
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group SensorGroup101 RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# commit RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# end RP/0/RP0/CPU0:XR#
作为同一传感器组定义的一部分,我们可以有多个传感器路径:
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group SensorGroup101 RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/data-rate RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# commit RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# end RP/0/RP0/CPU0:XR#
目标组配置确定信息要流传输到的目标。
它有三个关键参数
下面是一个示例:
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)# telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)# destination-group DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-dest)# address family ipv4 10.1.1.1 port 5432 RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)# encoding self-describing-gpb RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)# protocol tcp RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)# commit RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# end RP/0/RP0/CPU0:XR#
订用将传感器组和目标组信息绑定在一起,作为配置的最终部分。示例间隔定义为订用的一部分。
下面是一个示例:
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 30000 RP/0/RP0/CPU0:XR(config-model-driven-subs)#destination-id DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-subs)# commit RP/0/RP0/CPU0:XR(config-model-driven-subs)# end RP/0/RP0/CPU0:XR#
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#conf RP/0/RP0/CPU0:XR(config)# RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group SensorGroup101 RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)#destination-group DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-dest)#address family ipv4 10.1.1.2 port 5432 RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#encoding self-describing-gpb RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#protocol tcp RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 30000 RP/0/RP0/CPU0:XR(config-model-driven-subs)#destination-id DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#commit RP/0/RP0/CPU0:XR(config-model-driven-subs)#end RP/0/RP0/CPU0:XR#
在拨入模式下,MDT收集器/接收器/协调器拨入路由器并动态订用一个或多个传感器路径或订用。路由器充当服务器,客户端充当接收器。
仅形成一个会话,路由器通过同一会话传输遥测数据。当接收方取消订阅或会话终止时,此动态订用终止。
遥测拨入
由于收集器“拨入”到路由器,因此无需在配置中指定每个MDT目标。只需在路由器上启用gRPC服务、连接客户端并动态启用所需的遥测订用。
从配置角度看,遥测配置是类似于上述步骤的三步过程。首先,需要启用gRPC。其次,我们确定信息必须流传输到的目标,并在会话组配置下捕获信息。第三,我们使用前两个步骤中确定的信息配置实际订用。
首先,我们需要启用路由器上的gRPC服务器以接受来自收集器的传入连接。
RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)# grpc RP/0/RP0/CPU0:XR(config-grpc)#port 57890 RP/0/RP0/CPU0:XR(config-grpc)#commit RP/0/RP0/CPU0:XR(config-grpc)#end RP/0/RP0/CPU0:XR#
传感器组配置标识要流式传输的信息。以下配置模板提供配置传感器组所需的配置。
以下示例显示路由器CLI中传感器组配置的实际示例
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group SensorGroup101 RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path openconfig-interfaces:interfaces/interface RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# commit RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# end RP/0/RP0/CPU0:XR#
订用将传感器组和gRPC绑定在一起,作为配置的最终部分。示例间隔定义为订用的一部分。
以下配置模板提供配置订用所需的配置。
以下示例显示路由器CLI中的实际示例,其中我们创建订用并将传感器组和目标组绑定在一起,同时定义采样率。
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 30000 RP/0/RP0/CPU0:XR(config-model-driven-subs)# commit RP/0/RP0/CPU0:XR(config-model-driven-subs)# end RP/0/RP0/CPU0:XR#
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)# grpc RP/0/RP0/CPU0:XR(config-grpc)#port 57890 RP/0/RP0/CPU0:XR(config-grpc)telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 30000 RP/0/RP0/CPU0:XR(config-model-driven-subs)# commit RP/0/RP0/CPU0:XR(config-model-driven-subs)# end RP/0/RP0/CPU0:XR#
在事件驱动遥测中,仅当发生事件时,才会从订用数据集流出数据。
基于事件的遥测的配置类似于基于节奏的遥测,而事件驱动遥测的配置唯一差异是样本间隔的配置。将示例间隔值配置为零将基于事件的遥测的订用设置为。
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#conf RP/0/RP0/CPU0:XR(config)# RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group <Sensor-Group-Name> RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path <Sensor-Path> RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)#destination-group <Destination-Group-Name> RP/0/RP0/CPU0:XR(config-model-driven-dest)#address family ipv4 <Destination-IP> port <Destination-Port> RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#encoding <Encoding-Type> RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#protocol <Transport-Protocol> RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#subscription <Subscription-Name> RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id <Sensor-Group-Name> sample-interval <0> RP/0/RP0/CPU0:XR(config-model-driven-subs)#destination-id <Destination-Group-Name> RP/0/RP0/CPU0:XR(config-model-driven-subs)#commit RP/0/RP0/CPU0:XR(config-model-driven-subs)#end RP/0/RP0/CPU0:XR#
以下示例显示路由器CLI中的实际示例。
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#conf RP/0/RP0/CPU0:XR(config)# RP/0/RP0/CPU0:XR(config)#telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#sensor-group SensorGroup101 RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)# sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR(config-model-driven-snsr-grp)#destination-group DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-dest)#address family ipv4 10.1.1.2 port 5432 RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#encoding self-describing-gpb RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#protocol tcp RP/0/RP0/CPU0:XR(config-model-driven-dest-addr)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 0 RP/0/RP0/CPU0:XR(config-model-driven-subs)#destination-id DestGroup101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#commit RP/0/RP0/CPU0:XR(config-model-driven-subs)#end RP/0/RP0/CPU0:XR#
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)# grpc RP/0/RP0/CPU0:XR(config-grpc)#port <port-number> RP/0/RP0/CPU0:XR(config-grpc)telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#subscription <Subscription-Name> RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id <Sensor-Group-Name> sample-interval <0> RP/0/RP0/CPU0:XR(config-model-driven-subs)#commit RP/0/RP0/CPU0:XR(config-model-driven-subs)#end RP/0/RP0/CPU0:XR#
以下示例显示路由器CLI中的实际示例。
RP/0/RP0/CPU0:XR# RP/0/RP0/CPU0:XR#config RP/0/RP0/CPU0:XR(config)# grpc RP/0/RP0/CPU0:XR(config-grpc)#port 57890 RP/0/RP0/CPU0:XR(config-grpc)telemetry model-driven RP/0/RP0/CPU0:XR(config-model-driven)#subscription Subscription101 RP/0/RP0/CPU0:XR(config-model-driven-subs)#sensor-group-id SensorGroup101 sample-interval 0 RP/0/RP0/CPU0:XR(config-model-driven-subs)# commit RP/0/RP0/CPU0:XR(config-model-driven-subs)# end RP/0/RP0/CPU0:XR#
从路由器的角度,我们可以检验为每个传感器组、目标组和订用配置的参数
// ALL CONFIGURED SUBSCRIPTIONS RP/0/RP0/CPU0:XR#show telemetry model-driven subscription Subscription: Subscription101 State: ACTIVE ------------- Sensor groups: Id Interval(ms) State SensorGroup101 30000 Resolved Destination Groups: Id Encoding Transport State Port IP DestGroup101 self-describing-gpb tcp Active 5432 172.16.128.3 // DETAILS ON A PARTICULAR SUBSCRIPTION RP/0/RP0/CPU0:XR#show telemetry model-driven subscription Subscription101 Subscription: Subscription101 ------------- State: ACTIVE Sensor groups: Id: SensorGroup101 Sample Interval: 30000 ms Sensor Path: Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters Sensor Path State: Resolved Destination Groups: Group Id: DestGroup101 Destination IP: 172.16.128.3 Destination Port: 5432 Encoding: self-describing-gpb Transport: tcp State: Active Total bytes sent: 4893 Total packets sent: 1 Last Sent time: 2019-11-01 10:04:11.2378949664 +0000 Collection Groups: ------------------ Id: 1 Sample Interval: 30000 ms Encoding: self-describing-gpb Num of collection: 5 Collection time: Min: 6 ms Max: 29 ms Total time: Min: 6 ms Avg: 12 ms Max: 29 ms Total Deferred: 0 Total Send Errors: 0 Total Send Drops: 0 Total Other Errors: 0 Last Collection Start:2019-11-01 10:06:11.2499000664 +0000 Last Collection End: 2019-11-01 10:06:11.2499006664 +0000 Sensor Path: Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR# // ALL CONFIGURED DESTINATIONS RP/0/RP0/CPU0:XR#show telemetry model-driven destination Group Id IP Port Encoding Transport State ----------------------------------------------------------------------------- DestGroup101 172.16.128.3 5432 self-describing-gpb tcp Active RP/0/RP0/CPU0:XR# // PARTICULAR DESTINATION RP/0/RP0/CPU0:XR#show telemetry model-driven destination DestGroup101 Destination Group: DestGroup101 ----------------- Destination IP: 172.16.128.3 Destination Port: 5432 State: Active Encoding: self-describing-gpb Transport: tcp Total bytes sent: 83181 Total packets sent: 17 Last Sent time: 2019-11-01 10:12:11.2859133664 +0000 Collection Groups: ------------------ Id: 1 Sample Interval: 30000 ms Encoding: self-describing-gpb Num of collection: 17 Collection time: Min: 5 ms Max: 29 ms Total time: Min: 6 ms Max: 29 ms Avg: 10 ms Total Deferred: 0 Total Send Errors: 0 Total Send Drops: 0 Total Other Errors: 0 Last Collection Start:2019-11-01 10:12:11.2859128664 +0000 Last Collection End: 2019-11-01 10:12:11.2859134664 +0000 Sensor Path: Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters RP/0/RP0/CPU0:XR# // ALL CONFIGURED SENSOR GROUPS RP/0/RP0/CPU0:XR#show telemetry model-driven sensor-group Sensor Group Id:SensorGroup101 Sensor Path: Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters Sensor Path State: Resolved // PARTICULAR SENSOR GROUPS RP/0/RP0/CPU0:XR#show telemetry model-driven sensor-group SensorGroup101 Sensor Group Id:SensorGroup101 Sensor Path: Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface/latest/generic-counters Sensor Path State: Resolved RP/0/RP0/CPU0:XR#
除路由器配置外,基于遥测的解决方案需要多个组件,如收集器、数据库和监控/分析软件。这些组件可以单独配置,也可以是单个综合产品的一部分。
详细描述收集堆栈已超出范围。Cisco Crossworks Health Insights允许零接触遥测,其中设备自动调配遥测配置,表/架构在时间系列数据库(TSDB)中创建。 它简化了收集和清理数据的运营和网络管理开销,从而使运营商能够专注于其业务目标。通用收集器通过SNMP、CLI和模型驱动遥测收集网络设备数据,可避免重复数据,并减少设备和网络的负载。
以下是分析网络中遥测部署时需要考虑的各种因素。
遥测可以传输大量数据,建议仔细考虑可扩展性方面。
每个Yang模型将有多个枝叶节点。建议具体说明所需信息和不需要的信息。建议探索杨模型并确定遥测使用案例所需的数据路径。
流传输的遥测数据总量需要考虑以下几点:
建议根据应用需求评估收集频率。
总的来说,建议考虑在源或目的地过滤不需要的数据,因为这是可行的。我们确实可以选择过滤不需要的数据。过滤可在两个级别上执行:-
以下示例显示仅通过应用通配符在传感器路径内过滤已搜索千兆接口的数据。
sensor-path Cisco-IOS-XR-infra-statsd-oper:infra-statistics/interfaces/interface[interface-name='HundredGigE*']/latest/generic-counters
https://blogs.cisco.com/sp/the-limits-of-snmp
https://blogs.cisco.com/sp/why-you-should-care-about-model-driven-telemetry
https://www.cisco.com/c/en/us/td/docs/iosxr/asr9000/telemetry/b-telemetry-cg-asr9000-61x.html