Ganglia3.2とgweb2を試してみた

Ganalia ( http://ganglia.sourceforge.net/ )はUnix系のリアルタイムグラフ化ツールなのだが、最近本体のバージョンが3.2に上がっており、かつWebコンソールのバージョンが2.0にあがったのに気づいたので改めて試してみた。

元々Gangliaはエージェントのインストール, 設定が非常に簡単で、かつ取得する量を増やすのも比較的簡単(エージェントに値を送るためのコマンドが付属しており、シェル等で値を送付できる, http://d.hatena.ne.jp/aaabbb_200904/20100313/1268472285 )と使いやすいものだったのだが、2つ厄介な点があった。
1. Windowsで使用できない (正確にはCygwinからは使用できるはずなのだが、Cygwin-1.7で上手くビルド出来ない、など使い辛かった。。)
2. 値を取得するのは簡単だが、それを任意の並びで表示するのが少々大変(PHPで表示ロジックを書く必要がある)
今回のバージョンアップではこの辺が大きく改善されていた。まずはGanglia3.2の変更点とgweb2の変更点を順番にまとめていこうと思う。<<参考リンク>>
http://ganglia.info/?p=430
http://ganglia.info/?p=393
http://ganglia.info/?p=422
http://ganglia.info/?p=448

Ganglia3.2

sFlow対応(Windows対応)

WindowsネイティブのGangliaエージェントは依然として上手く動かないようなのだが w, Ganlia3.2ではsFlow(詳細は参考リンクを参照, 元々はSNMPに代わるネットワーク機器の情報取得プロトコルだったはずなのだが、ホストのキャパシティ管理にも転用されたらしい。。w) の値を表示できるようになっており、Windows用のホストsFlowエージェントを使うことで、Gangliaエージェントで取得できる量が表示できるようになっている。<<参考リンク>>
http://itpro.nikkeibp.co.jp/article/COLUMN/20070410/267869/
http://blog.sflow.com/2010/10/installing-host-sflow-on-windows-server.html
gmondと違って、任意の値を取得するためのコマンドが付属していないので、完全にgmondを置き換えられるわけではないが、まったく量が取れなかった以前の状態と比べると大きな進歩だ。。

互換性

こちらで試した限りでは、gmond 3.1.7からgmond 3.2 に送付したデータは正常に表示できた。ただし、3.0, 3.1 は元々互換性が無いので、3.0系しかパッケージが準備出来ない場合には 3.2のSRPMをビルドしなおした方がよいかもしれない。
※ CentOS5のEPELではパッケージが 3.0系なので、ビルドが必要になる。

gweb-2.0

GangliaのWebコンソールはかなり大きく変更されているので、大きい変更だけを記述しようと思う。。詳細は参考リンクを参照。<<参照リンク>>
http://sourceforge.net/apps/trac/ganglia/wiki/ganglia-web-2
なお、デモサイトとしてこちらのサイトが用意されていた。
http://fjrkr5ab.joyent.us/ganglia-2.0/

Aggregate Graph

前述の通り、今まではGangliaのWebコンソールにグラフを追加する際は手でロジックを作る必要があったが、この機能を使うと"ある値を複数のサーバーに対してまとめて表示する"というグラフをWebコンソール上で作成出来るようになる。例えば、Apacheサーバーが複数ある場合、全サーバーのスレッド数をまとめて表示した画面を作っておくと、パフォーマンス障害に気づくのが簡単になるだろう。。

AggregateGraphの作成画面は、こんな感じの画面になっている。(デモサイトの画面を参照, 直接たどるには 上部の "Aggregate Graphs"タブを使用。)
http://fjrkr5ab.joyent.us/ganglia-2.0/aggregate_graphs.php
この画面で、ホスト正規表現: "ba"("ba"を含むノード), メトリック正規表現 "cpu_idle" を選ぶと、"ba"を含むノードについて cpu_idle のグラフが表示される。(直リンクは下のリンクを参照, 数台のサーバーについてidleの量がグラフで見られるはず。。)

http://fjrkr5ab.joyent.us/ganglia-2.0/graph.php?r=hour&z=xlarge&title=&vl=&hreg[]=ba&mreg[]=cpu_idle&gtype=line&aggregate=1&embed=1

なお、確認時点ではデモサイトのWebコンソールのバージョンが 2.0.0だったのだが、最新の2.1.7(正確には 2.1.5以降 ) では、作成したAggregateGraphを閲覧するためのURLを生成するボタンが追加されている。メモ帳等によく使うURLを書いておき、毎朝まとめて開くと良さそうだ。。なお、Views機能を使うと開くグラフをサーバー側に保管できるが、これについては後述。。

Event

Eventはあるノードのグラフに対して縦棒と、その時刻に起こった事象を書き込む機能になる。 参考リンク先に例があった。値が妙な動きを見せたときの確認結果をまとめるために使えそうだ。。<<参考リンク>>
http://sourceforge.net/apps/trac/ganglia/wiki/events
時刻、名前等はWebコンソールの"Events"タブから指定できる(こちらも2.1.5以降)が、事前に gwebのconf.php(インストールディレクトリに置く, CentOSでは通常 /var/www/html/gweb) で次の設定を行う必要がある。

$conf['overlay_events'] = true;

便利な機能だが、こちらは、管理コンソールから変更を加えてしまうため、閲覧だけのユーザーには実施させないよう注意したい。ただ、現時点のWebコンソール(2.1.7で確認)ではEventsの追加については、認証の対象となっていない(このため、閲覧が出来るユーザーなら誰でもEventを定義出来てしまう)ようなので注意。URL的には "events.php"が画面となるので、後述する"login.php"と合わせて、個別にhtpasswdの対象としておくとよさそうだ。。

認証

1.0系のコンソールでは、認証はクラスタごとの閲覧制限にしか使用していなかった(private_clusters 内に記述していた )が、2.0系ではViewsの編集 (2.1.7でいうと、Viewを事前に定義しておき、任意のAggregateGraphを追加していく機能になっている。1画面に表示するグラフを細かく制御したい場合に便利そう。。 ) の機能が加わったため、この機能を有効にする場合には認証を有効にしておいた方がよさそうだ。。<<参考リンク>>
http://sourceforge.net/apps/trac/ganglia/wiki/ganglia-web-2/AuthSystem

デフォルトの設定では conf_default.php 内で次が定義されており、Viewsの編集機能が使えなくなっている。

$conf['auth_system'] = 'readonly'

編集を有効化するには、次の定義を入れる必要があるが、

$conf['auth_system'] = 'enabled'

gweb自体は認証を行えず、Apache等のBasic認証と連携する(REMOTE_USER を取得する) 形で認証を行うため、上の設定と合わせて、httpd.confに次の設定を行う必要がある。

SetEnv ganglia_secret yourSuperSecretValueGoesHere

<Files "login.php">
  AuthType Basic
  AuthName "Ganglia Access"
  AuthUserFile /var/lib/ganglia/htpasswd
  Require valid-user
</Files>

なお、ACLを設定するには更にconf.php内で$aclにユーザーを追加していく必要があるが、こちらで試したところ "admin" というユーザーには元々admin権限が与えられていたため、htpasswd を作成するだけで動作させることが出来た。

# htpasswd -c /var/lib/ganglia/htpasswd admin

この設定で、admin権限を持つユーザーだけがシステムに変更を行えるようになるはずである。

まとめ

リアルタイムグラフ系のツールではCacti(http://www.cacti.net/)も有名だが、こちらはWindows対応が難しいのと(wmiはLinuxからの取得が難しい、、)、取得量の追加が多少面倒(グラフを作るのは簡単なのだが、エージェント型では無いので取る量を増やすのが多少面倒 )な感じで、Ganglia3.2はかなり出来がよい印象を受ける。
あまり商用製品が多い分野では無いので、地味な感じだが w 障害切り分けの助けとなったり、長期的なシステムの変化を確認したりと、運用上非常に重要なツールなので、まだ類似のツールが導入されていない場合には、早めに導入計画を立てておくのがよさそうだ。。