注目トピック

Wikiガイド

最近の更新

2018-08-20
2013-10-30
2013-02-06
2011-06-22
2010-08-13
2009-03-27
2008-11-14
2008-11-13
2008-10-01
2008-09-19

EXPRESSSCOPEエンジンを使う / [応用編2] サーバのセンサー情報の取得とグラフ化

<前のページ | 1 | 2 | 3 | 4 | 5 | 次のページ>

データ取得スクリプトの設置

データベースファイルが用意できたら、次はデータを取得するスクリプトです。これもcollect_data.shという名前で用意されていて、少し修正するだけで利用できます。修正する箇所はcreate_rrds.shと同じで、「hostname」の行と、「ipmi_cmd」の行、「rrd_dir」の行です。

$ cat /usr/share/ipmitool/collect_data.sh
#!/bin/bash
#
#  Copyright (c) 2003 Fredrik Ohrn.  All Rights Reserved.
#
#  See the included COPYING file for license details.
#

# Edit the variables

hostname="i110Rc-1h"  ←監視対象サーバのホスト名

ipmi_cmd="/usr/local/bin/ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx"  ←サーバのBMCにアクセスするためのipmitoolコマンド
rrd_dir="/var/www/rrd"  ←データベースファイルを配置するディレクトリ

# No need to edit below this point.

IFS="
"

for line in `eval $ipmi_cmd -c sdr list full` ; do

        IFS=,

        split=($line)

        file="$rrd_dir/$hostname-${split[0]}.rrd"

        rrdupdate "$file" "N:${split[1]}"
done

修正したらまずは手動で実行してみます。

$ /usr/share/ipmitool/collect_data.sh

これでエラーが出力されないことを確認したら、cronに登録して5分間隔で実行されるようにします。

$ crontab -e
*/5 * * * * /usr/share/ipmitool/collect_data.sh

CGIスクリプトの設置

ここまでの作業で、データ取得スクリプトが5分間隔で実行されて、センサー情報がデータベースに記録されるようになりました。最後にCGIスクリプトでデータをグラフ化してWebページに表示します。

ipmitoolには、そのための「create_webpage.sh」と「create_webpage_compact.sh」という2つのスクリプトが付属しています。これらは実際はCGIスクリプトではなく、CGIスクリプトを生成するためのスクリプトです。ここではシンプルなcreate_webpage_compact.shを使うことにします。

まず、create_webpage_compact.shを以下のように修正します。

$ cat create_webpage_compact.sh
#!/bin/bash
#
#  Copyright (c) 2003-2004 Fredrik Ohrn.  All Rights Reserved.
#
#  See the included COPYING file for license details.
#

# Edit the variables

hostname="i110Rc-1h"  ←監視対象サーバのホスト名

ipmi_cmd="/usr/bin/ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx"  ←サーバのBMCにアクセスするためのipmitoolコマンド
rrd_dir="/var/www/rrd"  ←データベースファイルを配置するディレクトリ

# Full path to the rrdcgi executable.
rrdcgi=/usr/bin/rrdcgi  ←rrdcgiコマンドのパス

# Where should rrdcgi store the graphs? This path must be within the
# document root and writable by the webserver user.
img_dir=/var/www/images/graphs  ←グラフ画像を配置するディレクトリ

# Where will the graphs show up on the webserver?
web_dir=/images/graphs  ←グラフ画像ディレクトリのホスト部を除いたURI

# Size of graph area (excluding title, legends etc.)
graph_width=500   ←グラフの横幅(ピクセル)
graph_height=150  ←グラフの縦幅(ピクセル)

# Graphs to include on page
graph_daily=1   ←日間グラフを表示
graph_weekly=0  ←週間グラフを表示
graph_monthly=0 ←月間グラフを非表示

# No need to edit below this point.
……以下省略……

ここでは日間グラフだけを表示するようにしましたが、稼働状況の監視という点からは週間と月間のグラフも表示したほうがよいでしょう(デフォルトでは日間と週間のグラフを表示するようになっています)。

スクリプトを修正したら、スクリプト中で指定した画像置き場のディレクトリを作成してCGIスクリプトがファイルを生成できるよう、ディレクトリのオーナーを変更します。

$ sudo mkdir -p /var/www/images/graphs
$ sudo chown www-data:www-data /var/www/images/graphs

これでスクリプトを実行する準備ができました。このスクリプトは「create_webpage_compact.sh > CGIスクリプトのパス」のように実行します。UbuntuではCGIスクリプトを/usr/lib/cgi-binに置くようにApacheが設定されているので、CGIスクリプトのパスは「/usr/lib/cgi-bin/my_ipmi_graphs_compact.cgi」としました。

なお、/usr/lib/cgi-binにファイルを作成するにはroot権限が必要ですが、「sudo /usr/share/ipmitool/create_webpage_compact.sh > /usr/lib/cgi-bin/my_ipmi_graphs_compact.cgi」と実行すると「Permission denied」エラーが発生します。これは、create_webpage_compact.shスクリプトはroot権限で実行されるものの、リダイレクト以降の部分(> /usr/lib/cgi-bin/my_ipmi_graphs_compact.cgi)が一般ユーザー権限で動いているシェルによって実行されるためです。

この問題を回避するには「sudo -s」でrootシェルを起動して作業を行うか、あるいは一般ユーザーで適当なディレクトリ(/tmpなど)にCGIスクリプトを生成して、それを「sudo mv」で/usr/lib/cgi-binに移動するようにします。

$ ./create_webpage_compact.sh > /tmp/my_ipmi_graphs_compact.cgi
$ sudo mv /tmp/my_ipmi_graphs_compact.cgi /usr/lib/cgi-bin/
$ sudo chmod 755 /usr/lib/cgi-bin/my_ipmi_graphs_compact.sh

最後にスクリプトを実行可能にするためにパーミッションを「755」に変更するのを忘れないようにしてください。

<前のページ | 1 | 2 | 3 | 4 | 5 | 次のページ>


関連記事