nagios集成snmptt监控网络设备.docx

上传人:b****4 文档编号:3774492 上传时间:2022-11-25 格式:DOCX 页数:11 大小:122.96KB
下载 相关 举报
nagios集成snmptt监控网络设备.docx_第1页
第1页 / 共11页
nagios集成snmptt监控网络设备.docx_第2页
第2页 / 共11页
nagios集成snmptt监控网络设备.docx_第3页
第3页 / 共11页
nagios集成snmptt监控网络设备.docx_第4页
第4页 / 共11页
nagios集成snmptt监控网络设备.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

nagios集成snmptt监控网络设备.docx

《nagios集成snmptt监控网络设备.docx》由会员分享,可在线阅读,更多相关《nagios集成snmptt监控网络设备.docx(11页珍藏版)》请在冰豆网上搜索。

nagios集成snmptt监控网络设备.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1