我有一台运行 Postgresql 9.1 复制的服务器。我编写了一个脚本,打印出当前的复制滞后(主服务器每 60 秒插入一个 unix 时间戳,从服务器将其与当前时间戳进行比较)。
我已经添加
extend replag /usr/local/bin/check_lag_quietly.sh
,snmpd.conf
并重新启动snmpd
服务,但当我从本地主机或网络上的另一台计算机对主机进行 snmpwalk 时,我可以看到所有其他 OID,但看不到这个。
如果我执行 SNMP-Get as
tom.oconnor@charcoal-black:~$ snmpget -v2c -cpublic dns-2 UCD-SNMP-MIB::extTable
UCD-SNMP-MIB::extTable = No Such Object available on this agent at this OID
那么它也找不到那里的 OID。
Net-SNMP 版本 5.4.2.1,Ubuntu 10.04。
答案1
在 Debian 5.4.3 中,snmpd 似乎不会默认加载所有模块,通过添加:
-I interface,ifTable,ifXTable,cpu,cpu_linux,hw_mem,extend,versioninfo,snmp_mib,ip,at,system_mib
到 snmpd 的命令行(注意其中的“extend”),我可以:
snmpwalk -Ou -v 1 -c public localhost nsExtendOutput2Table
返回默认的“扩展”示例:
enterprises.netSnmp.netSnmpObjects.nsExtensions.nsExtendObjects.nsExtendOutput2Table.nsExtendOutput2Entry.nsExtendOutLine."test1".1 = STRING: Hello, world!
enterprises.netSnmp.netSnmpObjects.nsExtensions.nsExtendObjects.nsExtendOutput2Table.nsExtendOutput2Entry.nsExtendOutLine."test2".1 = STRING: Hello, world!
enterprises.netSnmp.netSnmpObjects.nsExtensions.nsExtendObjects.nsExtendOutput2Table.nsExtendOutput2Entry.nsExtendOutLine."test2".2 = STRING: Hi there
这与您想要的很接近。
您可以使用以下命令获取所有 snmpd 模块的列表:
snmpd -Dmib_init -H
我想这里真正的问题是“如何让 snmpd 默认加载其所有模块”
答案2
我们需要在配置pkg时启用agent/extend模块。
./configure --with-default-snmp-version=2 --with-logfile=/var/log/snmpd.log --with-sys-location= --with-sys-contact= --with-persistent-directory=/home/swuser/snmp --with-mibs=RFC1213-MIB --with-mibdirs= --disable-scripts --with-out-mib-modules=examples/ucdDemoPublic,mibII/system_mib --without-kmem-usage --disable-mibs --disable-mib-loading --disable-manuals --without-perl-modules --enable-shared --host=arm-none-linux-gnueabi --with-cc=arm-none-linux-gnueabi-gcc --target=arm-none-linux-gnueabi --disable-embedded-perl --with-ar=arm-none-linux-gnueabi-ar --with-mib-modules="ucd-snmp/dlmod"
在这里,您可以通过以下方式禁用代理/扩展模块,--with-out-mib-modules=agent/extend
否则默认情况下它在 net-snmp-5.7 中启用