设备端口流量

获取交换机端口流量的大小。

采集侧

采集原理

采集器通过周期性的查询交换机的端口当前的已经流过的bit数。

注意

通过SNMP方式采集回来的数据单位为单位为octet,实际计算为bit的时候需要乘以8。 另外,交换机会对该值做统计,最大值是2^64,当超过这个值之后,将会从0开始计算。所以,如果采集频率较小,会出现临近两次的值,后一次比前一次的小。 同时,部分交换机对该值是有刷新的时间周期的,如果采集的周期小于设备刷新的周期,会导致相邻两次的值一样的情况。 比如思科的Nexus系列就是存在这类情况。

采集任务参数配置要求

采集方式

SNMP

SNMP OID

  • 入方向:1.3.6.1.2.1.31.1.1.1.6

  • 出方向:1.3.6.1.2.1.31.1.1.1.10

返回值

累计流量的bit总数

采集超时时间

默认10000ms

采集周期

  1. 次/10s,每次完成一个设备的所有接口的数据采集(批量采集)

  2. 次/1min,每次完成一个设备的所有接口的数据采集(批量采集)

  3. 次/2min,每次完成一个设备的所有接口的数据采集(批量采集)

  4. 次/10s,每次完成一个接口的数据采集(单端口采集)

  5. 次/1min,每次完成一个接口的数据采集(单端口采集)

  6. 次/2min,每次完成一个接口的数据采集(单端口采集)

配置筛选条件

  1. 业务线

  2. 区域(地域)

  3. 机房

  4. POD

  5. 业务属性(服务角色)

  6. 设备角色

  7. 设备IP、IP地址段

  8. 采集模式(单端口,批量)

特殊端口采集周期

  1. 对于专线和出口端口的采集频率设置

  2. 次/10s,每次完成一个接口的数据采集(单端口采集)

  3. 次/1min,每次完成一个接口的数据采集(单端口采集)

  4. 次/2min,每次完成一个接口的数据采集(单端口采集)

特殊要求

  1. 使用同一机房的采集去采集该机房的设备存活状态,如果该机房没有采集器,使用一组指定的默认采集器去采集

  2. 支持手动指定某一些IP地址(ip地址段)使用特定的采集器

任务筛选条件的互斥关系

  1. 采集模式必选

  2. 机房–POD–设备IP,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;当且仅当机房、POD、同时处于单选状态下方可继续选择设备IP;

  3. 区域–机房,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;

  4. 设备IP地址仅仅可以在没有任何其他项勾选的情况下,才可以支持手工输入多个IP地址,或者多个地址段;

任务处理流程

  1. 从筛选条件中筛选出符合要求的设备;设备优先使用带内IP地址作为目标地址去采集,如果没有带内地址,则使用带外去采集。

  2. 将筛选出的设备,设置采集周期;

  3. 对上述设备执行下发任务至指定的采集节点(包括人工指定,和按同一个机房使用本机房的采集器两种方式,后一种为默认行为);

  4. 对于不能通过自动下发任务至同机房采集器的任务,下发任务至默认的采集器去采集;

  5. 对于采集模式批量方式的,通过CMDB信息判断设备是否是在出口和专线中,判断特殊端口的采集周期和普通的采集周期是否一致,一致则以该频率做批量采集。否则,退化为单端口采集,针对不同端口设置不同的采集频率。

  6. 对于采集模式是单端口模式的,从CMDB拉取该设备的端口信息,按每个端口发送一次请求;批量的,则只发一次请求。

  7. 采集器执行采集任务,当请求报文发出去之后。如果超时时间内(默认 2000ms)没有收到返回,采集失败,此时刻没有数据。如果有返回,将返回值做预处理。

  8. 注意每个端口都有两个方向的数据需要采集,分别为出方向的流量大小,如方向的流量大小

注意

批量采集的时候,在特定设备上,会出现部分端口的数据有返回,部分无返回的情况。对于没有返回数据的端口,认为该端口的采集失败。

端口流量采集示例

