https://github.com/zembutsu/serf-munin
Github 上に、オーケストレーションツール Serf の、イベントハンドラ用スクリプトを公開しました。機能は、serf のメンバに存在するとき(join時)、munin-node の監視設定ファイルを自動設置します。メンバから外れた時(leave/failed時)は自動的に設定ファイルを削除します。
■設置方法
Munin マスタ(監視元)のサーバに、このファイルを設置します。
$ wget https://raw.github.com/zembutsu/serf-munin/master/serf-munin.sh
# mkdir /opt/serf-munin-node/
# mv ./serf-munin.sh /opt/serf-munin-node/
# chmod 755 /opt/serf-munin-node/serf-muni.sh
Serf agent を起動します。
$ serf agent -event-handler=”/opt/serf-munin-node/serf-munin.sh” -role=munin-server -log-level=debug
この中で必須なのは「-event-hander=」の箇所です。もし設置パスを変えた場合は、書き換えて下さい。
■必要条件
Munin 2.0 以上
設定ファイルを /etc/munin/conf.d/ に書き出します。serf 実行時のユーザ権限で /etc/munin/conf.d/ を編集できるように調整しておいてください。
■動作内容
・イベントハンドラ member-join 時( agent: Received event: member-join)
ノード名とIPアドレスの情報を元に、/etc/munin/conf.d/node-<IPアドレス>.conf ファイルを作成します。
[node;<ホスト名>] address <IPアドレス> use_node_name yes
グループ名は “node” 固定です。将来的には、role に応じてグループ分けができるようにしたいと考えています。
・イベントハンドラ leave ( agent: Received event: member-leave )
/etc/munin/conf.d/node-<IPアドレス>.conf ファイルを削除します。
■今後の展開とか
Serf の動作テストも兼ねて、とりあえず作ってみました。テスト環境に監視設定を入れるのは面倒になりがちですが、、Serf を入れて、agent 立ち上げて、join させるけで簡単に監視設定が有効になります。
想定活躍シーンは、Munin マスタ管理の省力化です。特に、大量の検証環境があるときでしょう。たとえば、仮想ホストを立ち上げて Chef/Puppet 等で munin-node のセットアップを済ませておくとします。あとは Serf 側の設定をするだけで、すぐに監視も有効になります。
また、要らなくなったら仮想マシンを落とすだけで Munin の設定も消えます。これらの作業を、Munin マスタサーバにログインすること無く行えます。
さて、Serf そのものについては、改めてエントリを書こうと思います。
今は、前田氏のエントリが分かりやすいのではないかと。。勉強になりますm(__)m 以下参考 URL
Serf+HAProxyで作るAutomatic Load Balancer – Glide Note – グライドノート
http://blog.glidenote.com/blog/2013/10/30/serf-haproxy/
Pingback: natインスタンスの冗長化 | DEVLAB