web-dev-qa-db-ja.com

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を使用してサーバー間でより簡単に管理できるようにします。ただし、これらの2行を新しいファイル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
Eric Clack

tldr;Munin構成のキーと値のペアは、実行時に特定のプラグインの実行環境に挿入される環境変数です。他のシステム環境変数と同様に、プラグインのコード内からアクセスする必要があります。

Muninプラグインの実行

各muninプラグインは、スタンドアロンの実行可能ファイルです。実行時に、Muninはプラグインごとに個別の環境を作成し、プラグインが参照できる変数を挿入します。環境変数には2つのグループがあります:munin coreおよびプラグイン特定

ヒント: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 

これにより、値がload_per_core.warningの識別子0.2environment変数が作成され、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である可能性があります。プラグイン構成ファイルに名前を付けるときは、次の2つのことを考慮する必要があります。

  1. 名前はプラグイン名に関連する必要がないという点で任意であり、何でもかまいませんしかし...
  2. このディレクトリ内の構成ファイルはアルファベット順で評価され、定義は相互に上書きできます。したがって、名前の前にzzを付けて構成ファイルの優先順位を適用し、aftermunin-nodeで評価されるようにします。

環境変数にアクセスする方法

構成環境変数には、他の環境変数と同様に、プラグインのコードからアクセスできます。この構文は、プラグインで使用されている言語によって異なります。たとえば、プラグインがbashで記述されている場合、次のように記述できます。

#!/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');

2