在zabbix中,有一种监控项类型为 可计算的,可以进行对其他监控项进行简单的计算聚合


需求

在实现了zabbix监控交换机端口流量之后,需要统计一组端口总端口速率情况,且需要计算出每日总流量。如示例:eht0与eth1 都为上联端口,需要统计该交换机上联的流量情况。

图-1

分析

由于无法直接通过SNMP从交换机获取这些需要的监控项,就需要借助 Zabbix监控项中的 可计算项 来实现我们的需求。

可计算监控项是创建虚拟数据源的一种方式,这些值将根据算术表达式定期计算。所有计算都由Zabbix服务器完成,与Zabbix agent或proxy执行的计算无关。生成的数据将存储在Zabbix数据库中,与其他监控项一样 -这就意味着要存储历史和趋势值,以便快速生成图表。可计算监控项可用于触发器表达式中,由宏或其它实体引用,与任何其它监控项类型相同。要使用可计算监控项,请选择监控项类型为 Calculated

对于每一台主机,key 是唯一的监控项标识符。您可以使用支持的符号创建任何键名。计算定义应在 公式 字段中输入。公式和键值之间实际上没有联系,键值参数在公式中不会以任何方式使用 。

一个简单公式的正确语法是:

1func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
参数 定义
func 触发器表达式支持的函数: last, min, max, avg, count等
key 另一监控项的键值,该键值的数据是你想要使用的。 它可以被定义为 key 或者 hostname:key注意: 强烈建议将整个键放在双引号(“…”)中,以避免由于键内的空格或逗号而导致错误的解析。\如果键中也有引用的参数,那么必须使用反斜杠()来转义这些双引号。 请参考下文的 示例 5
parameter(s) 功能参数(如果需要)

监控项配置

查找键值KEY

查询eth0、eth1端口输入、输出速率监控项的对应的键值 key,并记录。

名称 键值
eth0输入流量键值 net.if.in[ifHCInOctets.4]
eth0输出流量键值 net.if.out[ifHCOutOctets.4]
eth1输入流量键值 net.if.in[ifHCInOctets.5]
eth1输出流量键值 net.if.out[ifHCOutOctets.5]

图-2

创建监控项

监控项类型选择可计算的

图-3

添加汇总输入监控项

键值处填写不与其他兼职冲突的即可例如:

1net.all.in[AllIn.1]

公式处填写将所有接口输入速率的键值填入使用函数 last(),并使用‘+’符号相连 例如:

1last(net.if.in[ifHCOutOctets.4])+last(net.if.in[ifHCInOctets.5])

图-4

添加汇总输出监控项

键值处填写不与其他兼职冲突的即可例如:

1net.all.out[AllOut.1]

公式处填写将所有接口输出速率的键值填入使用函数 last(),并使用‘+’符号相连 例如:

1last(net.if.out[ifHCOutOctets.4])+last( net.if.out[ifHCOutOctets.5])

图-5

创建图形

依次顺序点击: 配置—>主机—>图形 查看如下图页面:

图-6

点击 “创建图形”

自定义 图形名称,并添加 之前所创建的监控项

点击添加并完成图形创建

图-7

查看图形

依次顺序点击: 监测—>图形—>选择上一步创建的图形名称 查看如下图页面:

图-8

至此监控交换机汇总流量图形创建成功。