![[[ 解决方案 ]]](https://linux22.com/image/595097/%5B%5B%20%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%20%5D%5D.png)
snmptt
我在配置以正确翻译 snmp traps 时遇到了一些麻烦。
以下是一个问题:
/etc/snmp/snmptt.conf反映:
EVENT fgFmTrapIfChange .1.3.6.1.4.1.12356.101.6.0.1004 "Status Events" Critical
FORMAT $*
EXEC /usr/local/nagios/libexec/eventhandlers/submit_check_result $r "snmp_traps" 2 "$O: $+*" "$*"
SDESC
Trap is sent to the managing FortiManager if an interface IP is changed
Variables:
1: fnSysSerial
2: ifName
3: fgManIfIp
4: fgManIfMask
EDESC
当收到陷阱时,/var/log/messages 会反映:
Sep 6 12:07:32 SNMPMANAGERHOST snmptrapd[15385]:
2012-09-06 12:07:32 <UNKNOWN>
[UDP:
[192.168.100.2]:162->[192.168.100.31]]:
#012.1.3.6.1.2.1.1.3.0 = Timeticks: (707253943) 81 days, 20:35:39.43
#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.12356.101.6.0.1004
#011.1.3.6.1.4.1.12356.100.1.1.1.0 = STRING: FGTNNNNNNNNN
#011.1.3.6.1.2.1.31.1.1.1.1.10 = STRING: internal4
#011.1.3.6.1.4.1.12356.101.6.2.1.0 = IpAddress: 192.168.65.100
#011.1.3.6.1.4.1.12356.101.6.2.2.0 = IpAddress: 255.255.255.0
Sep 6 12:07:37 SNMPMANAGERHOST icinga:
EXTERNAL COMMAND:
PROCESS_SERVICE_CHECK_RESULT;
192.168.100.2;
snmp_traps;
2;
enterprises.12356.101.6.0.1004: enterprises.12356.100.1.1.1.0:FGTNNNNNNNNN ifName.10:internal4 enterprises.12356.101.6.2.1.0:192.168.65.100 enterprises.12356.101.6.2.2.0:255.255.255.0
由于该icinga
条目反映了EXEC
,显然没有出现 的翻译snmptt
。
我已经验证translate_log_trap_oid
并net_snmp_perl_enable
启用了snmptt.ini
当使用--debug=1
启动时snmptt
,我看到 中的以下内容--debugfile
:
********** Net-SNMP version 5.05 Perl module enabled **********
据报告,NET-SNMP 的主要版本为NET-SNMP version: 5.5
。
还可以做什么来验证是否snmptt
正确配置了转换陷阱?
我已经运行snmptt-net-snmp-test
以验证我安装的任何 net-snmp-perl 版本是否正确支持翻译。输出表明它确实支持。
/root/snmptt_1.3/snmptt-net-snmp-test --best_guess=2
SNMPTT Net-SNMP Test v1.0
(c) 2003 Alex Burger
http://snmptt.sourceforge.net
MIBS:RFC1213-MIB
best_guess: 2
Testing translateObj
********************
Testing: .1.3.6.1.2.1.1.1, long_names=disabled, include_module=disabled
Test passed. Result: sysDescr
Testing: .1.3.6.1.2.1.1.1, long_names=disabled, include_module=enabled
Test passed. Result: RFC1213-MIB::sysDescr
Testing: .1.3.6.1.2.1.1.1, long_names=enabled, include_module=disabled
Test passed. Result: .iso.org.dod.internet.mgmt.mib-2.system.sysDescr
Testing: .1.3.6.1.2.1.1.1, long_names=enabled, include_module=enabled
Test passed. Result: RFC1213-MIB::.iso.org.dod.internet.mgmt.mib-2.system.sysDescr
Testing: sysDescr, long_names=disabled, include_module=disabled
Test passed. Result: .1.3.6.1.2.1.1.1
Testing: RFC1213-MIB::sysDescr, long_names=disabled, include_module=disabled
Test passed. Result: .1.3.6.1.2.1.1.1
Testing: system.sysDescr, long_names=disabled, include_module=disabled
Test passed. Result: .1.3.6.1.2.1.1.1
Testing: RFC1213-MIB::system.sysDescr, long_names=disabled, include_module=disabled
Test passed. Result: .1.3.6.1.2.1.1.1
Testing: .iso.org.dod.internet.mgmt.mib-2.system.sysDescr, long_names=disabled, include_module=disabled
Test passed. Result: .1.3.6.1.2.1.1.1
Testing getType
***************
Testing: .1.3.6.1.2.1.4.1
Test passed. Result: INTEGER
Testing: ipForwarding
Test passed. Result: INTEGER
Testing Description
*******************
Test passed. Result:
-------------------------------------------------
The indication of whether this entity is acting
as an IP gateway in respect to the forwarding of
datagrams received by, but not addressed to, this
entity. IP gateways forward datagrams. IP hosts
do not (except those source-routed via the host).
Note that for some managed nodes, this object may
take on only a subset of the values possible.
Accordingly, it is appropriate for an agent to
return a `badValue' response if a management
station attempts to change this object to an
inappropriate value.
-------------------------------------------------
我手动检查了未解析的 MIB 定义,并验证了它是否正确链接回正确的解析定义。它是:
FORTINET-FORTIGATE-MIB.txt contains:
fgFmTrapIfChange NOTIFICATION-TYPE
OBJECTS { fnSysSerial, ifName, fgManIfIp, fgManIfMask }
STATUS current
DESCRIPTION
"Trap is sent to the managing FortiManager if an interface IP is changed"
::= { fgFmTrapPrefix 1004 }
fgFmTrapPrefix OBJECT IDENTIFIER
::= { fgMgmt 0 }
fgMgmt OBJECT IDENTIFIER
::= { fnFortiGateMib 6 }
fnFortiGateMib
::= { fortinet 101 }
IMPORTS
FnBoolState, FnIndex, fnAdminEntry, fnSysSerial, fortinet
FROM FORTINET-CORE-MIB
fortinet MODULE-IDENTITY
::= { enterprises 12356 }
LOOKS GOOD!!!!!
1.3.6.1.4.1.12356.101.6.0.1004
我已经查阅了所有的文档,甚至在snmptt-用户邮件列表。
我无法证明它是 MIB。
为何snmptt
翻译陷阱会失败?
简单地:
- $O = 企业.12356.101.6.0.1004
- 当 $O 应该 = fgFmTrapIfChange 时
谢谢,
马特
[更新]
snmptrapd.conf:
authCommunity log,execute,net communitystr
traphandle default /usr/bin/snmptthandler
未翻译陷阱所在的 MIB(而且引用的 MIB)。
请注意,linkUp 和 linkDown 正在正确转换。
[更新 2]
我还测试了 net-snmp 包中包含的另一个非默认 MIB MIB,该 MIB 也无法解析。
[更新 3]
如果我在 snmptt.ini 中设置以下内容:
mode = standalone
我在 snmptrapd.conf 中设置了以下内容:
traphandle default /usr/sbin/snmptt --ini=/etc/snmp/snmptt.ini
我能够按预期翻译陷阱。
这意味着无论/usr/sbin/snmptt
使用哪种方法进行守护进程,都可能无法访问 MIB,或者可能正在执行除所述之外的操作。其中包含的文档snmptt.ini
可能包含我寻求的答案。
[[ 解决方案 ]]
设置mibs_environment = ALL
snmptt.ini
描述:
# Allows you to set the MIBS environment variable used by SNMPTT
# Leave blank or comment out to have the systems enviroment settings used
# To have all MIBS processed, set to ALL
# See the snmp.conf manual page for more info.
mibs_environment = ALL
snmptt.ini
即使 snmptrapd 以 开头,也必须进行设置-m ALL
(其中ALL
是包含所有 MIB [在文件中定义] 的通配符语句)。
\哦。
答案1
我之前在聊天窗口中发布了此消息,但看起来您可能已经忘记了。您的 snmptt.ini 文件设置了以下翻译选项:
translate_log_trap_oid = 1
translate_value_oids = 1
translate_enterprise_oid_format = 1
translate_trap_oid_format = 0
translate_varname_oid_format = 0
translate_integers = 1
有趣的是“translate_trap_oid_format”,它会影响 $O 的值。有效值为 0 - 4,其中 0 表示关闭翻译,其余值列在 snmptt.ini 中 --
Set to 0 to disable translating OID values to text (symbolic form)
Set to 1 to translate OID values to short text (symbolic form) (eg: BuildingAlarm)
Set to 2 to translate OID values to short text with module name (eg: UPS-MIB::BuildingAlarm)
Set to 3 to translate OID values to long text (eg: iso...upsAlarm.BuildingAlarm)
Set to 4 to translate OID values to long text with module name (eg:UPS-MIB::iso...upsAlarm.BuildingAlarm)