Munin-每天进行插件查询(不是每 5 分钟一次)

Munin-每天进行插件查询(不是每 5 分钟一次)

我有一个仅需每天检查和记录的指标。

计算是 CPU 密集型的,并且每天查询多次都会返回相同的值(即它只是浪费 CPU 时间)。

是否可以制作一个每天只查询一次的插件?

我尝试在 munin-node 配置中为该插件指定“update_rate 360​​0”,但仍然每 5 分钟查询一次。图表也以 5 分钟的粒度显示。

当然,本地缓存是一种选择,但会使事情变得更加复杂。

答案1

虽然这不能完全回答你的问题,但这可能是一种解决方法。考虑以下 munin 插件:

$ cat /usr/share/munin/plugins/pool_
#!/bin/sh

pool_dir=/tmp/munin-pool
probe=`basename $0 | sed 's|^pool_||'`

test -d $pool_dir/$probe || exit 1
if test "$1" = autoconf; then
    test -s $pool_dir/$probe/autoconf || exit 0
    cat $pool_dir/$probe/autoconf
elif test "$1" = config; then
    test -s $pool_dir/$probe/config || exit 0
    cat $pool_dir/$probe/config
else
    test -s $pool_dir/$probe/value || exit 0
    cat $pool_dir/$probe/value
fi

exit 0

还有这个 crontab:

#!/bin/sh

pool_dir=/tmp/munin-pool
TMPFILE=/tmp/`basename $0`.$$

if test -s $pool_dir/lock; then
    pid=`cat $pool_dir/lock`
    if ps ax | grep "$pid[ ]" >/dev/null; then
    exit 0
    fi
fi
test -d $pool_dir || mkdir $pool_dir
echo $$ >$pool_dir/lock

test -d <%=@conf_dir%>/plugins-pool || exit 1
cd /etc/munin/plugins-pool

for probe in *
do
    test -d $pool_dir/$probe || mkdir -p $pool_dir/$probe
    if ! test -f $pool_dir/$probe/autoconf; then
        ./$probe autoconf >$TMPFILE
        test -s $TMPFILE && mv $TMPFILE $pool_dir/$probe/autoconf
    fi
    if ! test -f $pool_dir/$probe/config; then
        ./$probe config >$TMPFILE
        test -s $TMPFILE && mv $TMPFILE $pool_dir/$probe/config
    fi
    ./$probe >$TMPFILE
    test -s $TMPFILE && mv $TMPFILE $pool_dir/$probe/value
done 2>&1 | awk '{print strftime("[%Y/%m/%d - %H:%M:%S] "), $0}' ><munin-log-dir>/munin-pooler.log

rm -f $pool_dir/lock

exit 0

在中/etc/munin/plugin-pool,我将链接我想要在本地缓存其结果的探测器:

ln -sf /usr/share/munin/plugins/some_probe /etc/munin/plugin-pool/

crontab 将迭代这些,并跟踪结果/tmp/munin-pool/。而pool_探测器将查询该缓存:

ln -sf /usr/share/munin/plugins/pool_ /etc/munin/plugins/some_probe

因此,我无需每五分钟重新查询一次服务,而是可以根据需要从 crontab 收集指标。或者,在我的用例中,如果探测通常超过 munin 查询超时,则不会留下空白图表。

如果我们要在不同的间隔内抓取一些探测器,而没有这样的解决方法,那么生成的图表将只包含您收集的那些点,以及我们“错过”的大量空白。

答案2

你可以使用 cron 来在 中设置两个条目/etc/cron.d/munin。一个是常规条目,munin-cron每 5 分钟调用一次 ( */5),使用基本配置,其中删除了对日常运行插件的引用;另一个条目,仅调用更新 ( munin-update),例如每天 7:30 ( 30 7),使用额外的配置文件,你必须编写仅处理日常插件的配置文件。

*/5 * * * * munin-cron   --config /etc/munin/munin.conf
30 7 * * *  munin-update --config /etc/munin/munin_daily_plugin.conf

我没有 munin 可以玩和测试它,但是尽管如此,据我记得它是如何工作的,它应该可以帮助你解决你的问题。

相关内容