我可以在munin.conf设置警告/临界阈值(对于我写的插件),如下所示:
load_per_core.load_per_core.warning 0.2 # Low value to trigger warnings load_per_core.load_per_core.critical 1
这按预期工作,我看到电子邮件通知和图表上的正确的东西。
但是我想把这些configuration项移动到一个单独的文件中,这样我就可以更轻松地在使用Puppet的服务器上pipe理它们。 但是,当我将这两行移动到一个新的文件plugin-conf.d/zz-load_per_core是这样的:
[load_per_core] env.load_per_core.warning 0.3 # Low value to trigger warnings env.load_per_core.critical 1
…它不工作。 没有电子邮件,没有在图表上。
我已经猜到了从env.load_per_core开始的行的格式,所以也许这是错的?
tldr; Muninconfiguration键/值对是在运行时注入特定插件的执行环境的环境variables。 像任何其他系统环境variables一样,必须从插件的代码中访问它们。
每个munin插件是一个独立的可执行文件。 在运行时,Munin为每个插件创build一个单独的环境,插入其中插入插件可以引用的variables。 有两组环境variables: munin核心和特定的插件 。
提示:使用munin-run -d load_per_core来查看哪些环境variables被注入到您的插件的环境中。
使用以下语法为每个插件声明特定于插件的环境variables:
#/etc/munin/plugin-conf.d/zz-name_of_your_plugin [name_of_your_plugin] env.identifier value
你的情况是:
#/etc/munin/plugin-conf.d/zz-load_per_core [load_per_core] env.load_per_core.warning 0.2
这将创build一个标识为load_per_core.warning的值为0.2的环境variables, load_per_core.warning其注入到名为load_per_core的插件的执行环境中。
重要提示:重新启动munin-node以使更改生效:
sudo service munin-node restart
插件variables在目录/etc/munin/plagin-conf.d中定义。
Munin在这个位置创build一个默认configuration文件,称为munin-node 不build议编辑这个文件,因为munin可以覆盖它。
相反,为每个插件创build一个新的文件。 你的情况可能是/etc/munin/plugin-conf.d/zz-load_per_core 。 命名插件configuration文件时有两件事要考虑:
munin-node 之后进行评估。 像其他任何环境variables一样,configuration环境variables可以通过插件的代码来访问。 这个语法取决于你的插件使用的语言。 例如,如果你的插件是用bash写的,你可以写:
#!/usr/bin/bash #this would access and print the load_per_core.warning environment var #ie 0.2 echo $load_per_core.warning
或在Python中 :
#!/usr/bin/env python import os print os.environ.get('load_per_core.warning')
或者在Perl中使用标准的Munin库:
#!/usr/bin/perl use Munin::Plugin; print_thresholds('load_per_core');