如何防止 snmpd 缓存扩展脚本的结果

如何防止 snmpd 缓存扩展脚本的结果

在我的 freebsd 盒子上,我有来自 net-snmp-5.5_4 数据包的 snmpd 守护进程。

在 snmpd.conf 文件中我有:

extend .1.3.6.1.4.1.2021.2 inpt /usr/bin/perl /usr/local/etc/snmp/mpdinput.pl

其中 mpdinput.pl 是我的脚本,它从某些 mpd5-ng 网络接口返回输入八位字节。

Cacti 读取该值并绘制这样的图表: 图形

我在图表中添加了红线。

snmpd 在标记的位置缓存结果并返回先前的值,这就是 rrdtool 绘制零活动的原因。这对我来说是个问题。

如何防止 snmpd 中的缓存结果?

答案1

根据 snmp 文档;

`extend [MIBOID] NAME PROG ARGS 的工作方式与 exec 指令类似,但有许多改进。MIB 表(nsExtendConfigTable 等)由 NAME 标记索引,因此不受从配置文件中读取条目的顺序的影响。有两个结果表 - 一个(nsExtendOutput1Table)包含每个扩展条目的退出状态、第一行和完整输出(作为单个字符串),另一个(nsExtendOutput2Table)包含完整输出作为一系列单独的行。如果指定了 MIBOID,则配置和结果表将以此点为根在 OID 树中,但其他结构完全相同。这意味着几个单独的扩展指令可以指定相同的 MIBOID 根,而不会发生冲突。

每个条目的退出状态和输出都是单独缓存的,并且可以使用 nsCacheTable 清除(以及配置缓存行为)。`

答案2

如果您可以将 perl 脚本用作 snmpd 中的扩展,那么您也应该能够将其用作 Cacti 中的直接数据源,从而完全跳过 snmpd。

相关内容