serfを使ってmuninの自動追加するserf-muninを試してみました。

serf-muninでmunin-nodeの監視自動追加/削除 | Pocketstudio.jp log3
serf-muninを導入してmunin-nodeの監視追加、削除を自動化した - Glide Note - グライドノート

Serfとは



Serfはゴシッププロトコルを利用したメッセージングツールで
参考記事にとてもわかりやすく書いてありますが、

・Serfは全てのサーバで動かす必要がある。
・クラスタという概念があって、各サーバ(ノード)で動いているSerfがクラスタにjoin/leaveすることが出来る。
・クラスタに参加している、ノード同士が相互通信をしていて、クラスタへのjoin/leaveするノードを検知している
・ノードがクラスタにjoin/leaveするとイベントが発生して、事前に設定したスクリプトを走らせることが出来る。
via: Serf+HAProxyで作るAutomatic Load Balancer - Glide Note - グライドノート


とのことで、管理サーバ:複数ノードみたいな構成に向いていて、
Serf自体のセットアップも起動スクリプトさえ作れば良いので
Chefに組み込めばセットアップから追加までの自動化がより楽になります。

導入



既存のmuninサーバではgroupで管理しているので、グライドノート様の手順を拝借。
conf.dも元から掘ってあるので手順どおりですんなり追加できました。

まず、muninサーバでserfを起動すると、まず自身がjoinします。

==> Starting Serf agent...
==> Serf agent running!
Node name: 'munin01'
Bind addr: '0.0.0.0:7946'
RPC addr: '127.0.0.1:7373'
Encrypted: false

==> Log data will now stream in as it occurs:

2013/11/07 11:42:34 [INFO] Serf agent starting
2013/11/07 11:42:34 [INFO] serf: EventMemberJoin: munin01 192.168.101.101
2013/11/07 11:42:34 [INFO] Serf agent started
2013/11/07 11:42:35 [INFO] agent: Received event: member-join


設定ファイルが生成されました。

 ls -l /etc/munin/conf.d/
合計 4
-rw-r--r-- 1 root root 67 11月 7 11:42 2013 node-munin01.conf


次にmunin-node側でserfを起動します。

2013/11/07 11:47:50 [INFO] Responding to push/pull sync with: 10.200.41.27:56116
2013/11/07 11:47:50 [INFO] serf: EventMemberJoin: serf-test01 192.168.101.201
2013/11/07 11:47:51 [INFO] agent: Received event: member-join


ノードの設定ファイルがが生成されました。

$ ls -l /etc/munin/conf.d/
合計 8
-rw-r--r-- 1 root root 67 11月 7 11:42 2013 node-munin01.conf
-rw-r--r-- 1 root root 66 11月 7 11:47 2013 node-serf-test01.conf


当然GUIにもちゃんと出てきます(muninサーバの方は諸事情により表示してません。。。)

$ストロングスタイル

munin-nodeでserfを停止します。

2013/11/07 11:46:13 [INFO] serf: EventMemberFailed: serf-test01 192.168.101.201
2013/11/07 11:46:14 [INFO] agent: Received event: member-failed


設定ファイルが削除されています。

 ls -l /etc/munin/conf.d/
合計 4
-rw-r--r-- 1 root root 67 11月 7 11:42 2013 node-munin01.conf


設定が削除された後は、リコネクトしつづけるようです。
もう同じノードが追加されないようであればserf再起動をしたほうが良いかも。

2013/11/07 12:15:04 [INFO] serf: attempting reconnect to serf-test01 192.168.101.201
2013/11/07 12:15:34 [INFO] serf: attempting reconnect to serf-test01 192.168.101.201
2013/11/07 12:16:04 [INFO] serf: attempting reconnect to serf-test01 192.168.101.201


こんな感じで既存のmuninをいじらず追加できるのがとても良いです。
イベントハンドラの制御もシンプルなのでいろいろ応用できそう。

参考


serf-muninでmunin-nodeの監視自動追加/削除 | Pocketstudio.jp log3
serf-muninを導入してmunin-nodeの監視追加、削除を自動化した - Glide Note - グライドノート
Serf+HAProxyで作るAutomatic Load Balancer - Glide Note - グライドノート