zabbix自定义模板:交换机端口安全监控
Posted 运维随记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix自定义模板:交换机端口安全监控相关的知识,希望对你有一定的参考价值。
当有大量同类型的监控设备时,就该用到模板用于批量管理。今天分享zabbix如何制作监控模板进行监控。
监控需求背景
监控实现方式
可以通过三种实现监控:
通过logstash处理交换机的日志,当匹配到关键字段时,将关键信息推送给zabbix;
交换机配置snmp trap,当匹配到关键字段时,产生告警(详细做法之前做过分享);
交换机配置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.
创建模板
增加模板
增加自动发现规则
这里的SNMP OID为,设置模板变量名{#SECURITY_STATUS}用于过滤。因为这里我们需要状态为3的端口。
设置过滤条件
创建需要的ITEM
配置触发器
应用模板
在Host时过滤需要监控的设备,点击Mass update,在Template里选择新建的模板
监控效果
当设备触发端口安全时,zabbix将会生成对应的监控项,如下:
产生的监控告警如下:
以上是关于zabbix自定义模板:交换机端口安全监控的主要内容,如果未能解决你的问题,请参考以下文章