设备端口流量¶
获取交换机端口流量的大小。
采集侧¶
采集原理¶
采集器通过周期性的查询交换机的端口当前的已经流过的bit数。
注意
通过SNMP方式采集回来的数据单位为单位为octet,实际计算为bit的时候需要乘以8。 另外,交换机会对该值做统计,最大值是2^64,当超过这个值之后,将会从0开始计算。所以,如果采集频率较小,会出现临近两次的值,后一次比前一次的小。 同时,部分交换机对该值是有刷新的时间周期的,如果采集的周期小于设备刷新的周期,会导致相邻两次的值一样的情况。 比如思科的Nexus系列就是存在这类情况。
采集任务参数配置要求¶
采集方式 |
SNMP |
---|---|
SNMP OID |
|
返回值 |
累计流量的bit总数 |
采集超时时间 |
默认10000ms |
采集周期 |
|
配置筛选条件 |
|
特殊端口采集周期 |
|
特殊要求 |
|
任务筛选条件的互斥关系¶
采集模式必选
机房–POD–设备IP,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;当且仅当机房、POD、同时处于单选状态下方可继续选择设备IP;
区域–机房,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;
设备IP地址仅仅可以在没有任何其他项勾选的情况下,才可以支持手工输入多个IP地址,或者多个地址段;
任务处理流程¶
从筛选条件中筛选出符合要求的设备;设备优先使用带内IP地址作为目标地址去采集,如果没有带内地址,则使用带外去采集。
将筛选出的设备,设置采集周期;
对上述设备执行下发任务至指定的采集节点(包括人工指定,和按同一个机房使用本机房的采集器两种方式,后一种为默认行为);
对于不能通过自动下发任务至同机房采集器的任务,下发任务至默认的采集器去采集;
对于采集模式批量方式的,通过CMDB信息判断设备是否是在出口和专线中,判断特殊端口的采集周期和普通的采集周期是否一致,一致则以该频率做批量采集。否则,退化为单端口采集,针对不同端口设置不同的采集频率。
对于采集模式是单端口模式的,从CMDB拉取该设备的端口信息,按每个端口发送一次请求;批量的,则只发一次请求。
采集器执行采集任务,当请求报文发出去之后。如果超时时间内(默认 2000ms)没有收到返回,采集失败,此时刻没有数据。如果有返回,将返回值做预处理。
注意每个端口都有两个方向的数据需要采集,分别为出方向的流量大小,如方向的流量大小
注意
批量采集的时候,在特定设备上,会出现部分端口的数据有返回,部分无返回的情况。对于没有返回数据的端口,认为该端口的采集失败。
端口流量采集示例¶
如下是一个批量采集设备端口的流量的示例。注意到返回值包括两部分,一个是“=”左边的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
采集值预处理¶
采集会有二类情形,一是采集超时,没有取回结果;二是采集正常。
采集超时,没有取回结果时,则本次采集为空,即这个时刻没有采集数据,不做任何数据的补充,不能标记为0值等;
解析返回值,取出返回值中的index和对应的端口流量状态值。
将本次采集值减去上一次采集值的绝对值,作为
流量增量值
。(这里考虑到复杂处理,我们不额外处理计数器溢出导致的情况) \(C_{increase} = C_{current} - C_{last}\)将
流量增量值
换算为使用带宽大小。\(B_{used} = C_{increase}*8/100000/SampleInterval\)将
流量增量值
换算为带宽使用率[单位Mbps](带宽使用率分为两种,一种是人为限制带宽, 一种是端口速率),我们优先选择限制带宽为bandwith。 \(C_{util} = B_{used}*100/Bandwith\)通过index逆向从CMDB中解析出端口名字, 端口速率
数据染色¶
对每条采集数据,染色如下。
时间戳(采集时间)
业务线
区域(地域)
机房
POD
房间
机柜
业务属性(服务角色)
设备角色
带内管理IP
带外管理IP
设备名
厂商
设备品牌
设备型号
设备流程状态
端口index
端口名
端口带宽
端口流量当前值
端口流量增量值
端口带宽使用率
带宽使用大小(单位Mbps)
数据分析和报警¶
数据预处理¶
对于10s采集的数据,因为部分设备的数据刷新时间大于10s,导致出现数据带宽使用率为0的情况。所以需要对这部分数据做聚合。原始数据作为参考。
计算公式为:
即将第0s个至第50s采集的数据做均值后复制给0s的点。如17:51:00秒~17:51:50秒,6个点的数值平均后记到17:51:00秒上
策略配置¶
警告
对于端口在专线或者出口列表里的端口,不能进入此分析过程,他们单独应用于专线和出口。
策略名 |
|
---|---|
策略筛选条件 |
|
策略生效时间 |
支持到小时级别(0-23) |
阈值类型 |
|
触发阈值 |
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通知 |
告警组和通知方式 |
|
策略筛选条件的互斥关系¶
端口名不能单独选择,必须在单选设备IP情况下才能选择对应设备的端口。默认情况下都为多选
机房–POD–设备IP–端口名,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;当且仅当机房、POD同时处于单选状态下方可继续选择设备IP;
区域–机房,存在父子关系,当父节点未被选中或者是多选状态下,子节点不能继续选择;
设备IP地址仅仅可以在没有任何其他项勾选的情况下,才可以支持手工输入多个IP地址,或者多个地址段;
报警信息格式¶
报警信息分为两种,一种是触发阈值告警,一种是满足恢复阈值告警。我们把它称之为告警状态,分为 告警
恢复
。因为告警通道的的不通,为了便于阅读。需要针对不同渠道的报警设置信息格式。
邮件:
-----------------------
标题:【告警通知时间/恢复通知时间】【告警状态(告警/恢复)】【告警等级】【告警策略名】【机房,POD,角色,设备IP,最近一次带宽使用率/带宽大小】
邮件内容:
故障开始时间, 故障持续时间,故障恢复时间(当且仅当告警状态为“恢复”时候才有该时间),
业务线,区域,机房,POD,业务属性,设备角色, 设备IP,设备名称
最近一次带宽使用率/带宽大小
短信,咚咚,电话,微信:
------------------------
【告警通知时间/恢复通知时间】【告警状态(告警/恢复)】【告警状态(告警/恢复)】【告警等级】【告警策略名】
【机房,POD,角色,设备IP,设备名称】【 最近一次带宽使用率/带宽大小】
【故障开始时间, 故障持续时间,故障恢复时间(当且仅当告警状态为“恢复”时候才有该时间)】
报警的默认收敛规则¶
对重复的报警信息,实行收敛。
即一条策略被触发后,发送报警通知。同时更新一些计数器。
如果在未满足恢复阈值前提条件下,再次触发了阈值,则该次触发的报警被抑制,不对外发送报警信息。但会涉及一些计数器的更新。
当满足恢复阈值时候,发送告警恢复信息。同时更新一些计数器。
之后,如报警阈值被再次满足,则对外发送新的报警通知。
关于报警时间的规则¶
整个策略匹配过程及报警过程中,分别涉及多个时间,做如下说明。
1.故障开始时间:第一次触发阈值(满足告警阈值的第一个点的时间) 2.故障触发告警时间:满足告警频次达到告警条件 3.告警通知时间:告警平台对外发送告警通知的时间 4.聚合告警通知时间:故障触发告警时间满足告警聚合周期,多条告警聚合后的由告警平台发出的告警通知时间(仅仅在有聚合报警策略的情况下),有4没有3。 –以下仅针对有恢复的策略– 5.故障持续时间:未恢复的告警,从故障开始时间计算到当前时间点的时间段,在告警实时看板中展示;恢复的告警,故障持续时长=故障恢复时间-故障开 始时间; 6.故障恢复时间:第一个满足恢复条件的时间,通常只有在触发了第7个“故障触发恢复条件时间”时才会被记录 7.故障触发恢复条件时间:满足恢复阈值和频次达到恢复条件 8.恢复通知时间:告警平台发送恢复通知的时间 9.聚合恢复通知时间:故障触发恢复时间满足恢复聚合周期,告警平台发出的恢复通知时间(仅仅在有聚合报警策略的情况下),有9没有8
和NOC工单系统的联动¶
对于产生的故障告警,需要推送给NOC工单进入工单管理。需要根据工单返回结果对该告警做一个标记,表示目前关于此告警的工单的处理情况。
处理规则:
对于产生的告警(而非进行聚合后的告警,即聚合前的单条告警。),需要推送给NOC工单平台,根据noc平台的返回信息对该条告警设置一个
工单状态标记
。当NOC工单对该单条告警改变了状态,需要同步的跟新报警系统中该条报警的
工单状态标记
;当NOC工单标记为“已完成”,则触发告警恢复,忽略掉恢复阈值的检测,对外发送告警恢复信息;同时这条告警彻底清除,即便真实情况下告警并未恢复。
如果告警恢复阈值检测到满足,则触发告警恢复信息,同时通知NOC工单平台修改该工单状态为”已完成”, 关闭工单。
故障池(故障看板)的联动¶
但每条告警产生的时候,将该告警加入一个告警池。在告警池中对该条告警的状态进行跟踪。包括三个方面的状态跟踪。 故障持续时间,24小时内触发次数,NOC工单状态,故障恢复与否。
故障持续时间:当前时间-故障开始时间。 24小时内触发次数:最近一天满足触发阈值的次数-1。 NOC工单状态:NOC工单的状态信息。 故障恢复与否:但手工对NOC工单关闭或者自动触发恢复时候,从故障池子清除条目。不在故障池子里则认为恢复。
告警池字段要求如下:
故障开始时间
故障持续时间
设备IP
端口名
端口流量大小/使用率
设备角色
业务线
机房
历史告警数(24H)
NOC工单状态
NOC工单状态说明¶
NOC返回状态值 |
状态 |
说明 |
1 |
新工单 |
告警事件生成工单的初始状态 |
10 |
待处理 |
NOC人员接单后触发这个状态 |
20 |
处理中 |
NOC人员进行处理操作 |
21 |
已转派 |
NOC人员处理不了转派给网络运维 |
99 |
已取消 |
NOC人员进行取消操作 |
100 |
已完成 |
NOC人员进行跟进确认后触发该状态 |
101 |
自动恢复 |
这个是根据告警这边的恢复通知生成 |
可视化¶
针对单台设备,示对某一时刻指定端口名和其端口的流量情况。要求如下。
以横坐标为时间轴,纵坐标为带宽大小或者是使用率,出入方向分别再Y轴的正向和负向。刻画设备每个端口的流量变化情况。
如果端口存在10s维度的采集数据,需要同时展示10s维度和聚合成1min的数据。
默认展示一个小时的使用率信息;
针对单台设备,展示对某一时刻所有端口名和其端口的流量情况。要求如下。
以表格形式展示,每行一个端口和对应的端口出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量,采集时间
如果所选时刻没有对应时刻的端口状态信息,则取最近一次采集值
支持端口出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量来排序
针对多有设备、一个机房、一个POD、一台设备,在一段时间内带宽使用率TOP N端口排名。
以表格形式展示,每行一个端口和对应的出带宽使用率,出带宽使用量,入带宽使用率,入带宽使用量,采集时间。还包括其他额外的信息:机房、POD、设备IP、设备名、设备角色。
统计方式为,指定时间段内,一个端口的最高使用率为一条记录。一个端口只能出现在TOP N中一次。
默认TOP20。支持可设置,不大于100.
针对一个端口或者一组端口,计算该端口、或者改组段口。在一个自然周和自然月95值。
以表格形式展示,每行一个端口和对应的95带宽值,95峰值,峰值时间。还包括其他额外的信息:机房、POD、设备IP、设备名、设备角色。
同时展示该周期内的流量图
未完成的部分¶
自助任务下发;
策略的分级,即按类似ACL的方式匹配策略;需求未提
实现业务线的支持,或者所是多用户的支持;
重复告警抑制
以端口组维度报警,需求未提