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

RRDTOOLとCacti

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


 今回の目標

 サーバ管理業務において,現時点(一時点)のサーバ稼動状況を監視するNagiosを現在導入しております。
 しかし,時系列の趨勢を確認する為に,下記のソフトを動作確認マシンに導入致しました。
 そのインストールメモをアップさせて頂きます。

  • 利用ソフト:RRDTool,Cacti

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

 Cactiとは,Webベースのグラフ生成ツールです。
 Webブラウザを使用し,SNMPやスクリプトからのデータをグラフ化します。
 Cacti内部でRRDTOOLを呼び出して利用しています。
 詳しい説明や綺麗なグラフは,次のURLをご覧下さい。http://www.cacti.net/index.php

 作業内容

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

 RRDToolのインストール


ここでは,rrdtool-1.2.23.tar.gzを利用。
入手先(http://oss.oetiker.ch/rrdtool/pub/

上記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
インストールしておきます。

  • Cactiには,次のものが必要となりますので,順次,インストール。
必要なもの(各種パッケージでインストールしました)
・perl-Crypt-DES
・perl-Net-SNMP
・php
・php-snmp
・php-mysql
・net-snmp等

MySQLのインストール

# yum install mysql*

参考:
起動方法
/etc/init.d/mysql start
/etc/init.d/mysql stop

# /usr/bin/mysql -u root
(rootのパスワードは,初期では設定されていない。設定するには,# /usr/bin/mysql -u root -pで設定可能)
mysql>

ここからデータベースを作成する。


PHPのインストール

# yum install php php-mysql php-snmp

※参考:PHPをソースからインストールするには,
PHPのソースファイルをhttp://www.php.net/downloads.phpからダウンロードします。 

# tar xvfz php-5.2.0.tar.gz
# cd php-5.2.0
# ./configure --disable-debug --with-apxs2=/usr/local/apache2/bin/apxs 
--enable-trans-sid --with-iconv --enable-mbstring --enable-zend-multibyte
--without- mysql --with-mysqli

configureオプション
--with-apxs2=/usr/local/apache2/bin/apxs
apxsコマンドのパスを指定します(Apacheが/usr/localにインストール されている場合の例)
--with-iconv --enable-mbstring --enable-zend-multibyte
マルチバイト文字に対応させます
--without-mysql
MySQL 4.1以上の拡張MySQL APIに対応させるため,MySQL 4.0以下向けの標準MySQL APIには対応させません
--with-mysqli
MySQL 4.1以上に対応した拡張MySQL APIに対応させます。ビルドに失敗する場合はmysql_configコマンドのパスを指定します

次に,makeを実行して正常に終了したら,インストールを行います。

# make
# make install

以上の作業で「/usr/local/apache2/modules/libphp5.so」が作成されます。

PHPの動作には,設定ファイル(php.ini)が必要となります。ソースアーカイブ中のひな型を指定のディレクトリにコピーします。

# cp php.ini-dist /usr/local/lib/php.ini

net-snmpのインストール

# yum install net-snmp*

その他もyumでインストールしました。


 Cactiのインストール

 (インストール方法記載URL http://www.cacti.net/downloads/docs/html/install_unix.html

  • Cactiのソースプログラムを取得
http://www.cacti.net/download_cacti.php

  • Cactiのプログラム展開作業
$ tar xzvf cacti-0.8.6j.tar.gz(今回は,0.8.6j版を利用しました。)

  • Cacti用データベース(MySQL)の作成
$ mysqladmin --user=root create cacti

  • Cacti用初期データベースのインポート
$ mysql cacti < cacti.sql

  • オプション作業:MySQLでのユーザ名とパスワードの作成方法(cacti用)
$ mysql --user=root mysql
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'データベースパスワード';
mysql> flush privileges;

  • include/config.php(/usr/local/cacti-0.8.6j/)の編集により,cacti接続用のMySQLのユーザ,パスワード,データベース名を決める。
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "データべースcacti用データベースパスワード(上記で設定したもの)";

  • rra(グラフ用ディレクトリ),logディレクトリに適切にパーミッションを設定する。
$ chown -R cactiuser:cactiuser cacti-0.8.6j/
$ chown -R cactiuser:cactiuser rra/ log/(たぶん,これは不要)

  • 一定時間にデータを取得するようにcronを設定(vi /etc/crontab)
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1

  • Web公開用にシンボリックリンクをはる。
# ln -s /usr/local/cacti-0.8.6j/ /var/www/html/cacti

  • ブラウザを開き,Cactiを確認
http://your-server/cacti/
例:
http://127.0.0.1/cacti/

ログイン名とパスワードは,ともに,”admin”
すぐにパスワードを変更したのち,適切に各種設定を行って下さい。

  • 初期設定
最初のアクセス時にだけ,ウィザード画面が表示されます。インストールタイプは,NewInstallを選択。

パスが表示されますので,うめていきます(すべて埋めないと表示されないものが出来てきます)。
もし,ディレクトリ表示で”NOTFOUND”ならば,インストールされているかどうか確認してください。
(例:RRDToolのバイナリは,/usr/local/rrdtool/bin/rrdtoolとなります。)

SNMP Utility Versionは,[NET-SNMP 5.X],RRDTool Utility Versionでは,[RRDTool 1.2.x]を選択する。

  • SNMP設定ファイルの編集
snmp.confを開いて(vi /etc/snmp/snmp.conf),55行目あたりに追加します。

#make at least snmpwalk -v 1 localhost -c public system fast again
#name incl/excl subtree mask(optional)
view systemview included .1  ←これを追加
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

  • ハードディスクの空き容量を監視するには,snmpd.confの314行目あたりを修正
/etc/snmp/snmpd.conf 314行目

#disk PATH[MIN=100000}
#
#PATH: mount path to the disk in question.
#MIN: Disks with space below this calue will have the Mib's errorFlag set.
#	Default value = 100000.
# check the / partition and make sure it contains at least 10 megs.

disk /		100000
disk /home 	100000
disk /var	100000

  • snmpdを起動します。
#/etc/init.d/snmpd restart

  • snmpwalkコマンドを入力して結果が返ってくれば,問題なく動作しています。
$ snmpwalk -v 2c -c public localhost|head

ここで,community名にpublicを使っていますが,セキュリティ上,ほかのものに変更するのがよい。

  • トラブルシューティング
データ収集スクリプトの動作確認
# php /usr/local/cacti-0.8.6j/poller.php

ここで,次のように出力される場合はデータ収集に失敗しているので,php.iniでregister_argc_argv = Onと変更する必要があります。

# php /usr/local/cacti-0.8.6j/poller.php
Content-type: text/html
X-Powered-By: PHP/4.3.8
<br><strong>This script is only meant to run at the command line.</strong>dragon


 最後に

  • これでRRDToolとCactiは,インストールが完了しました。もう少し凝った使い方をするには,各種設定箇所を設定する必要があります。

・データの取得は,5分間隔(グラフに反映されるまで時間がかかります)
・/usr/local/cacti-0.8.6j/poller.phpや*.phpなものの実行権限がついていない場合もあるので,注意(chmod設定も必要)。
・snmp.conf設定が慣れるまで難しい。snmp.confの書き方等を習得する必要があります。(参考URLhttp://k3nw.com/linux_netsnmp.php)

  

 トラブルシューティング


サンプル1.cactiのpollerがタイムアウトする

  • poller.phpがタイムアウトしてしまってグラフが更新されないようになってしまいました。ログを見ると下記のようなログが大量に残っています。
    • 07/26/2006 05:40:01 PM - POLLER: Poller[0] Maximum runtime of 296 seconds exceeded. Exiting.

  • このような症状が発生しました。よって,Cacti-0.8.6j公式パッチを適用することが適切と判断し,以下の手順によりパッチを当てました。

  • 手順:
    • まず,/user/local/cacti-0.8.6j/をカレントディレクトにしてから,以下のパッチをコピー&ペーストして下さい。

wget http://www.cacti.net/downloads/patches/0.8.6j/ping_php_version4_snmpgetnext.patch
wget http://www.cacti.net/downloads/patches/0.8.6j/tree_console_missing_hosts.patch
wget http://www.cacti.net/downloads/patches/0.8.6j/thumbnail_graphs_not_working.patch
wget http://www.cacti.net/downloads/patches/0.8.6j/graph_debug_lockup_fix.patch
wget http://www.cacti.net/downloads/patches/0.8.6j/snmpwalk_fix.patch
patch -p1 -N < ping_php_version4_snmpgetnext.patch
patch -p1 -N < tree_console_missing_hosts.patch
patch -p1 -N < thumbnail_graphs_not_working.patch
patch -p1 -N < graph_debug_lockup_fix.patch
patch -p1 -N < snmpwalk_fix.patch



サンプル2.Windows機器にSNMPサービスを追加する。


  • 監視対象のWindows側にもSNMPサービスをインストールしておく必要があります。
  • コントロールパネル−プログラムの追加と削除−Windowsコンポーネントの追加と削除でSNMPサービスを追加する。

  • 監視されるLinux側にもNet-SNMPのインストールが必要です。




 cactiのログインパスワード忘れたので,調べてみました。


「初期データ作成用SQL/usr/share/doc/cacti-0.8.6h/cacti.sql)

  • アカウント作成部分のSQL
    • INSERT INTO user_auth VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',0,'Administrator','on','on','on','on','on',1, 1,1,1,1);
    • INSERT INTO user_auth VALUES (3,'guest','43e9a4ab75570f5b',0,'Guest Account','on','on','on','on','on',3,1,1,1,1);

ここの「21232f297a57a5a743894a0e4a801fc3」が「admin」という文字列の暗号化後だと知ってるので、この値でDBのuser_authテーブルのid=1の列のpassword列の値をupdate文を書いて上書きした。

adminというパスワードに更新されて無事ログインできた。」
を参考にして試してみました。
参考URL:http://d.hatena.ne.jp/susatadahiro/20061025


# mysql cacti -u root -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 133532 to server version: 4.1.20

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> update user_auth set password='21232f297a57a5a743894a0e4a801fc3';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0



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