在 plugin-conf.d 文件中设置警告/严重阈值

在 plugin-conf.d 文件中设置警告/严重阈值

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。命名插件配置文件时需要考虑两件事:

  1. 该名称是任意的,它不必与您的插件名称相关,它可以是任何东西,但...
  2. 此目录中的配置文件在按字母顺序顺序和定义可以互相覆盖。因此,通过在名称前加上 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');

相关内容