ganglia入れてみた

gangliaのインストールメモです。


はじめに
gangliaとは

リモートにある大量のサーバ(=管理対象ノード)を一元管理できるオープンソースの管理ソフトウェア

http://thinkit.co.jp/free/article/0611/13/1/より引用

今回導入した理由は、単純にリソースがどう使われているか時系列で見たかったからです。というか、webサービスやるんなら入れといた方がいい。


インストール環境

uname -a

Linux ○○ 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:33:52 EDT 2008 i686 i686 i386 GNU/Linux
cat /etc/issue

CentOS release 5.2 (Final)


インストール方法

rootで作業します。


依存関係のモジュールをインストール

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 libpng-devel libart_lgpl-devel rrdtool-devel freetype-devel libconfuse-devel rrdtool perl-rrdtool


ダウンロードしたいディレクトリへ移動(別にどこでも)

cd /usr/local/src


gangliaの本体をダウンロード。

wget http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.1.1%20%28Wien%29/ganglia-3.1.1-1.src.rpm/download


rpmをビルド

rpmbuild --rebuild ganglia-3.1.1-1.src.rpm


生成したrpmが置いてあるディレクトリへ移動

cd /usr/src/redhat/RPMS/i386


ビルドしたrpmをインストール

rpm -ivh ./libganglia-3_1_0-3.1.1-1.i386.rpm
rpm -ivh ./ganglia-gmetad-3.1.1-1.i386.rpm
rpm -ivh ./ganglia-gmond-3.1.1-1.i386.rpm
rpm -ivh ./ganglia-gmond-modules-python-3.1.1-1.i386.rpm
rpm -ivh ./ganglia-debuginfo-3.1.1-1.i386.rpm
rpm -ivh ./ganglia-devel-3.1.1-1.i386.rpm


gangliaは、マルチキャストを使用するので設定

vi /etc/sysconfig/network-scripts/route-eth1
(追加)239.2.11.71 dev eth1


ネットワーク再起動

service network restart


確認

netstat -rn


gmetad.confを書き換える。
今回は、localhostとローカルネットワークにある192.168.1.11サーバーも監視の対象にする。このサーバーもwebサービスが動いている。

vi /etc/ganglia/gmetad.conf

複数ある場合は、cluster。
  data_source "my cluster" localhost
  data_source "my cluster" 192.168.1.11

信頼できるホスト
  trusted_hosts localhost 192.168.1.11

apache?
  setuid_username = “apache

gmond.confを書き換える。
最低限の設定なので、太字の部分を書き換えるだけ。

vi /etc/ganglia/gmond.conf
clusterの名前を合わせるだけ。
マルチキャストのアドレスは、デフォルトに従う。
globals {
  daemonize = yes
  setuid = yes
  user = apache
  debug_level = 0
  max_udp_msg_len = 1472
  mute = no
  deaf = no
  host_dmax = 0 /*secs */
  cleanup_threshold = 300 /*secs */
  gexec = no
  send_metadata_interval = 0
}

cluster {
  name = "my cluster"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

所有者の変更

chown apache:apache /var/lib/ganglia/rrds


起動

service gmetad start


テスト
xmlが表示されたらok

telnet localhost 8651


gangliaのレポートは、webでグラフとして閲覧できるので公開ディレクトリの設定をapacheで設定する。

・・・

ん? どこ?

updatedb &

待つ・・・

locate ganglia | grep php

あれない・・・

てか、README読めってことか。
ってREADMEもない。
しかたないのでtarを持ってくる。

wget http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.1.1%20%28Wien%29/ganglia-3.1.1.tar.gz/download

解凍

tar zxfp ./ganglia-3.1.1

README
./web

どっちもありましたー。

自分は、公開ディレクトリは/var/www/vhosts/配下にしてるのでそうします。

mkdir /var/www/vhosts/ganglia
cp -a ./web/* /var/www/vhosts/ganglia

次はバーチャルホストの設定

ここは各々設定してください


apacheリロード

service httpd configtest
service httpd reload


早速アクセスしてみる。
が、なんか上手く表示されない。。。


phpのファイルを編集したりしないといけない。

とりあえずphpの場所まで移動

cd /var/www/vhosts/ganglia

conf.phpを配置

cp ./conf.php.in ./conf.php
(編集)
$gmetad_root = "/var/lib/ganglia";

version.phpの配置

cp ./version.php.in ./version.php
(編集) 
$majorversion = 3;
$minorversion = 1;
$microversion = 1;
$ganglia_version = "3.1.1";

自分はphpメインの人なのですんなり解決。
こういうのってREADMEに書いとかなくていいのかなー。。。

ブラウザでアクセスしてokなら次。


ここから192.168.1.11で作業。

192.168.1.11にganglia配置

ライブラリを入れる

yum install libconfuse

さっき作ったrpmを持ってきてインストール

rpm -ivh libganglia-3_1_0-3.1.1-1.i386.rpm
rpm -ivh ganglia-gmond-3.1.1-1.i386.rpm
rpm -ivh ganglia-gmond-modules-python-3.1.1-1.i386.rpm

マルチキャストの設定

vi /etc/sysconfig/network-scripts/route-eth1
(追加)239.2.11.71 dev eth1

ネットワーク再起動

service network restart

確認

netstat -rn

gmond.confを書き換える。
太字のとこを書き換えるだけ。

vi /etc/ganglia/gmond.conf

globals {
  daemonize = yes
  setuid = yes
  user = apache
  debug_level = 0
  max_udp_msg_len = 1472
  mute = no
  deaf = no
  host_dmax = 0 /*secs */
  cleanup_threshold = 300 /*secs */
  gexec = no
  send_metadata_interval = 0
}

cluster {
  name = "my cluster"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

ポート開ける

iptables -A INPUT -p tcp --dport 8649 -j ACCEPT

起動

service gmond start

確認

service gmond status

ブラウザでレポート画面にアクセスしてちゃんとグラフがlocalhostと192.168.1.11が表示されてたらok。