如下是一个批量采集设备端口的流量的示例。注意到返回值包括两部分,一个是“=”左边的oid,一部分是采集值。返回的OID是两部分合成的,snmp请求的OID加上端口index。 所以,根据返回值,我们可以知道端口的index和对应的bit值。通过index可以逆向查找到该index对应的端口名、带宽等信息。

[linux]$ snmpbulkwalk -c 360buy -v 2c -O Qn  172.28.0.21 1.3.6.1.2.1.31.1.1.1.6
.1.3.6.1.2.1.31.1.1.1.6.436 = 262474421298197
.1.3.6.1.2.1.31.1.1.1.6.437 = 398990784040185
.1.3.6.1.2.1.31.1.1.1.6.438 = 748587795338452
.1.3.6.1.2.1.31.1.1.1.6.439 = 545337523591573
.1.3.6.1.2.1.31.1.1.1.6.440 = 354141939931478
.1.3.6.1.2.1.31.1.1.1.6.441 = 352663359849510
.1.3.6.1.2.1.31.1.1.1.6.442 = 50923126328422
.1.3.6.1.2.1.31.1.1.1.6.443 = 87161657902329
.1.3.6.1.2.1.31.1.1.1.6.444 = 386220895479355
.1.3.6.1.2.1.31.1.1.1.6.445 = 419397774056438
.1.3.6.1.2.1.31.1.1.1.6.446 = 7848238529338
.1.3.6.1.2.1.31.1.1.1.6.447 = 341401915516811
.1.3.6.1.2.1.31.1.1.1.6.448 = 106775721102572

采集值预处理

采集会有二类情形,一是采集超时,没有取回结果;二是采集正常。

  1. 采集超时,没有取回结果时,则本次采集为空,即这个时刻没有采集数据,不做任何数据的补充,不能标记为0值等;

  2. 解析返回值,取出返回值中的index和对应的端口流量状态值。

  3. 将本次采集值减去上一次采集值的绝对值,作为 流量增量值 。(这里考虑到复杂处理,我们不额外处理计数器溢出导致的情况) \(C_{increase} = C_{current} - C_{last}\)

  4. 流量增量值 换算为使用带宽大小。\(B_{used} = C_{increase}*8/100000/SampleInterval\)

  5. 流量增量值 换算为带宽使用率[单位Mbps](带宽使用率分为两种,一种是人为限制带宽, 一种是端口速率),我们优先选择限制带宽为bandwith。 \(C_{util} = B_{used}*100/Bandwith\)

  6. 通过index逆向从CMDB中解析出端口名字, 端口速率

数据染色

对每条采集数据,染色如下。

  1. 时间戳(采集时间)

  2. 业务线

  3. 区域(地域)

  4. 机房

  5. POD

  6. 房间

  7. 机柜

  8. 业务属性(服务角色)

  9. 设备角色

  10. 带内管理IP

  11. 带外管理IP

  12. 设备名

  13. 厂商

  14. 设备品牌

  15. 设备型号

  16. 设备流程状态

  17. 端口index

  18. 端口名

  19. 端口带宽

  20. 端口流量当前值

  21. 端口流量增量值

  22. 端口带宽使用率

  23. 带宽使用大小(单位Mbps)

数据分析和报警

数据预处理

对于10s采集的数据,因为部分设备的数据刷新时间大于10s,导致出现数据带宽使用率为0的情况。所以需要对这部分数据做聚合。原始数据作为参考。

计算公式为:

\[C_0 = {{C_{inc0} + C_{inc10} + ...+ C_{inc50}} \over 6}\]
\[B_0 = {{B_{used0} + B_{used10} + ...+ B_{used50}} \over 6}\]

即将第0s个至第50s采集的数据做均值后复制给0s的点。如17:51:00秒~17:51:50秒,6个点的数值平均后记到17:51:00秒上

策略配置

警告

对于端口在专线或者出口列表里的端口,不能进入此分析过程,他们单独应用于专线和出口。

策略名

  1. 报警策略名字

策略筛选条件

  1. 业务线

  2. 区域(地域)

  3. 机房

  4. POD

  5. 业务属性(服务角色)

  6. 设备角色

  7. 设备IP、IP地址段

  8. 端口名

  9. 流量方向(进,出)

策略生效时间

