zabbix自定义模板:交换机端口安全监控

Posted 运维随记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix自定义模板:交换机端口安全监控相关的知识,希望对你有一定的参考价值。

当有大量同类型的监控设备时,就该用到模板用于批量管理。今天分享zabbix如何制作监控模板进行监控。

监控需求背景

监控实现方式

可以通过三种实现监控:

  1. 通过logstash处理交换机的日志,当匹配到关键字段时,将关键信息推送给zabbix;

  2. 交换机配置snmp trap,当匹配到关键字段时,产生告警(详细做法之前做过分享);

  3. 交换机配置snmp,通过指定的OID去匹配处于error disable的接口,如有匹配产生告警。

第一种方法存在的问题:

在logstash有zabbix的接口,可以直接使用,代码如下

filter {
   …………………………………………………………………………………………
#接口err-disable提取
   if [error_reason] == "ERR_DISABLE" {
     grok {
       patterns_dir => [ "/etc/logstash/conf.d/cisco-patterns" ]
       match => [
         "host_message" , "%{ERRORDISABLE}" ,
         "host_message" , "%{LINKFLAP}" ,
         "host_message" , "%{ARPINSPECTION}" ]
       remove_field => [ "errdisable_interface1" ]
     }
   …………………………………………………………………………………………  
}
output {
 #向zabbix发送err-disable告警
 if [error_reason] == "ERR_DISABLE" {
   zabbix {
     zabbix_host => "[host]"
     zabbix_key => "[error_reason]"
     zabbix_server_host => "xx.xx.xx.xx"
     zabbix_server_port => "10051"
     zabbix_value => "[errdisable_interface]"
   }
 }
}

但是这种方式有个问题,交换机只会在接口error disable时产生日志,恢复的时候只有接口UP的日志,需要根据故障日志提取接口名称,然后再去匹配恢复日志。在logstash里实现比较困难,所以不推荐使用这种方法。

第二种方法也存在的问题:

在交换机端口安全配置为默认配置时,即switchport port-security  violation shutdown,交换机则产生error disable类的snmp  trap信息,如下:

  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (2540587143) 294 days, 1:11:11.43
 SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: SNMPv2-SMI::enterprises.9.9.548.0.1.0.1
 SNMPv2-SMI::enterprises.9.9.548.1.3.1.1.2.10005.0 type=2  value=INTEGER: 16
 SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: xx.xx.xx.xx
 SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "test"
 SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: SNMPv2-SMI::enterprises.9.9.548.0.1

可以看到,没有足够的信息可以判断是哪个接口故障。

而当交换机接口配置为switchport port-security  violation restrict时,交换机则会产生port security类的snmp trap信息,如下:

  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (934130697) 108 days, 2:48:26.97
 SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: SNMPv2-SMI::enterprises.9.9.315.0.0.1
 IF-MIB::ifIndex.55             type=66 value=Gauge32: 55
 IF-MIB::ifName.55              type=4  value=STRING: "GigabitEthernet1/0/48"
 SNMPv2-SMI::enterprises.9.9.315.1.2.1.1.10.55 type=4  value=Hex-STRING: C4 09 38 F0 D2 BE
 SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: xx.xxx.xxx.xxx
 SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "test"
 SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: SNMPv2-SMI::enterprises.9.9.315.0

可以看到,snmp trap有接口信息、主机信息,根据之前分享的zabbix snmp trap配置,可以实现监控。但是处于安全,我们不想修改接口的安全配置。

最终找到了第三种方法:制作监控模板,通过snmp监控交换机端口安全。

实现方法

确定SNMP OID

为实现监控效果,我们需要获取到三类信息:哪台交换机、哪个 端口、什么状态,所以首先需要查出设备的OID。

port security状态属于私有OID,在官网上查询到的结果如下:

可以看到当出现值为3时,即是我们要的监控对像。

端口名称属于标准OID,可以直接使用。OID为1.3.6.1.2.1.2.2.1.2.

创建模板

增加模板

zabbix自定义模板:交换机端口安全监控

增加自动发现规则

zabbix自定义模板:交换机端口安全监控

这里的SNMP OID为,设置模板变量名{#SECURITY_STATUS}用于过滤。因为这里我们需要状态为3的端口。

设置过滤条件

zabbix自定义模板:交换机端口安全监控

创建需要的ITEM

zabbix自定义模板:交换机端口安全监控

配置触发器

zabbix自定义模板:交换机端口安全监控

应用模板

在Host时过滤需要监控的设备,点击Mass update,在Template里选择新建的模板

zabbix自定义模板:交换机端口安全监控

监控效果

当设备触发端口安全时,zabbix将会生成对应的监控项,如下:

产生的监控告警如下:





以上是关于zabbix自定义模板:交换机端口安全监控的主要内容,如果未能解决你的问题,请参考以下文章

zabbix 2.4自定义模板添加华为交换机监控

zabbix怎样创建只监控某个端口状态的模板

zabbix怎样创建只监控某个端口状态的模板

zabbix监控服务

zabbix监控指定端口

Zabbix监控httpd服务