今回は、各々の監視リソースに対して閾値を設定し、アラートを通知する方法について書いていきます。アラート通知方法はファイル記録とメール通知です。
Munin 1.2以降のバージョンでは、Munin プラグインが取得した値が、設定した閾値を超過したことを検知した場合、muninマスタからWarningやErrorなどのアラートを通知する機能を実装しています。
Munin 1.4系の複数のバージョン、もしくはそれより古いバージョンではアラート通知機能が動作しない 既知のバグ が報告されているようです。これから新しく構築する場合は、Munin 2系を使用することで回避可能です。
閾値設定は/etc/munin/munin.confで行います。
アラートレベルは、wariningとcriticalの2種類あります。書き方は [ プラグイン名 ].warining [ 閾値 ]
もしくは、 [ プラグイン名 ].critical [ 閾値 ]
のように書けます。
また、閾値設定は監視対象ホスト単位で設定します。
たとえば、localhostのcpuリソース監視にてuser時間が10%を超えた場合にwarningアラートを通知するための閾値設定は以下のようになります。
# /etc/munin/munin.conf
#
[localhost]
address 127.0.0.1
use_node_name yes
cpu.user.warning 10
これは以下の書き方と同じです。
# /etc/munin/munin.conf
#
cpu.user.warning :10
上記した2つの書き方は設定した値を上回った場合にアラートを通知する設定ですが、逆に、設定した値を下回った場合にアラートを通知することも可能です。ディスク空きスペースやメモリのfree容量の監視で使えそうですね。書き方は閾値の数値の後ろにコロンを付けます。
# /etc/munin/munin.conf
#
memory.free.critical 300000000:
設定した閾値を超過したアラートをログファイルに記録することが出来ます。
Muninではアラートの通知先設定等は /etc/munin/munin.conf
に contact.[contact identifier].command
といった記述方法で設定します。
contact.[contact identifier].command
でアラート通知をファイルに書き出すコマンドを定義するだけでMuninのアラート通知をファイルに記録することができます。
# /etc/munin/munin.conf
#
# Alert log
contact.logger.command tee -a /var/log/munin/alert.log
# tail -f /var/log/munin/alert.log
localhost :: localhost :: CPU usage
WARNINGs: user is 31.46 (outside range [:10]).
localhost :: localhost :: CPU usage
OKs: user is 3.24.
設定した閾値を超過したアラートをメールで通知することが出来ます。
Muninではアラートの通知先設定等は /etc/munin/munin.conf
に contact.[contact identifier].command
といった記述方法で設定します。
contact.[contact identifier].command
でアラート内容をメール送信するコマンドを定義するだけでMuninのアラート通知をメール通知させることができます。
以下設定では、メール送信コマンドだでなく、通知対象のアラートレベル(contact.[contact identifier].always_send)、1つの通知メールで何件のアラートを含まるか(contact.[contact identifier].max_messages)といった設定もしています。
# /etc/munin/munin.conf
#
# Alert mail
#
# 1つのメール通知で報告されるアラート数
# 未設定(default)では、同時に検出された内容が(監視ノード毎に)1つのメールにまとめて送信される
contact.mail.max_messages 1
# メール通知対象のアラートレベル
contact.mail.always_send warning critical
# mailコマンド
contact.mail.command mail -s "[${var:group};${var:host}] -> ${var:graph_title} -> \
warnings: ${var:wfields} / \
criticals: ${var:cfields} / \
unknowns: ${var:ufields}" example@example.com
今回はCPU使用率に対するユーザ時間が10%を超えた場合に任意のメールアドレス宛てにメール通知します。Muninの閾値監視、および通知機能はmuninマスタの機能ですので設定は/etc/munin/munin.confです。
# /etc/munin/munin.conf
#
# Alert log
contact.log.command tee -a /var/log/munin/alert.log
# Alert mail
contact.email.max_messages 1
contact.email.always_send warning critical
contact.email.command mail -s "[${var:group};${var:host}] -> ${var:graph_title} -> \
warnings: ${var:wfields} / \
criticals: ${var:cfields} / \
unknowns: ${var:ufields}" example@example.com
# a simple host tree
[localhost]
address 127.0.0.1
use_node_name yes
cpu.user.warning 10
今回はstressコマンドというCPUに対して負荷を与えることの出来るテストツールを使用してusers時間のCPU割当を10%以上まで上げてみます。stressコマンドはEPELからインストールします。
# stressコマンドツールのインストール
yum --enablerepo=epel install -y stress
# stressコマンドでCPUに負荷をかける
stress -c 2
別ウィンドウで/var/log/munin/alert.log を見るとWarningメッセージが記録されました。
localhost :: localhost :: CPU usage
WARNINGs: user is 29.35 (outside range [:10]).
また、設定したメールアドレスに以下のような通知メールが届きます。
次に、実行していたstressコマンドをControl + cで停止させます。/var/log/munin/alert.log を見るとOKメッセージが記録されました。
localhost :: localhost :: CPU usage
OKs: user is 2.08.
また、設定したメールアドレスに以下のような通知メールが届きます。
以上がMuninによる閾値監視と通知方法(ファイル記録、メール通知)に関する設定です。
Perl |
3
|
Linux |
16
|
Jenkins |
1
|
CI |
1
|
Bashシェル |
1
|
シェルスクリプト |
1
|
Munin |
7
|
Ruby on Rails |
7
|
plenv |
1
|
sudo |
2
|
Cobbler |
6
|
ruby |
1
|
rbenv |
1
|
WeeChat |
1
|
tmux |
2
|
Webistrano |
1
|
capistrano |
1
|
puppet |
8
|
growthforecast |
1
|
Supervisor |
1
|
perlbrew |
1
|
git |
2
|
Python |
1
|
pip |
1
|
PHP |
1
|
Nginx |
1
|
MySQL |
2
|
LXC |
2
|
RPM |
3
|
ImageMagick |
1
|
Subversion |
1
|
qmail |
3
|
yum |
1
|
ucspi-tcp |
1
|
daemontools |
1
|
Puppet |
1
|
IPVS |
1
|
Kickstart |
1
|
aaa |
0
|