Gangliaでモニタリングできるものを増やす
もちろんサーバーの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」という項目が出てくるはずです。
この方法、memcacheやmysqlなども実は用意されており、おそらく行けるはずなんです。
私はまだ見てないのですが、/etc/ganglia/conf.d/あたりを見れば何か糸口が見えてくるはずです。
でもまぁ、こんな面倒くさい方法でなくてもできるんでしょうが、私の力量ではできませんでした。ひとまずApache Benchで適当に叩いてみて、それなりのグラフ出てるみたいなので、よしとしておきましょう。
今日はここまで。