支持到小时级别(0-23)

阈值类型

  1. 带宽使用率

  2. 流量大小(Mbps)

触发阈值

M分钟内使用率>=N达到S次(M,N,S为整数, N可以为流量大小或者流量使用率,根据阈值类型定义)。

恢复阈值

X分钟内使用率<Y达到X次(X,Y,Z为整数,Y可以为流量大小或者流量使用率,根据阈值类型定义)。默认X=M,Y=N,Z=S

策略生效状态

默认为策略生效状态,开启时源数据进入告警分析模块进行计算和比对,禁用时源数据不进行告警分析

策略告警等级

用于标识该策略的告警重要性程度,分5个等级:A1严重,A3主要,A5次要,A7一般,A9通知

告警组和通知方式

  1. 告警组,将不同人员分成不同的组,按组的方式发送告警;

  2. 通知方式:邮件、咚咚、微信、短信、电话;针对每个组可多选或者不选;

策略筛选条件的互斥关系

  1. 端口名不能单独选择,必须在单选设备IP情况下才能选择对应设备的端口。默认情况下都为多选

  2. 机房–POD–设备IP–端口名,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;当且仅当机房、POD同时处于单选状态下方可继续选择设备IP;

  3. 区域–机房,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;

  4. 设备IP地址仅仅可以在没有任何其他项勾选的情况下,才可以支持手工输入多个IP地址,或者多个地址段;

报警信息格式

报警信息分为两种,一种是触发阈值告警,一种是满足恢复阈值告警。我们把它称之为告警状态,分为 告警 恢复 。因为告警通道的的不通,为了便于阅读。需要针对不同渠道的报警设置信息格式。

邮件:
-----------------------
标题:【告警通知时间/恢复通知时间】【告警状态(告警/恢复)】【告警等级】【告警策略名】【机房,POD,角色,设备IP,最近一次带宽使用率/带宽大小】
邮件内容:
故障开始时间, 故障持续时间,故障恢复时间(当且仅当告警状态为“恢复”时候才有该时间),
业务线,区域,机房,POD,业务属性,设备角色, 设备IP,设备名称
最近一次带宽使用率/带宽大小


短信,咚咚,电话,微信:
------------------------
【告警通知时间/恢复通知时间】【告警状态(告警/恢复)】【告警状态(告警/恢复)】【告警等级】【告警策略名】
【机房,POD,角色,设备IP,设备名称】【 最近一次带宽使用率/带宽大小】
【故障开始时间, 故障持续时间,故障恢复时间(当且仅当告警状态为“恢复”时候才有该时间)】

报警的默认收敛规则

对重复的报警信息,实行收敛。

  1. 即一条策略被触发后,发送报警通知。同时更新一些计数器。

  2. 如果在未满足恢复阈值前提条件下,再次触发了阈值,则该次触发的报警被抑制,不对外发送报警信息。但会涉及一些计数器的更新。

  3. 当满足恢复阈值时候,发送告警恢复信息。同时更新一些计数器。

  4. 之后,如报警阈值被再次满足,则对外发送新的报警通知。

关于报警时间的规则

整个策略匹配过程及报警过程中,分别涉及多个时间,做如下说明。

1.故障开始时间:第一次触发阈值(满足告警阈值的第一个点的时间) 2.故障触发告警时间:满足告警频次达到告警条件 3.告警通知时间:告警平台对外发送告警通知的时间 4.聚合告警通知时间:故障触发告警时间满足告警聚合周期,多条告警聚合后的由告警平台发出的告警通知时间(仅仅在有聚合报警策略的情况下),有4没有3。 –以下仅针对有恢复的策略– 5.故障持续时间:未恢复的告警,从故障开始时间计算到当前时间点的时间段,在告警实时看板中展示;恢复的告警,故障持续时长=故障恢复时间-故障开 始时间; 6.故障恢复时间:第一个满足恢复条件的时间,通常只有在触发了第7个“故障触发恢复条件时间”时才会被记录 7.故障触发恢复条件时间:满足恢复阈值和频次达到恢复条件 8.恢复通知时间:告警平台发送恢复通知的时间 9.聚合恢复通知时间:故障触发恢复时间满足恢复聚合周期,告警平台发出的恢复通知时间(仅仅在有聚合报警策略的情况下),有9没有8

