munin.conf
我可以像这样(对于我编写的插件)设置警告/临界阈值:
load_per_core.load_per_core.warning 0.2 # Low value to trigger warnings
load_per_core.load_per_core.critical 1
这按预期工作,我在图表上看到了电子邮件通知和正确的内容。
但我想将这些配置项移到一个单独的文件中,以便我可以更轻松地使用 Puppet 跨服务器管理它们。但是当我将这两行移到一个新文件中时,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
所以也许这就是问题所在?
答案1
太长不看;Munin 配置键/值对是运行时注入到特定插件执行环境中的环境变量。它们必须像任何其他系统环境变量一样从插件代码中访问。
Munin 插件执行
每个 munin 插件都是一个独立的可执行文件。在运行时,Munin 会为每个插件创建一个单独的环境,并向其中注入插件可以引用的变量。有两组环境变量:munin 核心和特定于插件。
提示:用于munin-run -d load_per_core
查看哪些环境变量被注入到你的插件环境中。
如何定义环境变量
每个插件使用以下语法声明特定的环境变量:
#/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
这将创建一个env
具有标识符的 ironment 变量load_per_core.warning
,其值为 ,0.2
并将其注入名为 的插件的执行环境中load_per_core
。
重要的:重新启动munin-node
以使更改生效:
sudo service munin-node restart
在哪里定义环境变量
插件变量在目录中定义/etc/munin/plagin-conf.d
。
Munin 在此位置创建一个名为的默认配置文件munin-node
不建议编辑此文件因为 munin 可以覆盖它。
相反,为每个插件创建一个新文件。在你的情况下可以是/etc/munin/plugin-conf.d/zz-load_per_core
。命名插件配置文件时需要考虑两件事:
- 该名称是任意的,它不必与您的插件名称相关,它可以是任何东西,但...
- 此目录中的配置文件在按字母顺序顺序和定义可以互相覆盖。因此,通过在名称前加上 zz 来强制配置文件的优先级,以确保对其进行评估后
munin-node
。
如何访问环境变量
配置环境变量可以像任何其他环境变量一样由插件代码访问。其语法取决于插件使用的语言。例如,如果您的插件是用狂欢你可以写:
#!/usr/bin/bash
#this would access and print the load_per_core.warning environment var
#i.e 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');