Serf 使ってみる。が、ちょいとw
いまさら自分で「Serfとは?」って書かなくとも沢山検索にヒットしますし、あえて何番煎じ?って感じなので'まとめ'だけ。あとちょっと色々あそんだのでいつものメモ(Window に Munin-node と Serf 入れるたらまた少しはまった)。
アジェンダ的には、
・Serf 入れてみる
・Window に Munin-node いれてみる
・Munin のノード自動追加
Serf とは
Serfは、Vagrant で有名なMitchell Hashimoto氏が作成したgo言語で作られたツール。いわゆるオーケストレーションツールといわれているもの。詳しくは、下記のプレゼン資料が非常に役立ちます(手抜きですね)。
Serf クラスタとイベントハンドラ
Serf を起動するとSerf クラスタに参加できるわけですが、その前にクラスタ?イベントハンドラ?どんなもの?と少し理解しておく必要があります。
Serf をインスコしてみる
まずその前に vm を複数用意しておきます。それぞれのvmにSerfをダウンロードしてインストールします。が、最新版 0.6.3(2014/08/15現在)は、うまく動作してくれないのでひとつ前の 0.6.2 をインストールします。ちなみに 64bit版は、amd64 です。
$ wget https://dl.bintray.com/mitchellh/serf/0.6.2_linux_amd64.zip
$ unzip 0.6.2_linux_amd64.zip
起動
どのネットワークアダプタをSerfノードに参加させるか指定するだけです。これだけ。オワリ。
$ serf agent -iface eth0
オワリ、ではないのですね。これでは Serfノード独りぼっちなので join のコマンドを使ってSerfノードをつなげます。
$ serf join 192.168.11.102 ※相手先アドレス
ここらも詳しいことは下記を参考に
Windows8 に munin-node をインストール
最終更新日が 2011年と少し古いけど公式サイトから munin-node-win32 1.6.1.0 (Beta) Installer をダウンロードしてインストールします。
手順としては、[PC]Linuxからのwin8 PCモニタリング環境(munin-node-win32 + speedfan + sexe)Add Star さんの記事に沿ってます。
- Munin Node for Windows のサービスを全て停止します(コントロール パネル-管理ツール-サービス)。
- 管理者権限でdos窓を開いて、Munin Node をインストールした場所まで移動します。
C:\Program Files (x86)\Munin Node for Windows
-
munin-node-win32.exe -run
を実行します。エラーが表示されているのであればmunin-node.ini
を適宜修正します(エラーの対処は、ここに全て書いてあります)。あと私が使用しているiniファイル参考まで( https://gist.github.com/murachi1208/1dee7efa14491f4f23e3 )。 - エラーが出ないことを確認できたら
munin-node-win32.exe -install
を実行しサービスに登録します。 - Munin Node for Windows のサービスが実行されているか確認します(コントロール パネル-管理ツール-サービス)。そして自動起動するとかそこらへんは運用に合わせて設定します。
- 再起動します(私は、再起動しなくてはまった)。
ここまでは比較的簡単ですが、Munin Node と通信するポートが開いていないので FireWall の設定を行い、icmp と port:4949 を許可する設定をします。「Windows Vistaのファイアウォールでpingへの応答を許可する」を参考にしてください。
Muninサーバ(Linux)で、munin-node-win32 をインストールした Windowsマシンに対して ping
が通るか確認すると共に、telnet コマンドを使用しポート4949でアクセスしコマンド list が動作していることを確認します(終了するには quit)。
$ telnet 192.168.11.200 4949
Trying 192.168.11.200...
Connected to 192.168.11.200.
Escape character is '^]'.
# munin node at hagehoge
list ← ここ
df memory processes network cpu hdd speedfan disktime processor uptime
fetch df ← ここ
_dev_0_.value 49
_dev_1_.value 54
_dev_2_.value 57
.
quit ← ここ
Munin で監視できるか確認
たぶんもうここまできてれば問題ないはずw。だけど Munin で監視できるか確認しといたほうがいいので、/etc/munin/munin.conf
にちろっと定義します。
[Windows;windows8]
address 192.168.11.200
use_node_name yes
しばらく待ってみて、Munin 側で Windows;windows8 の項目が出ていればok。
Windows8 に Serf をインストール
Windows版のSerfをダウンロードしてインストールします。こっちは、最新版 0.6.3(2014/08/15現在)で大丈夫。ちなみに 64bit版は、amd64 です。あとzipを解凍すればokです。
ショートカットを作成して、リンク先に以下のパラメーターを追加します。あと管理者権限で実行するのチェックをつけて起動します。
agent -join xxx.xxx.xxx.xxx -bind 自分のPCアドレス -role=Windows8
どこでもいいですが、Serfノードに参加されたことを members コマンドつかって確認します。
Munin-node 自動追加
Munin のノード追加は /etc/munin/munin.conf
に追加するだけで簡単ですが、会社規模だと監視する台数が・・・大変なわけで。そんなときに Serf を利用すると便利なスクリプトが公開されてました。
・serf-muninを導入してmunin-nodeの監視追加、削除を自動化した / 前田氏のエントリ
https://github.com/glidenote/serf-munin-setup で公開されているスクリプトがよい感じです。
個人的に、監視nodeが自動追加されるのはいいけど自動削除されてしまうとどんな負荷があって落ちたの?ってみれないかと思うのと、Serf 0.2 なのとインストールスクリプトを多少変更してみた。
まだ本家にマージリクエストしてない途中経過ちゅうー
https://github.com/murachi1208/serf-munin-setup/tree/feature_serf_0.6.2_modify
検索したサイト情報
OneTabでまとめてます
http://www.one-tab.com/page/4C2Oy_JCQ1yMs_mfb76qrA
個人的な感想
SEやってるより運用SEが面白いなと思うこのごろ。
さて Consul もちょいと勉強してみるか。