Gangliaでモニタリングできるものを増やす

カテゴリ: コンピュータ / 公開日: 2011年8月09日(火曜)02:10 / 投稿者: Tom Goodsun

もちろんサーバーのHDDやメモリ、CPU、ネットワークといったものはデフォルトで取得できるのだが、ウェブの運用とかやってたらApacheのステータスが取得したいところです。
そこで、yumではインストールできない拡張モジュールをインストールして、取得できるグラフの数を増やしてみます。

今回、挑戦したいのはApacheのサーバーステータスからグラフを生成する方法です。
とは言っても、プログラムやスクリプトはあまりかきません。

Apacheのサーバーステータスとは

Apacheはサーバーステータスをウェブインターフェスで確認できるようになっているのです。
普通に使っている限りはあまり使ったことなかったので、さっぱりだったのですが、まずはこちらか設定していきます。

まずは監視対象のウェブサーバーのApacheの設定を以下のように変更します。
※初期設定時のチェック項目にしておくといいかもですね。

$ vi /etc/httpd/conf/httpd.conf

# 1箇所目の記述
#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On ←コメントアウト削除

# 2箇所目の記述
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
# ↓以下のディレクティブはすべてコメントアウト削除
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost ←自身からのアクセスを許可(gmondはこれでアクセスしてきます。)
    Allow from 192.168.1. ←ネットワーク内のマシンからのアクセスを許可(任意)
</Location>

Apacheを再起動します。

$ /etc/init.d/httpd restart

これでhttp://[ホストのアドレス]/server-statusにアクセスするとサーバーステータスが確認できます。
実際はhttp://[ホストのアドレス]/server-status?autoというデータにアクセスしにいきます。

gmond python modulesをインストールして取得できるグラフを増やす

私が使っているEL6系のサーバー(Scientific Linux 6)で以下のようにyumでインストールできるみたいだったのですが、、、

$ yum install ganglia-gmond-python

確かにインストールできのですが、何かモジュールが足らないみたい。。。
考えた末、この状態でGitHubからスクリプトをダウンロードして、インストール先のディレクトリに移すことにしました。

以下のURLからダウンロードして、サーバーにアップします。私の環境がちょっとトリッキー(ってわけでもないのですが、)Samba経由でアップするのですが、webmaster権限でアップされていまうのでインストール時にちょっとフォローが必要です。
https://github.com/ganglia/gmond_python_modules

ひとまず解凍してみます。

$ cd /home/webmaster/ ←とりあえずここにアップしてみましたので、、、
$ tar xvzf ganglia-gmond_python_modules-f7b58fa.zip
$ cd ganglia-gmond_python_modules-f7b58fa/

解凍された中身は非常にわかりやすいです。

モジュール名/
 conf.d/*.conf
 graph.d/*.php
 python_modules/*.py

ということで、簡単インストールするために以下のようなシェルスクリプトを作りました。
ちなみに32bit、64bit判定しているのはScientific Linux 6は32bit、CentOS 6を64bitでインストールしていたから、両方で使えるようにするためです。

$ vi ganglia-python-install.sh
#!/bin/bash

PYTHON_MODULE_DIR="/home/webmaster/ganglia-gmond_python_modules"

# Define target directories
# Check architecture
if [ "`uname -m`" = "x86_64" ];
then
        MODULE_DIR="/usr/lib64/ganglia/python_modules/"
else
        MODULE_DIR="/usr/lib/ganglia/python_modules/"
fi;
CONF_DIR="/etc/ganglia/conf.d/"
GRAPH_DIR="/usr/share/ganglia/graph.d/"

# Install python modules
if [ -d $MODULE_DIR ];
then
        cp -upv $PYTHON_MODULE_DIR/*/python_modules/*.py $MODULE_DIR
        chown root:root $MODULE_DIR*.py
        chmod 644 $MODULE_DIR*.py
fi;

# Install config files
if [ -d $CONF_DIR ];
then
        cp -upv $PYTHON_MODULE_DIR/*/conf.d/*.conf $CONF_DIR
        chown root:root $CONF_DIR*.conf
        chmod 644 $CONF_DIR*.conf
fi;

# Install graph PHP files
if [ -d $GRAPH_DIR ];
then
        cp -upv $PYTHON_MODULE_DIR/*/graph.d/*.php $GRAPH_DIR
        chmod 775 $GRAPH_DIR*.php
fi;

実行権限を与えて、実行してみましょう。

$ chmod 755 ganglia-python-install.sh
$ ./ganglia-python-install.sh

ということで、これをgmondをインストールしているサーバーで実行します。
つまりですね、wgetでpython modulesを取ってきて、解凍してインストールするところまでこのシェルで完結できればいいんじゃね?ってことですよね。
それはまた後日にします。

これでgmondを再起動します。

$ /etc/init.d/gmond restart

しばらくするとノード別のページで「apache metrics」という項目が出てくるはずです。

GangliaでApacheステータスをグラフ化してみた。

この方法、memcacheやmysqlなども実は用意されており、おそらく行けるはずなんです。
私はまだ見てないのですが、/etc/ganglia/conf.d/あたりを見れば何か糸口が見えてくるはずです。

でもまぁ、こんな面倒くさい方法でなくてもできるんでしょうが、私の力量ではできませんでした。ひとまずApache Benchで適当に叩いてみて、それなりのグラフ出てるみたいなので、よしとしておきましょう。

今日はここまで。