📝

Serf を使用した Munin-node 自動追加, ついでに Winodws8 に Munin-nodeいれてみる

2021/04/05に公開

Serf 使ってみる。が、ちょいとw

いまさら自分で「Serfとは?」って書かなくとも沢山検索にヒットしますし、あえて何番煎じ?って感じなので'まとめ'だけ。あとちょっと色々あそんだのでいつものメモ(Window に Munin-node と Serf 入れるたらまた少しはまった)。

アジェンダ的には、
 ・Serf 入れてみる
 ・Window に Munin-node いれてみる
 ・Munin のノード自動追加

Serf とは

Serfは、Vagrant で有名なMitchell Hashimoto氏が作成したgo言語で作られたツール。いわゆるオーケストレーションツールといわれているもの。詳しくは、下記のプレゼン資料が非常に役立ちます(手抜きですね)。

Serf という Orchestration ツール #immutableinfra
ご注文は監視自動化ですか?

Serf クラスタとイベントハンドラ

Serf を起動するとSerf クラスタに参加できるわけですが、その前にクラスタ?イベントハンドラ?どんなもの?と少し理解しておく必要があります。

【Serf】イベントハンドラを整理してみる
Droongaノードの死活管理を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 ※相手先アドレス

ここらも詳しいことは下記を参考に

真夜中にふと思いついて Serf のイベントハンドラを触ってみた 〜アニキと舎弟の上京物語〜

Windows8 に munin-node をインストール

最終更新日が 2011年と少し古いけど公式サイトから munin-node-win32 1.6.1.0 (Beta) Installer をダウンロードしてインストールします。
手順としては、[PC]Linuxからのwin8 PCモニタリング環境(munin-node-win32 + speedfan + sexe)Add Star さんの記事に沿ってます。

  1. Munin Node for Windows のサービスを全て停止します(コントロール パネル-管理ツール-サービス)。
  2. 管理者権限でdos窓を開いて、Munin Node をインストールした場所まで移動します。C:\Program Files (x86)\Munin Node for Windows
  3. munin-node-win32.exe -run を実行します。エラーが表示されているのであれば munin-node.ini を適宜修正します(エラーの対処は、ここに全て書いてあります)。あと私が使用しているiniファイル参考まで( https://gist.github.com/murachi1208/1dee7efa14491f4f23e3 )。
  4. エラーが出ないことを確認できたら munin-node-win32.exe -install を実行しサービスに登録します。
  5. Munin Node for Windows のサービスが実行されているか確認します(コントロール パネル-管理ツール-サービス)。そして自動起動するとかそこらへんは運用に合わせて設定します。
  6. 再起動します(私は、再起動しなくてはまった)。

ここまでは比較的簡単ですが、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

Droongaノードの死活管理をSerfで行う手順
Serf 虎の巻

個人的な感想

SEやってるより運用SEが面白いなと思うこのごろ。
さて Consul もちょいと勉強してみるか。

GitHubで編集を提案

Discussion