大量ノード監視ツール「Ganglia」を試してみた

カテゴリ: コンピュータ / 公開日: 2011年7月30日(土曜)03:35 / 投稿者: Tom Goodsun

Gangliaとは大量ノード(この場合ノードとは「サーバー」を意味します)のリソース監視をするためのツールです。
グラフを作成してくれるのですが、それにはRRDToolを使用します。
ウェブインターフェースはPHPで記述されているため、カスタマイズがしやすいことやSNMPではなくネットワークのマルチキャストでgangliaの情報収集モジュールがインストールされたサーバーの情報取得するというのも特徴です。

確かにSNMP+MRTGに比べるとノード追加時に行わなければならない設定が少ないので、手軽だと感じました。

インストールのこぼれ話

それではインストールをはじめていきましょう。
GangliaをインストールするのはScientific Linux 6.0です。

当初、yumでインストールできるとは思っていなかったので、ソースをコンパイルしてインストールしていました。
とりあえず、その時のメモ。そのままインストール方法をご覧になりたい方はここらへんはすっ飛ばしてください。

.tar.gzのファイルGangliaの公式(SourceForge)からwgetでダウンロードして展開、configureした段階で色々依存モジュールが足りないことが判明。
ということで、とあるサイトで必要といわれていた以下1行目のインストール以外に2行目もインストール。

yum install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpmbuild glib2-devel dbus-devel freetype-devel fontconfig-devel gcc-c++ expat-devel python-devel libXrender-devel
yum install rrdtool rrdtool-devel libconfuse libconfuse-devel pcre pcre-devel

これでconfigureを実行したら、うまくいけました。

./configure --with-gmetad

ちょっと感動的だったのが以下のようなAAで出迎えてくれるあたり。ついに俺も迎え入れられたかって感じ。

Welcome to..
     ______                  ___
    / ____/___ _____  ____ _/ (_)___ _
   / / __/ __ `/ __ \/ __ `/ / / __ `/
  / /_/ / /_/ / / / / /_/ / / / /_/ /
  \____/\__,_/_/ /_/\__, /_/_/\__,_/
                   /____/

Copyright (c) 2005 University of California, Berkeley

Version: 3.2.0.0
Library: Release 3.2.0.0 0:0:0

Type "make" to compile.

ところが、ここから先がいろいろ設定できないという始末。あまり深いところまで追求しないのが俺です。
あきらめモードでオフィシャルのドキュメント読んでたら、

apt-get ganglia-monitor

とか書いてある。

えっ!?
もしかしてパッケージマネージャーでインストールできるの?

Gangliaをyumでインストール

ということで、

yum install ganglia

とかしたら、epelレポジトリにあった。
いろいろ調べてみると以下のインストールをしなければならない。

yum install ganglia ganglia-web ganglia-gmond ganglia-gmetad

これでインストールは完了します。
でも、これだけではブラウザからGangliaにアクセスできません。

Apacheの拡張設定ファイルで、アクセス制限がしてあるので、とりあえず簡易的に以下のように書き換えます。

# vi /etc/httpd/conf.d/ganglia.conf
  #
  # Ganglia monitoring system php web frontend
  #

  Alias /ganglia /usr/share/ganglia

  <Location /ganglia>
    Allow from all
#    Order deny,allow
#    Deny from all
#    Allow from 127.0.0.1
#    Allow from ::1
#    # Allow from .example.com
  </Location>

以下のファイルを開き、監視対象サーバー(この場合は自分自身になりますが)の名前をつけてやります。

# vi /etc/ganglia/gmond.conf
cluster {
  name = "mysl6.net" ←名前をつける
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

で、あとは以下のコマンドでプロセスを立ち上げます。

/etc/init.d/gmond start
/etc/init.d/gmetad start
/etc/init.d/httpd restart

するとhttp://ホスト名/ganglia/にアクセスするとグラフが確認できます。

監視ノードの追加

監視ノードの追加には監視対象のサーバーへの設定が必要です。
データはマルチキャストでやりとりされるため、細かい設定はひとまずなくてもデータを取得できます。

マルチキャストとはとあるIPアドレス帯にぶら下がっているノード(マシン)に対してパケット(データ)を送ることです。

それでは監視対象の設定をしていきます。
今回の監視対象はCentOS 6.0です。

CentOS 6.0上で以下のコマンドを実行してください。

yum install ganglia ganglia-gmond

同じように名前をつけてやります。

# vi /etc/ganglia/gmond.conf
cluster {
  name = "myc6.net" ←名前をつける
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

これでgmondを起動してやります。

/etc/init.d/gmond start

もうお気づきかもしれませんが、Gangliaのデータ収集はgmondというデーモンで行っています。

再び、Gangliaのウェブインターフェースにアクセスして、追加したサーバーのグラフが確認できればOKです。
SNMP+MRTGにくらべ、設定項目が少なく、マルチキャストで取得できるという点が大量ノードのリソース監視に使われるという大きな理由なんでしょうね。