俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #68 - muninとhttpingでのサーバ監視

寒くなってまいりましたね。
「乾燥してるなぁ」という風に感じるようになったのは結構歳とってからです。
その辺の感覚器官がしょぼかったからよく風邪をひく子供だったんですかね。
いや、体の弱い子だったからよく風邪ひいたんですね。
なんてこたないですね。

さて、結構というかかなりcloudwatchが好きな僕ですが、 ちょい前まではmuninでサーバ監視してました。
え?過去形?
そう、俺は話題がなくなった挙句、「今から捨て去るサービス」についての設定すらも ネタにしようという話題貧乏になったわけです。
躊躇はあるけど、そーでもない。
タイトル詐欺程度、バイラルメディアに比べれば!
えぇいままよ。

俺がやってたmuninによるサーバ監視を簡単に共有します。
muninはグラフ描画で、リソースの情報取得はmunin-nodeでございます。
Ubuntuなので、apt-get使ってサクッといれますね。

sudo aptitude install munin munin-node

んで、muninのコンソール画面をapache経由で閲覧するために、
virtual hostを設定します。
便利なもので、そういうコマンドがあります。

sudo -u munin munin-cron

実際何をしてるのかというと、とても簡単で、
大体/etc/munin以下のシンボリックリンクファイルがapache/conf.dあたりに生成されるような仕組みです。
さて続いて、munin-nodeが監視するドメインを設定します。

sudo vim /etc/munin/munin.conf

[hoge.jp]
    address 127.0.0.1
    use_node_name yes

さて、ここで重要なのはポートです。
muninは4949番ポートを使ってサーバ監視を行うようですので、
ELBのセキュリティポリシーで4949を開けておきます。
(Internal用に使いましょう。10.Xのように。)
さて、こっからがちょいとした推奨設定で、サーバ監視の超重要項目、サーバのレイテンシ周りの話。
ここが遅くなる→何が原因であれサービスが止まってるという可能性があるので。
muninは基本pingを用いた応答でやっているようです(多分)が、
pingのようなicmpはプロセスではないので、ポートという概念を持ちません。
80番に対する外部からのレイテンシ計測にはあまり適さないんじゃないかと思ってます。
なので、httpingのような80番にぶっ刺すようなプロセスを使うほうがいいんじゃないかなと思っています。
なので、httpingをインストールします。

sudo apt-get install httping

そして、ここがmuninの素晴らしいところだと思いますが、
httpingのプラグインがあります。

# プラグインのために
sudo get --no-check-certificate https://raw.github.com/zembutsu/munin-plugin-httping_/master/httping_
sudo cp ./httping_ /usr/share/munin/plugins

# ここで利用可能にするためにchmod
sudo chmod +x /usr/share/munin/plugins/httping_

# さらにシンボリックリンクを貼る
sudo ln -s /usr/share/munin/plugins/httping_ /etc/munin/plugins/httping_hoge

# そして読み込み
sudo vim /etc/munin/plugin-conf.d/munin-node

# 編集は下記のように
[httping_hoge]
env.URL http://hoge.jp
env.COUNT 5

# ちぇっく
sudo /usr/sbin/munin-run --debug httping_hoge

こんな感じにしておけば、
muninのコンソールでhttpingコーナーが出来て、しっかりとレイテンシ監視ができます。
便利ですね。
ま、結局ELBのLatencyでいいじゃん!という結論になって、最近は使っていないのですが、、、
いやはやCloudWatchはすげぇよ本当に。
munin結構好きだったんだけどなぁ。。。
あ、りんご食べたい!
じゃぁねー