Cactiのインストール RRDToolを利用したサーバ監視ツール

CactiとはRRDToolを利用したサーバ監視ツールで、サーバ負荷やネットワークなどの状況をグラフ化して時系列に表示させることができるwebツールです。
[参考記事] ログをリアルタイムに表示させて監視する方法
[参考記事] PHPでロードアベレージを表示させる方法
[参考記事] サーバの負荷や使用率などを見るコマンドの一覧
[参考記事] 負荷が高いときには503エラーを返す方法
[参考記事] HEADリクエストを排除してサーバ負荷を軽減させる

Cacti公式サイト
RRDTool公式サイト

使用するには
RRDTool
PHP
webサーバ(ApacheやIIS)
MySQL
が必要です。

MRTGを利用したトラフィック(ネットワークの負荷)を監視をするにはSNMP,SNMPDが必要です。

インストールはすべてyumで可能です。
[参考記事] Apacheをyumでインストールする
[参考記事] PHPをyumでインストールする
[参考記事] MySQLのインストール

RRDToolのインストール

yum install rrdtool

SNMPのインストール

yum install net-snmp

Cactiのインストール

yum install cacti

SNMPの設定ファイルは/etc/snmp/snmpd.confです。必要があれば設定を変更します。

SNMPDを起動します。

/etc/rc.d/init.d/snmpd start

OS再起動時にも自動でSNMPDが立ち上がるように設定します。

chkconfig snmpd on

MySQLにCacti用のデータベース、ユーザを作成します。
データベース名 cacti
ユーザ名 cactiuser
とします。

# mysql --u root -p mysql
mysql> create database cacti;
mysql> grant all on cacti.* to cactiuser@localhost identified by '【パスワード】';
mysql> flush privileges;
mysql> \q

Cactiの初期データをデータベースに登録します。
Cactiインストール時にcacti.sqlが保存されるので、そのSQLを取り込みます。

cacti.sqlファイルを探します。

# updatedb
# locate cacti.sql
/usr/share/doc/cacti-0.8.7g/cacti.sql

cacti.sqlファイルを取り込みます。

# mysql -u root -p -D cacti < /usr/share/doc/cacti-0.8.7g/cacti.sql

Cactiをyumでインストールすると、/usr/share/cacti/以下にインストールされます。
このディレクトリ以下に設定ファイルがあるので、MySQLの接続情報の設定をします。

include/config.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";

実際にはこのconfig.phpは/etc/cacti/db.phpのシンボリックリンクになっていて、権限はユーザ名cactiグループ名apacheになっています。

次にApacheの設定をします。 Cactiをインストールすると/etc/httpd/conf.d/cacti.confが作成されますが、アクセス制限が127.0.0.1のみアクセス可能になっています。 ローカル以外からアクセスする場合にはアクセス制限を修正します。

vi /etc/httpd/conf.d/cacti.conf

Alias /cacti    /usr/share/cacti
<Directory /usr/share/cacti/>
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
# ここにアクセス可能なIPを設定します。
        Allow from xxx.xxx.xxx.xxx
</Directory>

設定を変更したらApacheを再起動します。

/etc/init.d/httpd restart

この設定だとAliasを使用しているため、バーチャルホストを使用して複数のドメインを管理している場合、どのドメインからもアクセスできてしまうので、シンボリックリンクによって指定する方法もあります。

ln -s /usr/share/cacti /var/www/html/cacti

これで次のアドレスでサーバにアクセスするとcactiのインストール画面が表示されます。
http://www.example.com/cacti/

ここでインストール画面が表示されず、次のようなエラーが出るときにはMySQLに接続できていません。

FATAL: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'

include/config.phpやMySQLの設定を確認します。
それでも同じエラーが出る場合は、一旦include/config.phpのhostnameの設定をlocalhost以外にしてみてください。
このときも

MySQL server on 'localhost'

