启动我的 snmp 守护进程时,会抛出以下错误:
**snmpd -LOw -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f
/etc/snmp/snmpd.conf: line 10: Warning: Unknown token: monitor.
/etc/snmp/snmpd.conf: line 11: Warning: Unknown token: defaultMonitor.
/etc/snmp/snmpd.conf: line 12: Warning: Unknown token: linkUpDownNotifications.**
根据我的广泛研究,这显然是由于 SNMP 二进制文件中缺乏 DisMan Event 支持。然而,从 5.4 版本开始,支持实际上应该被重新编译为标准。这也可以使用命令“net-snmp-config --configure-options”轻松找到。附上该命令的输出。然而,只有下面一行实际上是重要的:
--with-mib-modules=smux ucd-snmp/dlmod mibII/mta_sendmail disman/event-mib ucd-snmp/diskio ucd-snmp/lmsensorsMib etherlike-mib/dot3StatsTable host
这一行实际上应该保证支持被编译进来。如果你对我的 snmpd.conf 感兴趣,它也附在后面。我很确定我使用的是正确的语法,因为它直接来自 snmpd 的手册页。
'--build=x86_64-linux-gnu' '--includedir=/usr/include' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=/usr/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--prefix=/usr' '--sysconfdir=/etc' '--mandir=/usr/share/man' '--with-persistent-directory=/var/lib/snmp' '--enable-ucd-snmp-compatibility' '--with-cflags=-g -O2 -ffile-prefix-map=/build/net-snmp-m72y6Y/net-snmp-5.9.1+dfsg=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -DNETSNMP_USE_INLINE' '--with-ldflags=-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now' '--with-perl-modules=INSTALLDIRS=vendor' '--enable-as-needed' '--with-logfile=none' '--without-rpm' '--with-libwrap' '--with-openssl' '--without-dmalloc' '--without-efence' '--without-rsaref' '--with-sys-contact=root' '--with-sys-location=Unknown' '--with-mib-modules=smux ucd-snmp/dlmod mibII/mta_sendmail disman/event-mib ucd-snmp/diskio ucd-snmp/lmsensorsMib etherlike-mib/dot3StatsTable host' '--with-out-mib-modules=' '--with-transports=TLSTCP DTLSUDP' '--with-security-modules=tsm' '--enable-mfd-rewrites' '--with-mnttab=/etc/mtab' '--with-mibdirs=/home/paul/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf' '--with-mysql' '--with-systemd' '--enable-blumenthal-aes' 'UNAMEPROG=/bin/uname' 'PSPROG=/bin/ps' '--with-defaults' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -ffile-prefix-map=/build/net-snmp-m72y6Y/net-snmp-5.9.1+dfsg=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security' 'LDFLAGS=-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
对于任何看到此内容并遇到此问题的人。解决方案是编辑守护进程的启动命令
sudo systemctl edit --full snmpd
并从启动命令中删除 mteTrigger,mteTriggerConf ,使其看起来像这样
ExecStart=/usr/sbin/snmpd -LOw -u Debian-snmp -g Debian-snmp -I -smux -f
您还需要像这样添加环境变量 MIBDIRS 和 MIBS
Environment="MIBSDIR=/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/u>
Environment="MIBS=UCD-SNMP-MIB:HOST-RESOURCES-MIB"
我不知道这是否应该是这样的,因为我从未见过有人从排除中删除 mteTrigger 和 mteTriggerConf,但这似乎有效。我现在可以监控我想要的 OID 和正在生成的陷阱。
对于想知道的人来说,-I 选项会排除以“-”开头的以下列表的加载。