会社で使おうと思っていたTomcatのスレッド数をグラフ化するMunin pluginがあるのですが、XML::Simpleに依存していて「Munin pluginのためにわざわざPerlモジュールインストールするのもなぁ」と思ったので、ついかっとなってXMLをパースするところを正規表現で書き直してみました。ついでにmaxThreadsも表示するようにしたり、微調整もしています。プラグインはgithubに上げてあります。
なんでXML::Simpleを使っていたかというとTomcatのstatus画面がXMLで出力されているからなのですが、頑張ればこのぐらいのXMLは正規表現でパースできるということが実践できて良かったです。
↓は実際のスレッド数のグラフ。


Tomcatハンドブック 第2版
著者/訳者:Jason Brittain Ian F. Darwin
出版社:オライリージャパン( 2008-11-21 )
大型本 ( 560 ページ )
リソース監視ソフトウェアにMuninというものがありますが、個人でも仕事でも使っていて割りと好きなものの一つです。どういうところがいいかというと
- インストールが簡単ですぐ動かせる
- Munin自体は静的なHTMLファイルを生成するだけなので、Webサーバは何でもよい。自分の好きなWebサーバを使えばよい
- リソース情報の収集は単に /etc/munin/plugins 配下のコマンドを呼び出しているだけなので、好きな言語でプラグイン(コマンド)を作れる
かなぁと。
ただ一方で、管理するサーバの台数が100台規模になってくるとグラフの生成に時間がかかる(ものによっては10分以上)という問題があるので、最近は代替できるソフトウェアを模索中です。
先日設定したサーバでMuninをインストールして監視していたのですが、どうもMySQL関連のプラグイン(mysql_bytes, mysql_queries, mysql_threadsなど)でグラフが描画されず、どうしたものかと思ってぐぐってみたところ、このエントリを見つけました。まさにビンゴで /etc/munin/plugin-conf.d/munin-node に以下の行を足してmunin-nodeをrestartしたところ、うまくグラフが描画されるようになりました。
env.mysqladmin /usr/local/bin/mysqladmin
Muninの問題なのか何なのか、自分のケースでは mysql 関連のコマンドを /usr/local/bin/ 配下にインストールしてたので、ここにPATHが通っていなかったのが問題のようです。
$ sudo -umunin munin-run mysql_bytes
と実行してもうまく数値が出てきたのでどうしたものかと悩んでいたのですが、解決してすっきりしました。
サーバのリソース監視&グラフ化を行なうソフトウェアは色々ありますが、今日は導入が簡単と言われているMuninを紹介したいと思います。
個人的に感じているMuninの良い点としては
- インストール&初期設定が簡単
- デフォルトで監視できる対象が多い
- プラグイン機構があり、任意のリソースのグラフ化が可能
が挙げられます。仕事で使うのは Cacti とかがいいと思いますが、個人利用としては Munin はとてもお手軽でおすすめです。
インストール
Ubuntu Linuxだとdebパッケージがあるのでaptitudeでインストールするだけです(Fedore CoreやCentOSにもRPMがあります)。
$ sudo aptitude install munin
インストールしたら、munin-nodeというプログラムが起動しているかどうかを調べます。
$ ps auxww |grep munin-node
もし起動していない場合は下記の要領で起動しておきましょう。
$ sudo /etc/init.d/munin-node start
設定
Muninは munin-node というサーバに常駐してリソースの情報を集めるエージェントと、そのエージェントから情報を集約してリソースの状況をグラフ化する munin 本体の2つがあります。今回は1台のサーバを監視するので特に意識する必要はありませんが、サーバが複数台になった場合は、munin-node を監視したいサーバにインストールする必要があります。
なお、Munin自体はデフォルトのままでも使用できますが、 Muninが /var/www/munin/ に生成したグラフのファイルをブラウザから見れるように、Apacheに以下の設定を追加します。
Alias /munin/ /var/www/munin/
<Directory "/var/www/munin">
Options Indexes +SymLinksIfOwnerMatch MultiViews ExecCGI
AllowOverride FileInfo AuthConfig Limit Indexes
Order allow,deny
Allow from all
</Directory>
設定したら Apache を再起動します。5分ぐらい待ってから http://yourhost/munin/ をブラウザで開くと下記のような画面が表示されるかと思います。待てないせっかちな人は下記を実行してみてください(muninのHTMLが生成されます)。
$ sudo -u munin munin-cron

監視したいリソースの追加
デフォルトでは Munin にはApacheやMySQLなどの状況をグラフ化するプラグインが付属しているので、これを有効にしてみましょう。例えば Apache 関連のものは
$ sudo ln -s /usr/share/munin/plugins/apache_* /etc/munin/plugins/
のように、/etc/munin/plugins/の下にpluginのシンボリックリンクを貼るだけで監視対象とすることができます。あ、ただ munin-node の再起動が必要ですが…
$ sudo /etc/init.d/munin-node restart
なお、グラフが更新されるのは5分に1回なので、監視対象を追加した場合反映されるのは5分後になります。以下は apache_accesses の状況です。

プラグインのダウンロード
デフォルトでもかなりの数のプラグインが揃っていますが、memcachedなどのリソース監視を行うプラグインもあります。そのような野良プラグインはMuninExchangeにアップされているので、使えそうなものがないかチェックしておくと良いでしょう。
まとめ
Muninのお手軽さが少しは伝わったでしょうか?日本語の情報はあまりありませんが、Munin自体はとてもシンプルかつ導入が簡単なので、「試しに入れてみよう」というとっかかりになれば幸いです。プラグインで任意のリソースをグラフ化することができるのも大きなメリットなので、時間があったらプラグインの書き方でも説明したいと思います。
コメント