和NOC工单系统的联动

对于产生的故障告警,需要推送给NOC工单进入工单管理。需要根据工单返回结果对该告警做一个标记,表示目前关于此告警的工单的处理情况。

处理规则:

  1. 对于产生的告警(而非进行聚合后的告警,即聚合前的单条告警。),需要推送给NOC工单平台,根据noc平台的返回信息对该条告警设置一个 工单状态标记

  2. 当NOC工单对该单条告警改变了状态,需要同步的跟新报警系统中该条报警的 工单状态标记

  3. 当NOC工单标记为“已完成”,则触发告警恢复,忽略掉恢复阈值的检测,对外发送告警恢复信息;同时这条告警彻底清除,即便真实情况下告警并未恢复。

  4. 如果告警恢复阈值检测到满足,则触发告警恢复信息,同时通知NOC工单平台修改该工单状态为”已完成”, 关闭工单。

故障池(故障看板)的联动

但每条告警产生的时候,将该告警加入一个告警池。在告警池中对该条告警的状态进行跟踪。包括三个方面的状态跟踪。 故障持续时间,24小时内触发次数,NOC工单状态,故障恢复与否。

故障持续时间:当前时间-故障开始时间。 24小时内触发次数:最近一天满足触发阈值的次数-1。 NOC工单状态:NOC工单的状态信息。 故障恢复与否:但手工对NOC工单关闭或者自动触发恢复时候,从故障池子清除条目。不在故障池子里则认为恢复。

告警池字段要求如下:

  1. 故障开始时间

  2. 故障持续时间

  3. 设备IP

  4. 端口名

  5. 端口流量大小/使用率

  6. 设备角色

  7. 业务线

  8. 机房

  9. 历史告警数(24H)

  10. NOC工单状态

NOC工单状态说明

NOC返回状态值

状态

说明

1

新工单

告警事件生成工单的初始状态

10

待处理

NOC人员接单后触发这个状态

20

处理中

NOC人员进行处理操作

21

已转派

NOC人员处理不了转派给网络运维

99

已取消

NOC人员进行取消操作

100

已完成

NOC人员进行跟进确认后触发该状态

101

自动恢复

这个是根据告警这边的恢复通知生成

可视化

针对单台设备,示对某一时刻指定端口名和其端口的流量情况。要求如下。

  1. 以横坐标为时间轴,纵坐标为带宽大小或者是使用率,出入方向分别再Y轴的正向和负向。刻画设备每个端口的流量变化情况。

  2. 如果端口存在10s维度的采集数据,需要同时展示10s维度和聚合成1min的数据。

  3. 默认展示一个小时的使用率信息;

针对单台设备,展示对某一时刻所有端口名和其端口的流量情况。要求如下。

  1. 以表格形式展示,每行一个端口和对应的端口出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量,采集时间

  2. 如果所选时刻没有对应时刻的端口状态信息,则取最近一次采集值

  3. 支持端口出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量来排序

针对多有设备、一个机房、一个POD、一台设备,在一段时间内带宽使用率TOP N端口排名。

  1. 以表格形式展示,每行一个端口和对应的出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量,采集时间。还包括其他额外的信息:机房、POD、设备IP、设备名、设备角色。

  2. 统计方式为,指定时间段内,一个端口的最高使用率为一条记录。一个端口只能出现在TOP N中一次。

  3. 默认TOP20。支持可设置,不大于100.

针对一个端口或者一组端口,计算该端口、或者改组段口。在一个自然周和自然月95值。

  1. 以表格形式展示,每行一个端口和对应的95带宽值,95峰值,峰值时间。还包括其他额外的信息:机房、POD、设备IP、设备名、设备角色。

  2. 同时展示该周期内的流量图

未完成的部分

  1. 自助任务下发;

  2. 策略的分级,即按类似ACL的方式匹配策略;需求未提

  3. 实现业务线的支持,或者所是多用户的支持;

  4. 重复告警抑制

  5. 以端口组维度报警,需求未提