nagios集成snmptt监控网络设备文档格式.docx
- 文档编号:16680790
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:122.96KB
nagios集成snmptt监控网络设备文档格式.docx
《nagios集成snmptt监控网络设备文档格式.docx》由会员分享,可在线阅读,更多相关《nagios集成snmptt监控网络设备文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
chkconfig--addsnmptt
chkconfig--level2345snmptton
servicesnmpttstart
2.2Snmptt配置
2.2.1主配置文件的配置
文件位置/etc/snmp/snmptt.ini
日志
Logging
Standard
转换后的traps可以被发送到标准输出和一个日志文件。
输出格式为:
datetrap-oidseveritycategoryhostnametranslated-trap
更改snmptt.ini文件中的如下变量:
enable_stdout
enable_log
log_file
Unknowntraps
记录未知的traps,主要目的是为了调试。
需要更改snmptt.ini文件中的如下变量:
enable_unknown_trap_log
unknown_trap_log_file
Syslog
转换的traps可以被发送到syslog,格式同上面相同,只是没有日期:
trap-oidseveritycategoryhostnametranslated-trap
日志文件中的条目通常以如下格式开始:
datehostnamesnmptt[pid]:
为了实现syslog日志,更改snmptt.ini文件中的如下选项:
syslog_enable
syslog_facility
syslog_level
SNMPTT系统错误可以被发送到syslog,通过更改如下参数:
syslog_system_enable
syslog_system_facility
syslog_system_level
datehostnamesnmptt-sys[pid]:
Eventlog
被转换后的traps可以被发送到NTEventLog中。
所有的traps都被记录在SNMPTT下的E
vented2。
日志格式同上面相同,只是没有日期:
为了配置eventlog支持,更改snmptt.ini文件中的如下选项:
eventlog_enable
eventlog_type
SNMPTT系统错误可以被发送到EventLog,通过更改snmptt.ini文件中如下选项:
eventlog_system_enable
Database
处理过和未知的traps可以被发送到一个数据库。
MySQL、PostgreSQL、ODBC。
为了配置未知trap日志记录,编辑snmptt.ini文件中的如下变量:
db_unknown_trap_format
DBD:
:
MySQL
配置SNMPTT使用MySQL,更改snmptt.ini文件中的如下选项:
mysql_dbi_enable
mysql_dbi_host
mysql_dbi_port
mysql_dbi_database
mysql_dbi_table
mysql_dbi_table_unknown
mysql_dbi_username
mysql_dbi_password
如下的MySQL脚本可以创建数据库和表。
权限也被定义。
以root权限运行mysql,输入:
CREATEDATABASEsnmptt;
USEsnmptt;
DROPTABLEsnmptt;
CREATETABLEsnmptt(
idINTUNSIGNEDNOTNULLAUTO_INCREMENTPRIMARYKEY,
eventnameVARCHAR(50),
eventidVARCHAR(50),
trapoidVARCHAR(100),
enterpriseVARCHAR(100),
communityVARCHAR(20),
hostnameVARCHAR(100),
agentip
VARCHAR(16),
categoryVARCHAR(20),
severityVARCHAR(20),
uptime
VARCHAR(20),
traptimeVARCHAR(30),
formatlineVARCHAR(255));
注:
为了存储traptime为真实的date/time,改变’traptimeVARCHAR(30)’为‘traptimeDATETIME‘,设置snmptt.ini文件中的date_time_format_sql选项值为%Y-%m-%d%H:
%M:
%S.
如果记录未知trap日志到数据库,则需要创建snmptt_unknow表:
DROPTABLEsnmptt_unknown;
CREATETABLEsnmptt_unknown(
如果记录统计信息到数据库,则需要创建snmptt_statistics表:
DROPTABLEsnmptt_statistics;
CREATETABLEsnmptt_statistics(
stat_timeVARCHAR(30),
total_receivedBIGINT,
total_translatedBIGINT,
total_ignoredBIGINT,
total_unknownBIGINT);
增加一个用户’snmptt’,密码为’mytrap’,来供SNMPTT使用,使用如下的SQL语句:
GRANTALLPRIVILEGESON*.*TO'
snmptt'
@'
localhost'
IDENTIFIEDBY'
mytrap'
;
执行一个外部程序
当一个trap接收到时,一个外部程序被载入。
命令行被定义在配置文件中,如:
使用APAGE发送一页,如下的命令行被使用:
qpage-fTRAPnotifygroup1"
$r$x$XCompaqDriveArraySpareDriveoncontroller$4,bus$5,bay$6statusis$3."
$r替换为主机名,$x是当前日期,$X是当前时间,为了允许执行EXEC定义,在snmptt.ini文件中更改如下选项:
exec_enable
当接收到一个未知的trap时,也可以调用一个外部程序。
这个可以通过snmptt.ini文件中的选项来设置:
unknown_trap_exec。
传给命令行的都是标准的变量。
2.2.2OID定义配置文件的配置
文件位置/etc/snmp/snmptt.conf*
配置文件(通常/etc/snmp/snmptt.conf或者c:
\snmpsnmptt.conf)包含了一列已定义的traps。
如果你的snmptt.conf文件比较大,可以将其细分为多个文件,将这些配置文件包含在snmptt.ini文件中的snmptt_conf_files部分,如:
snmptt_conf_files=<
<
END
/etc/snmp/snmptt.conf.cisco
snmptt.conf文件的语法为:
EVENTevent_nameevent_OID"
category"
severity
FORMATformat_string
[EXECcommand_string]
具体信息参见snmptt官网
EVENT
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:
当翻译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
每个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):
$vn
-Expandvariablenameofthevariable-bindingn(1-n)(seeNote3)
$*
-Expandallvariable-bindings(seeNote5)
$+*
-Expandallvariable-bindingsintheformatofvariablename:
$-*
-Expandallvariable-bindingsintheformatofvariablename(variabletype):
注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
可以一个EVENT,多行EXEC。
当一个trap接收到后,则按照顺序执行命令。
EXEC使用的变量替换跟FORMAT行中的一样。
例如:
EXEC/usr/bin/qpage-fTRAPalex"
$r:
$x$X-NICswitchovertoslot$3,port$4fromslot$5,
port$6"
EXECc:
\snmp\pagernetops"
$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"
FORMATLinkDown
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nagios 集成 snmptt 监控 网络设备