nagios集成snmptt监控网络设备.docx
- 文档编号:3774492
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:122.96KB
nagios集成snmptt监控网络设备.docx
《nagios集成snmptt监控网络设备.docx》由会员分享,可在线阅读,更多相关《nagios集成snmptt监控网络设备.docx(11页珍藏版)》请在冰豆网上搜索。
nagios集成snmptt监控网络设备
Snmptt与nagios的集成
目录
Snmptt与nagios的集成1
1.工作原理2
2.Snmptt的安装配置2
2.1安装snmptt2
2.2Snmptt配置3
3.snmptrapd的配置9
4.nagios监控系统的配置9
4.1NagiosPassiveServieChecks9
4.2NagiosVolatileServices9
4.3创建Nagios服务条目9
4.4CreatingtheSNMPTTEXECstatement10
参考资料10
1.工作原理
ØSnmptrapd守护进程接收到网络设备发送的trap包后,将信息转交snmptt服务处理
ØSnmptt将过滤trap包中的oid信息,根据配置的设定将需要告警信息传送给nagios
ØNagios将受到的信息做告警处理。
2.Snmptt的安装配置
2.1安装snmptt
下载snmptt.tgz包解压
拷贝snmptt到/usr/sbin,加可执行权限(chmod+xsnmptt)
拷贝snmptthandler到/usr/sbin,加可执行权限(chmod+xsnmptthandler)
拷贝snmptt.ini到/etc/snmp或者/etc。
更改文件中的选项。
创建日志文件夹/var/log/snmptt
创建spool文件夹
mkdir/var/spool/snmptt/
拷贝启动脚本到init.d目录
cpsnmptt.init.d/etc/rc.d/init.d/snmptt
增加启动项
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
Logging Unknowntraps
记录未知的traps,主要目的是为了调试。
需要更改snmptt.ini文件中的如下变量:
enable_unknown_trap_log
unknown_trap_log_file
Logging 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]:
Logging Eventlog
被转换后的traps可以被发送到NTEventLog中。
所有的traps都被记录在SNMPTT下的E
vented2。
日志格式同上面相同,只是没有日期:
trap-oidseveritycategoryhostnametranslated-trap
为了配置eventlog支持,更改snmptt.ini文件中的如下选项:
eventlog_enable
eventlog_type
SNMPTT系统错误可以被发送到EventLog,通过更改snmptt.ini文件中如下选项:
eventlog_system_enable
Logging Database
处理过和未知的traps可以被发送到一个数据库。
MySQL、PostgreSQL、ODBC。
为了配置未知trap日志记录,编辑snmptt.ini文件中的如下变量:
enable_unknown_trap_log
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表:
USEsnmptt;
DROPTABLEsnmptt_unknown;
CREATETABLEsnmptt_unknown(
trapoidVARCHAR(100),
enterpriseVARCHAR(100),
communityVARCHAR(20),
hostnameVARCHAR(100),
agentip VARCHAR(16),
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.
如果记录统计信息到数据库,则需要创建snmptt_statistics表:
USEsnmptt;
DROPTABLEsnmptt_statistics;
CREATETABLEsnmptt_statistics(
stat_timeVARCHAR(30),
total_receivedBIGINT,
total_translatedBIGINT,
total_ignoredBIGINT,
total_unknownBIGINT);
注:
为了存储traptime为真实的date/time,改变’traptimeVARCHAR(30)’为‘traptimeDATETIME‘,设置snmptt.ini文件中的date_time_format_sql选项值为%Y-%m-%d%H:
%M:
%S.
增加一个用户’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=< /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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nagios 集成 snmptt 监控 网络设备
![提示](https://static.bdocx.com/images/bang_tan.gif)