と出る場合には、include/config.phpが読み込めていません。
include/config.phpの権限設定を確認してApacheからアクセスできるようにします。
Cactiをyumでインストールするとinclude/config.phpの実体が/etc/cacti/db.phpなので、注意してください。

うまく設定できると次のような画面が出ます。


新規インストールを選択します。


各パス設定を確認します。


インストールが完了すると、ログイン画面になります。
初期アカウント: admin
初期パスワード: admin


ただこのとき、まだグラフは表示されません。(これは正常です。)

グラフを生成するにはpoller.phpを実行する必要があります。
poller.phpの実行にはroot権限で実行する方法とcactiuserを作成して実行する方法があります。

cacti用のユーザを作成する場合

useradd cactiuser

rraディレクトリとlogディレクトリに書き込み権限を与えます。

chown -R cactiuser:cactiuser rra/ log/

cactiuserになり、poller.phpが実行できることを確認します。

# su cactiuser
$ /usr/bin/php /usr/share/cacti/poller.php

5分ごとにpoller.phpが実行されるようにcronを設定します。
cronの設定は次の方法のいずれか1つを指定します。

cacti用のcronを作成するには/etc/cron.d/cactiを作成して設定します。

# vi /etc/cron.d/cacti

*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

rootのcronに指定するには、実行権限をcactiuserに指定して設定します。

crontab -e
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1

rootユーザの状態で、cactiuserのcronに指定するには次のコマンドで指定できます。

crontab -u cactiuser -e
*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

rootでpoller.phpを実行すると、ログファイルなどがroot権限になってしまうので、cactiuserで上書きできなくなるので注意してください。

標準でpoller.phpはcmd.phpを使用しますが、このcacti-spineを使用するとpoller.phpの実行が早くなります。
5分に1回実行するものなので、より早いものを使用したほうがいいです。

yumでインストールすることができますが、SNMPとのバージョンが合わなくて次のような実行エラーが出ることがあります。

SPINE: Poller[0] ERROR: SNMP Library Version Mismatch (5.3.1 vs 5.3.2.2) (Spine parent)

標準のリポジトリにはないので、サードパーティのインストールになります。
[参考記事] Repoforge(RPMForge) 基本リポジトリで提供されていないパッケージのyumインストール

yum install cacti-spine

バージョンが合わない場合にはソースから最新のcacti-spineをインストールします。

ソースからインストールするときにはmysql-develが必要です。

$ cd /usr/local/src
$ wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7g.tar.gz
$ tar -zxvf cacti-spine-0.8.7g.tar.gz
$ cd cacti-spine-0.8.7g
# ./configure
# make
# make install

configureで次のようなエラーが出るときにはmysql-develがインストールされていません。

configure: error: Cannot find MySQL headers.

cacti-spineにもMySQLへの接続設定をします。

vi /etc/spine.conf

DB_Host         localhost
DB_Database     cacti
DB_User         cactiuser
DB_Pass         cactiuser
DB_Port         3306

web画面上でcacti-spineを使用する設定をします。
Setting → Pathタブでspineのパスを設定します。


pollerの実行をcmd.phpからspineに変更します。


グラフが生成されないときはログファイルlog/cacti.logを確認します。

またSNMPが実行できるか確認します。

$ snmpget -v 1 -c public 127.0.0.1  .1.3.6.1.4.1.2021.11.50.0
$ snmpwalk -c  public 127.0.0.1 .1.3.6.1.4.1.2021.2.1 
$ snmpget -v 1 -c public 127.0.0.1  .1.3.6.1.4.1.2021.11.50.0
$ snmpwalk -v 1 localhost -c private

次のエラーが出るときにはMIBが設定されていません。

$ snmpget -v 1 -c public 127.0.0.1  .1.3.6.1.4.1.2021.11.50.0
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: UCD-SNMP-MIB::ssCpuRawUser.0

関連記事

スポンサーリンク

拡張リポジトリEPELを使用する方法(インストール)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る