トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Ganglia

サーバ監視ソフトGangliaとRRDToolのインストールメモ


 今回の目標

  • サーバ管理業務において,クラスタリングを行ったPCの個別,集約したパフォーマンスを測定する為の監視ツール,Gangliaのインストールメモをアップさせて頂きます。

  • 利用ソフト:RRDTool,Ganglia

  • RRDToolとは,時間による値の変化を記録するためのデータベースです。
    • 簡単に言えば,MRTGと呼ばれるネットワーク帯域のグラフ化ツール(MRTG)からSNMPを除いたものです。
    • 詳しい説明は,次のURLをご覧ください。
    • http://oss.oetiker.ch/rrdtool/


 作業内容

  • RRDToolとGnagliaのインストール
  • 動作環境:ScientificLinux4.1,多くをパッケージで対応。

 RRDToolのインストール(cactiのイントールメモを流用しました。)



  • 上記rrdtool-1.2.23.tar.gzをインストールする前に,各種依存関係のあるライブラリを登録してから最後にインストールします。
  • 手順は,次のとおり
    • (詳細記述は,http//oss.oetiker.ch/rrdtool/doc/rrdbuild.en.htmlにあります。)

  • (1)まず最初に作業ディレクトとインストール先を指定します。
BUILD_DIR=/tmp/rrdbuild
INSTALL_DIR=/usr/local/rrdtool-1.2.19

例:
BUILD_DIR=/usr/local/src/rrdtool-1.2.23
INSTALL_DIR=/usr/local/rrdtool

  • (2)zlibのインストール
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
tar  zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install

  • (3)libpngのインストール
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.10.tar.gz
tar zxvf libpng-1.2.10.tar.gz
cd libpng-1.2.10
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install

  • (4)freetypeのインストール
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.1.10.tar.bz2
tar jxvf freetype-2.1.10.tar.bz2
cd freetype-2.1.10
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install

  • (5)libart_lgplのインストール
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libart_lgpl-2.3.17.tar.gz
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install

  • (6)その他
ranlib $BUILD_DIR/lb/lib/*.a

IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS

  • (7)最後に出来上がったRRDTOOLのインストール
cd $BUILD_DIR/rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
make clean
make
make install

例:
cd $BUILD_DIR/rrdtool-1.2.23
./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl
make clean
make
make install


  • 途中,エラーが出たので,以下の作業を行いました。

エラー内容:
configure: error: C++ preprocessor "/lib/cpp" fails sanity checkとエラーが出たので,
# yum install gcc-c++ gcc
インストールしておきます。

 Gangliaのインストール


Gangliaはwebサーバ側にgmetadをクラスタ側には,最低,ganglia-monitor(gmond)をインストールする必要があります。

Webサーバ側



  • (1)まず最初に作業ディレクトに移動とプログラムの展開を行います。
# mv ganglia-3.0.5.tar.gz /usr/local/src
# cd /usr/local/src
# tar  zxf ganglia-3.0.5
# cd ganglia-3.0.5

  • (2)./configureを行います。
# ./configure --help でまずオプションを確認して下さい。
 --with-gmetad をつけることにより,Webサーバ側(クラスタ側を監視することができる)になります。
        デフォルトでは,インストールされませんので,監視対象となるのみです。(注意)

# ./configure LDFLAGS="-L/usr/local/rrdtool/lib" --with-gmetad --enable-gexec

  • (3)make,make installを行います。
# make

# make install

  • (4)/usr(初期値)以下に次のものがインストールされているか確認して下さい。
/usr/bin/gstat
/usr/bin/gmetric
/usr/sbin/gmond
/usr/sbin/gmetad

  • (5)テストを行います。
# ./gmond
これにより,gangliaの監視デーモンが起動しますので,次のコマンドを入力して下さい。
# telnet localhost 8649
正常に起動しておりましたら,localhostの情報がXMLデータで画面に表示されます。

  • (6)ソースインストールした場合には,次のスクリプトをコピーします(gmondとgmetad)。
まず,ソース先にディレクトリを移動させます。
# cd /usr/local/src/ganglia-3.0.5

  • (7)gmond
gmondのデフォルト設定ファイルを作成し/etcにコピー
# cd gmond
# ./gmond --default_config > gmond.conf
# cp gmond.conf /etc/

起動スクリプトもコピー

# cp ./gmond/gmond.init /etc/rc.d/init.d/gmond
# chkconfig --add gmond
# chkconfig --list gmond
 gmond		0:off 1:off 2:on 3:on 4:on 5:on 6:off
# /etc/rc.d/init.d/gmond start
 Starting GANGLIA gmond:	[OK]

  • (8)gmetad
gmetadディレクトリに行き,設定ファイルと起動スクリプトをコピー。

# cp gmetad.conf /etc/
# cp gmetad.init /etc/rc.d/init.d/gmetad

gmetad.confの方を変更してもよいがここではデフォルト値を使うとして,/var/lib/ganglia/rrdsというフォルダを作り,
所有者をnobody:nobodyに変更する。

# cd /var/lib
# mkdir ganglia
# cd ganglia
# mkdir rrds
# chown nobody:nobody rrds

起動スクリプトをコピー

# cp ./gmetad/gmetad.init /etc/rc.d/init.d/gmetad
# chkconfig --add gmetad
# chkconfig --list gmetad
  gmetad 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# /etc/rc.d/init.d/gmetad start
  Starting GANGLIA gmetad:	[OK]

  • (9)PHPプログラムで書かれたWebフロントエンドプログラムをソースからWebディレクトリへコピー
# cp /usr/local/src/ganglia-3.0.5/web/* /var/www/html/ganglia
ScientificLinux4.1では,Web公開ディレクトリは,/var/www/htmlでしたが,利用されるOSにより相違しますので,注意。

  • (10)/var/www/html/ganglia/conf.phpの記載内容を変更する。
# vi /var/www/html/ganglia/conf.php

22行目あたりにある
define("RRDTOOL","/usr/local/rrdtool/bin/rrdtool");と変更する。
rrdtoolのディレクトリを示す。ここでは,/usr/local/rrdtool/bin/rrdtoolとなります。	

  • (11)Webブラウザを開きテストを行う。
http://localhost/ganglia
ここで,Gangliaの監視項目が表示されたらOK

クラスタ側(監視される側)

  • 上記のうち,最低,gmondを監視されるPCにインストールする必要があります。
    • 上記Webサーバ側設定(2)で./configureオプションのうち,--with-gmetadを追加せずに行いますと,gmondのみとなります。


 最後に

  • これでRRDToolとGangliaは,インストールが完了しました。
    • もう少し活用し,情報がたまりましたら,追記させて頂きます。

 設定資料

  • テスト環境のgmetad.conf(/etc/gmetad.conf)

# This is an example of a Ganglia Meta Daemon configuration file
#                http://ganglia.sourceforge.net/
#
# $Id: gmetad.conf 667 2006-07-20 08:49:41Z knobi1 $
#
#-------------------------------------------------------------------------------
# Setting the debug_level to 1 will keep daemon in the forground and
# show only error messages. Setting this value higher than 1 will make
# gmetad output debugging information and stay in the foreground.
# default: 0
# debug_level 10
#
#-------------------------------------------------------------------------------
# What to monitor. The most important section of this file.
#
# The data_source tag specifies either a cluster or a grid to
# monitor. If we detect the source is a cluster, we will maintain a complete
# set of RRD databases for it, which can be used to create historical
# graphs of the metrics. If the source is a grid (it comes from another gmetad),
# we will only maintain summary RRDs for it.
#
# Format:
# data_source "my cluster" [polling interval] address1:port addreses2:port ...
#
# The keyword 'data_source' must immediately be followed by a unique
# string which identifies the source, then an optional polling interval in
# seconds. The source will be polled at this interval on average.
# If the polling interval is omitted, 15sec is asssumed.
#
# A list of machines which service the data source follows, in the
# format ip:port, or name:port. If a port is not specified then 8649
# (the default gmond port) is assumed.
# default: There is no default value
#
# data_source "my cluster" 10 localhost  my.machine.edu:8649  1.2.3.5:8655
# data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651
# data_source "another source" 1.3.4.7:8655  1.3.4.8

data_source "my cluster" localhost

#
# Round-Robin Archives
# You can specify custom Round-Robin archives here (defaults are listed below)
#
# RRAs "RRA:AVERAGE:0.5:1:244" "RRA:AVERAGE:0.5:24:244" "RRA:AVERAGE:0.5:168:244" "RRA:AVERAGE:0.5:672:244" \
#      "RRA:AVERAGE:0.5:5760:374"
#

#
#-------------------------------------------------------------------------------
# Scalability mode. If on, we summarize over downstream grids, and respect
# authority tags. If off, we take on 2.5.0-era behavior: we do not wrap our output
# in <GRID></GRID> tags, we ignore all <GRID> tags we see, and always assume
# we are the "authority" on data source feeds. This approach does not scale to
# large groups of clusters, but is provided for backwards compatibility.
# default: on
# scalable off
#
#-------------------------------------------------------------------------------
# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: Unspecified
# gridname "MyGrid"
#
#-------------------------------------------------------------------------------
# The authority URL for this grid. Used by other gmetads to locate graphs
# for our data sources. Generally points to a ganglia/
# website on this machine.
# default: "http://hostname/ganglia/",
#   where hostname is the name of this machine, as defined by gethostname().
# authority "http://mycluster.org/newprefix/"
#
#-------------------------------------------------------------------------------
# List of machines this gmetad will share XML with. Localhost
# is always trusted.
# default: There is no default value
# trusted_hosts 127.0.0.1 169.229.50.165 my.gmetad.org
#
#-------------------------------------------------------------------------------
# If you want any host which connects to the gmetad XML to receive
# data, then set this value to "on"
# default: off
# all_trusted on
#
#-------------------------------------------------------------------------------
# If you don't want gmetad to setuid then set this to off
# default: on
# setuid off
#
#-------------------------------------------------------------------------------
# User gmetad will setuid to (defaults to "nobody")
# default: "nobody"
# setuid_username "nobody"
#
#-------------------------------------------------------------------------------
# The port gmetad will answer requests for XML
# default: 8651
# xml_port 8651
#
#-------------------------------------------------------------------------------
# The port gmetad will answer queries for XML. This facility allows
# simple subtree and summation views of the XML tree.
# default: 8652
# interactive_port 8652
#
#-------------------------------------------------------------------------------
# The number of threads answering XML requests
# default: 4
# server_threads 10
#
#-------------------------------------------------------------------------------
# Where gmetad stores its round-robin databases
# default: "/var/lib/ganglia/rrds"
# rrd_rootdir "/some/other/place"


by 有限会社ケイアイエム(http://www.keiaiemu.com/)