在Zabbix Web界面的“配置”选项下,我们可以看到许多官方自带的模板(用于监控数通设备),如图:
除去红框部分Cisco Catalyst交换机模板外、官方模板(用于监控数通设备)还有Template Net Cisco IOS prior to 12.0_3_T SNMP、Template Net D-Link DES 7200 SNMP、Template Net HP Comware HH3C SNMP、Template Net Huawei VRP SNMP、Template Net Juniper SNMP等等。
Template Net Huawei VRP SNMP注:VRP(Versatile Routing Platform)为华为通用路由平台,可以认为是华为系数通设备的操作系统。
因为笔者的实验环境搭建在Huawei eNSP上,所以此处选择Template Net Huawei VRP SNMP,其模板描述如下:
Template Net Huawei VRP MIBs used: HUAWEI-ENTITY-EXTENT-MIB ENTITY-MIB Template tooling version used: 0.39
应用集共8个:
CPU、Fans、General(有6个监控项)、Inventory(有3个监控项)、Memory、Network intrefaces、Status(有5个监控项)、Temperature。
注:相比与模板Cisco Catalyst 3750V2-24PS SNMP外,该模板少一个“Power supply”应用集。
监控项共11个:
General:
- SNMP traps(fallback),键值为snmptrap.fallback
- System contact details,键值为system.contact
- System descrption,键值为system.descr
- System location,键值为system.location
- System name,键值为system.name,有触发器
- System object ID,键值为system.objectid
Status:
- ICMP loss,键值为icmppingloss,有触发器
- ICMP ping,键值为icmping,有触发器
- ICMP response time,键值为icmppingsec,有触发器
- SNMP agent availability,键值为zabbix[host,snmp,available],有触发器
- Uptime,触发器为system.uptime,有触发器
在讲触发器之前,先了解触发器的各种函数:
- abschange()-后一个值与前一个值变动的绝对值
- avg()-周期T内的平均值
- band()-将最近的T值和掩码进行按位与运算
- change()-最新值和前一个值的差异
- count()-对于周期T,成功检索的值V(其满足运算符O)的数量
- date()-当前日期
- dayofmonth()-当前是本月的第几天
- dayofweek()-当前是本周的第几天
- delta()-周期T内的MAX和MIN值之间的差异
- diff()-最后一个值和前一个值之间的差异(1-true,0-false)
- forecast()-基于周期T预测下一个t秒
- fuzzytime()-监控项值的时间戳和Zabbix服务器时间戳之间的差异小于或等于T秒(1-true,0-false)
- iregexp()-周期T内,最后的值与正则表达式V匹配(不区分大小写;1-匹配,0-不匹配)
- last()-最后(最近)的T值
- logeventid()-与正则表达式T匹配的最后一个日志条目的事件ID(1-匹配,0-不匹配)
- logseverity()-最后一个日志条目的日志严重性
- logsource()-最后一个日志条目匹配参数T的日志源(1-匹配,0-不匹配)
- max()-周期T内的最大值
- min()-周期T内的最小值
- nodata()-No data received during period of time T(1-true,0-false),Mode(strict-ignore proxy time delay in sending data)
- now()-UNIX时间
- percentile()-周期T内的百分位数P
- prev()-前一个值
- regexp()-在周期T内,将最后的值与正则表达式V匹配(1-匹配,0-不匹配)
- str()-在最后(最近)值中找到字符串V(1-找到,0-未找到)
- strlen()-最后一个(最近的)T值的长度(以字符为单位)
- sum()-周期T内的值之和
- time()-当前时间
- timeleft()-基于周期T内达到阈值的时间估计
触发器共6个:
High ICMP loss,High ICMP ping response time,No SNMP data collection,System name has been changed(new name:{ITEM.VALUE}),Unavailable by ICMP ping,{HOST.NAME}has been restarted(uptime<10m)
以下详细讲解:
①:Template Moudle ICMP PIng:High ICMP ping loss
该触发器依赖于Template Net Huawei VRP SNMP:Unavailable by ICMP ping
表达式为:
{Template Net Huawei VRP SNMP:icmppingloss.min(5m)}>{$ICMP_LOSS_WARN} and {Template Net Huawei VRP SNMP:icmppingloss.min(5m)}<100
即:
五分钟内ping包的丢包数最小值在{$ICMP_LOSS_WARN} 与100之间时则该触发器被触发。
至于{$ICMP_LOSS_WARN} 的值是哪里来的呢?且看:
在触发器一项中,我们可以发现Template Module ICMP Ping:High ICMP ping loss依赖于Template Net Huawei VRP SNMP:Unavailable by ICMP ping
且在该触发器的详情中,我们可以看到
上层触发器 Template Module ICMP ping →Template Module Generic SNMP,点击Template Module ICMP ping进入该模板后,可以看到“模板 宏”处的值,如图:
{$ICMP_LOSS_WARN}的值为20。
这一项在Template Net Huawei VRP SNMP模板中可以在“宏”——“继承模板的宏”中找到。
②:Template Moudle ICMP PIng:High ICMP response time
表达式为:
{Template Net Huawei VRP SNMP:icmppingsec.avg(5m)}>{$ICMP_RESPONSE_TIME_WARN}
即:
五分钟内ping包的时间平均值大于{$ICMP_RESPONSE_TIME_WARN}时该触发器被触发。
{$ICMP_RESPONSE_TIME_WARN}为0.15,单位为s,即150ms。
③:No SNMP data collection
表达式为:
{Template Net Huawei VRP SNMP:zabbix[host,snmp,available].max({$SNMP.TIMEOUT})}=0
其中{$SNMP.TIMEOUT}为5min。
描述为:
SNMP is not available for polling. Please check device connectivity and SNMP settings.
即:
当5分钟内获取不到SNMP值时,该触发器被触发。
④:System name has changed (new name: {ITEM.VALUE})
表达式为:
{Template Net Huawei VRP SNMP:system.name.diff()}=1 and {Template Net Huawei VRP SNMP:system.name.strlen()}>0
描述为:
System name has changed. Ack to close.
即:
最后一个值和前一个值之间存在差异且不为空,即系统名被更替时该触发器被触发。
⑤:Unavailable by ICMP ping
表达式为:
{Template Net Huawei VRP SNMP:icmpping.max(#3)}=0
描述为:
Last three attempts returned timeout. Please check device connectivity.
即:
最后三次的ping超时,则该触发器被触发。
⑥:{HOST.NAME} has been restarted (uptime < 10m)
表达式为:
{Template Net Huawei VRP SNMP:system.uptime[sysUpTime.0].last()}<10m
描述为:
Uptime is less than 10 minutes
即:
设备运行时间少于10分钟时该触发器被触发。



