/etc/snmp/snmptt.conf.cisco
END
snmptt.conf文件的语法为:
EVENTevent_nameevent_OID"category"severity
FORMATformat_string
[EXECcommand_string]
具体信息参见snmptt官网
EVENT
EVENTevent_nameevent_OID"category"severity
event_name:
不能包含空格。
当使用snmpttconvertmib转换时,这个名字将与MIB文件中TRAP-TYPE或者NOTIFICATION-TYPE行的名字匹配
event_OID:
一般形式如:
.1.3.6.1.4.1.232.0.11001
如果Net-SNMPperl模块安装,并且在snmptt.ini文件中设置了net_snmp_perl_enable为开启,则可以使用符号名,如:
linkDown
IF-MIB:
:
linkDown
注:
当翻译OID时,Net-SNMP5.0.9和更早的版本不支持包含模块名字(如:
IF-MIB:
:
)。
SNMPV1traps的企业ID格式为(.1.3.6.1.4.1.232),后面跟上一个0,再跟上trap号(11001)。
这样可能导致在配置文件中相同的trapOID存在多条定义。
如果在snmptt.ini文件中允许了multiple_event,那么将处理所有匹配的traps。
如果multiple_event禁止,只有第一个匹配的条目被使用
OID中可以使用通配符,例如:
.1.3.6.1.4.1.232.1.2.*
category
特色字符串包含在双引号中。
如果为“IGNORE”,则snmptt.conf中包含的FORMAT和EXEC都忽略。
如果类型为“LOGONLY”,则trap信息被日志记录,EXEC声明被忽略。
注:
如果你打算使用Naigos等外部程序,则最好不要设置任何trap为LOGONLY,就好像不要使用EXEC来进行被动服务检查。
severity:
事件的级别,用于日志。
如:
Minor,Major,Normal,Critical,Warning。
FORMAT
FORMATformat_string
每个EVENT只能有一行FORMAT
使用如下的变量在字符串上进行变量替换:
$A-Trapagenthostname(seeNote1)
$aA-TrapagentIPaddress
$Be-securityEngineID(snmpEngineID)(seeNote7)
$Bu-securityName(snmpCommunitySecurityName)(seeNote7)
$BE-contextEngineID(snmpCommunityContextEngineID)(seeNote7)
$Bn-contextName(snmpCommunityContextName)(seeNote7)
$c-Category
$C-Trapcommunitystring
$D-DescriptiontextfromSNMPTT.CONForMIBfile(seeNote6)
$E-EnterprisetrapOIDinsymbolicformat
$e -EnterprisetrapOIDinnumberformat
$Fa -alarm(bell)(BEL)
$Ff -formfeed(FF)
$Fn -newline(LF,NL)
$Fr -return(CR)
$Ft -tab(HT,TAB)
$Fz -TranslatedFORMATline(EXEConly)
$G -Generictrapnumber(0ifenterprisetrap)
$H -HostnameofthesystemrunningSNMPTT
$S -Specifictrapnumber(0ifgenerictrap)
$N -Eventnamedefinedin.conffileofmatchedentry
$i -EventOIDdefinedin.conffileofmatchedentry(couldbeawildcardOID)
$O-TrapOIDinsymbolicformat(seeNote4)
$o-TrapOIDinnumericalformat(seeNote4)
$R,$r -Traphostname(seeNote1)
$aR,$ar-IPaddress
$s -Severity
$T -Uptime:
Timesincenetworkentitywasinitialized
$X -Timetrapwasspooled(daemonmode)orcurrenttime(standalonemode)
$x -Datetrapwasspooled(daemonmode)orcurrentdate(standalonemode)
$#-Numberof(howmany)variable-bindingsinthetrap
$$ -Printa$
$@-Numberofsecondssincetheepochofwhenthetrapwasspooled(daemonmode)orthecurrenttime(standalonemode)
$n -Expandvariable-bindingn(1-n)(seeNote2,5)
$+n -Expandvariable-bindingn(1-n)intheformatofvariablename:
value(seeNote2,3,5)
$-n -Expandvariable-bindingn(1-n)intheformatofvariablename(variabletype):
value(seeNote2,3,5)
$vn -Expandvariablenameofthevariable-bindingn(1-n)(seeNote3)
$* -Expandallvariable-bindings(seeNote5)
$+* -Expandallvariable-bindingsintheformatofvariablename:
value(seeNote2,3,5)
$-* -Expandallvariable-bindingsintheformatofvariablename(variabletype):
value(seeNote2,3,5)
注2:
如果snmptt.ini文件中的translate_integers被允许,SNMPTT将尝试查找MIB文件,将收到的trap中的数字转换为文本。
为了使这个功能可用还有如下条件需要满足:
必须安装了Net-SNMP/UCD-SNMP模块,并在snmptt.ini文件中开启了net_snmp_perl_enable选项。
另外,为了是该功能可用,需要确保Net-SNMP/UCD-SNMP配置正确。
如果选项开启,却没有将数字转换成文本,数字将会使用。
如果MIB文件存在,但是却没有转换,需要在snmp.conf文件中正确配置,来处理所有的mibs。
或者,你可以在snmptt.ini文件中设置mibs_enviroment变量为ALL
注3:
如果需要$vn,$+n,$-n变量名和类型转换为文本,则也需要在snmptt.ini文件中开启net_snmp_perl_enable选项。
这个其实和注2一样。
注4:
如果需要将数字的OID转换为文本,需要在snmptt.ini文件中,开启translate_trap_oid选项和net_snmp_perl_enable选项,并安装了Net-SNMP/UCD-SNMP模块。
注6:
snmptt.ini文件中必须设置description_mode值为1或者2。
如果设置为1,描述从SNMPTT.CONF文件中获取。
如果设置为2,描述从MIB文件中获取。
EXEC
[EXECcommand_string]
可以一个EVENT,多行EXEC。
当一个trap接收到后,则按照顺序执行命令。
EXEC使用的变量替换跟FORMAT行中的一样。
例如:
EXEC/usr/bin/qpage-fTRAPalex"$r:
$x$X-NICswitchovertoslot$3,port$4fromslot$5, port$6"
EXECc:
\snmp\pagernetops"$r:
$x$X-NICswitchovertoslot$3,port$4fromslot$5,port $6"
此次案例中snmptt.conf.cisco文件的内容为:
#端口开启操作定义
EVENTauthenticationFailure.1.3.6.1.6.3.1.1.5.4"StatusEvents"Normal
FORMATLinkUp
EXEC/apps/usr/nagios/libexec/eventhandlers/submit_check_result"$A""Snmp_Trap""2""$2$Fz"
#端口关闭操作定义
EVENTauthenticationFailure.1.3.6.1.6.3.1.1.5.3"StatusEvents"Normal
FORMATLinkDown
EXEC/apps/usr/nagios/libexec/eventhandlers/submit_check_result"$A""Snmp_Trap""2""$2$Fz"
3.snmptrapd的配置
使用如下命令启动snmptrapd,snmptrapd-On.
如果存在/etc/rc.d/init.d/snmptrapd文件,则也要更改添加上选项”-On”。
,snmptrapd.conf文件需要包含如下行:
traphandledefault/usr/sbin/snmptt
4.nagios监控系统的配置
4.1NagiosPassiveServieChecks
被动检查允许Nagios处理由外部程序提交的检查结果。
使用SNMPTT的EXEC声明,接收到的trap可以通过Nagios的submit_check_result脚本体给Nagios。
一旦Nagios收到将触发告警操作。
所有的主机使用一个SNMPTT服务定义,你在Nagiosconsole上只能看到收到的最后一个trap。
每一个trap都被记录日志,发邮件等,但是只能在console上看到最后一个trap的告警或critical状态。
4.2NagiosVolatileServices
收到SNMPTT转换的trap,当为这个定义了服务,服务必须定义为volatile。
当一个服务的状态从OK变为non-OK,则联系人被通知。
一般的,Nagios的一个服务,没有定义volatile,意味着,另一个服务检查被执行了,状态仍然为non-OK,那么联系人不会被通知。
因为这里为SNMPtraps只定义一个服务条目,我们需要确保每次收到trap,我们都被通知。
4.3创建Nagios服务条目
如下是一个Nagios服务条目
defineservice{
usegeneric-service
hostsCSK-I01-3560G-1-77.1,CSK-I01-3560G-2-77.2
service_descriptionSnmp_Trap
process_perf_data0
is_volatile1
active_checks_enabled0
passive_checks_enabled1
event_handler_e