がらくたネット


Cactiについて

Cactiについて

http://www.cacti.net/

RRDtoolベースのネットワークグラフ描画ソフト

必要なRPMや設定

  • httpd
  • php
  • php-mysql
  • php-snmp
  • mysql
  • mysql-server
  • net-snmp
  • phpでmysqlとsnmpが利用可能になっていること
  • php.iniでsession.save_pathが/tmpになっていること
  • php.iniでfile_uploadsがonになっていること(templateのimportを利用したい場合)

0.8.7e

ソースファイルは/usr/local/src/cactiに保存

本体とOfficialPathをダウンロード
 
cd /usr/local/src; mkdir cacti; cd cacti
wget http://www.cacti.net/downloads/cacti-0.8.7e.tar.gz
wget http://www.cacti.net/downloads/patches/0.8.7e/cli_add_graph.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/snmp_invalid_response.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/template_duplication.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/fix_icmp_on_windows_iis_servers.patch
wget http://www.cacti.net/downloads/patches/0.8.7e/cross_site_fix.patch
 
tar zxf cacti-0.8.7e.tar.gz
cd cacti-0.8.7e
patch -p1 -N < ../cli_add_graph.patch
patch -p1 -N < ../snmp_invalid_response.patch
patch -p1 -N < ../template_duplication.patch
patch -p1 -N < ../fix_icmp_on_windows_iis_servers.patch
patch -p1 -N < ../cross_site_fix.patch

MySQLの準備

  • DB名はcacti
  • DBユーザ名はcactiuser
  • DBユーザパスワードは“
  • cactiuserはlocalhostからのみ接続可能

mysqladmin -u root --password=<rootのパスワード> create cacti
mysql -u root --password=<rootのパスワード> cacti < cacti.sql
mysql -u root --password=<rootのパスワード>
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '********';
mysql> flush privileges;

include/config.phpを適切に編集

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

0.8.7.dインストール

ソースファイルは/usr/local/src/cactiに保存することにする

# cd /usr/local/src; mkdir cacti; cd cacti
# wget http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz
# tar zxvf cacti-0.8.7d.tar.gz
# wget http://www.cacti.net/downloads/patches/0.8.7d/ping_timeout.patch
# wget http://www.cacti.net/downloads/patches/0.8.7d/graph_search.patch
# wget http://www.cacti.net/downloads/patches/0.8.7d/page_length_graph_view.patch
# wget http://www.cacti.net/downloads/patches/0.8.7d/snmp_string_issue_with_rrdtool_creation.patch
# cd cacti-0.8.7d
# patch -p1 -N < ../ping_timeout.patch
# patch -p1 -N < ../graph_search.patch
# patch -p1 -N < ../page_length_graph_view.patch
# patch -p1 -N < ../snmp_string_issue_with_rrdtool_creation.patch

MySQLの準備

  • DB名はcacti
  • DBユーザ名はcactiuser
  • DBユーザパスワードは“
  • cactiuserはlocalhostからのみ接続可能

# mysqladmin -u root -p create cacti
# mysql -u root -p cacti < cacti.sql
# mysql -u root -p
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '********';
mysql> flush privileges;

include/config.phpを適切に編集

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

rraとlogディレクトリの権限設定、webサーバの実行ユーザapacheを指定

# chown -R apache rra log

cactiディレクトリを移動

# cd ../
# mv cacti-0.8.7d /var/www/html/cacti

本来この次にcrontabにpoller.phpを登録する

# vi /etc/crontab
*/5 * * * * apache php /var/www/html/cacti/poller.php > /dev/null 2>&1

ブラウザで接続して設定する http://[FQDN]/cacti/

rrdtoolのパスが異なっている場合は修正する

デフォルトのadmin/adminでログインする

パスワード変更が表示されるので必ずパスワードを変更しておく

cacti本体のインストールは完了

cacti側の設定で、rrdtoolのバージョンを適切に変更する

この後、spineをインストールしてcacti側の設定を変更する

その後、Pluginをインストールしてcacti側の設定を変更する

cactiのアップデート

0.8.6cから0.8.7bの備忘録

MySQL DBの保存
 # mysqldump -l --add-drop-table cacti > mysql.cacti
旧ディレクトリの保存
 # mv /home/cacti /home/cacti.old
新ファイルのインストール
 # wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz
 # tar zxvf cacti-0.8.7b.tar.gz
 # mv cacti-0.8.7 /home
 # mv /home/cacti-0.8.7 /home/cacti
パーミッション設定
 # chown -R apache: /home/cacti
 # chmod 777 /home/cacti/{rra,log}
cacti設定
 # cd /home/cacti
 # vi include/config.php
 $database関連を修正
 # cp -p ../cacti.old/rra/* rra
 # cp -u ../cacti.old/scripts/* scripts
 # cp -u -R ../cacti.old/resource/* resource
cactiのTOPページにアクセスするとアップデート画面になるので指示に従い実行
データベースの内容がアップデートされる

spineのインストール

spineはcactiのDaemonプログラム

Spine Configure Option 0.8.7c

0.8.7cのインストール

spineの0.8.7cはconfigureスクリプトにバグ?がありそのままでは動かない

  1. パーミッションが落とされている
  2. 0.8.7aと0.8.7c-bata2の差分情報が入ったままになっている

これらを解決してから実行する

デフォルトでは/usr/local/spineにインストールされる

# cd /usr/local/src/cacti
# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7c.tar.gz
# tar zxvf cacti-spine-0.8.7c.tar.gz
# cd cacti-spine-0.8.7c
# cp configure configure.org
# vi configure
9箇所修正
# chmod 755 ./configure
# ./configure
# make
# make install
 
# cd /usr/local/spine/etc
# cp spine.conf.dist spine.conf
# vi spine.conf
適宜修正
DB_Host         localhost
DB_Database     cacti
DB_User         cactiuser
DB_Pass         Drib7355
DB_Port         3306

インストール後、cactiの設定変更

  • console→Settings→PollerからPooler Typeをspineに変更する
  • console→Settings→PathsからSpine Poller File Pathを/usr/local/spine/bin/spineと設定する

修正箇所

<<<<<<< .mine   ←行削除
何がし       ←行削除
=======      ←行削除
何がし
<<<<<<< .r4885   ←行削除

この.mineから.r4885を1セットと数えて合計9セットある箇所を修正する

0.8.7aのインストール

0.8.7bにした時にspineを導入してみた

 # wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7a.tar.gz
 # tar zxvf cacti-spine-0.8.7a.tar.gz
 # cd cacti-spine-0.8.7a
 # ./configure
 # make
 # make install
 # cd /usr/local/spine
 # vi etc/spine.conf
 $database関連を修正
 cactiの[configuration]-[settings]でpathとpollerを設定

./configure実行時に以下のエラー
 libtool.m4 and ltmain.sh have a version mismatch
以下を実行
 # aclocal 
 # libtoolize --force 
 # autoconf 
 # autoheader 
 # automake 
 # ./configure

プラグイン

Cactiには便利なpluginがあるhttp://cactiusers.org/

pluginをインストールするためには基本となるPlugin Architectureをインストールしておく必要がある

Plugin Architectureはインストール済みcactiにpatchを適用する形式でインストールする

Plugin Architectureインストール後、各種Pluginをインストールする

各種Pluginのインストール方法はほぼ同様

Plugin Architectureのインストール

流れ

  1. Plugin Architectureをダウンロード
  2. 展開
  3. 既存Cactiへのパッチ適用
  4. 既存CactiDBへのパッチ適用

パッチ適用方法は2つある

  1. diffファイルを利用してpatchとして適用する
  2. files-0.8.7dディレクトリ以下のファイル群をcactiインストールディレクトリに上書きする

ここではpatch適用方法をとる

# mkdir /usr/local/src/cacti; cd /usr/local/src/cacti
# wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
# mkdir cacti-plugin-0.8.7d; cd cacti-plugin-0.8.7d
# unzip ../cacti-plugin-0.8.7d-PA-v2.4.zip
 
cactiインストールディレクトリに移動
# cd /var/www/html/cacti
# patch -p1 -N < /usr/local/src/cacti/cacti-plugin-0.8.7d/cacti-plugin-0.8.7d-PA-v2.4.diff
2つのファイルがFAILEDになる
include/global_constants.php.rej
lib/html.php.rej
それぞれ手動でpatch適用する
# vi include/global_constants.php
?>の前の行に以下を追加
define('OPER_MODE_NATIVE', 0);
define('OPER_MODE_RESKIN', 1);
define('OPER_MODE_IFRAME_NONAV', 2);
 
# vi lib/html.php
これに関してはまだ未調査...32行もあるんだもん...
 
# cd /usr/local/src/cacti/cacti-plugin-0.8.7d
# mysql -u root -p cacti < sa.sql
 
global.phpの$config['url_path']を適切に変更する
# vi /var/www/html/cacti/include/global.php
$config['url_path'] = '/cacti/';  ←/になっているところを/cacti/にする
   http://<FQDN>/cacti/で接続している場合は /cacti/
   http://<FQDN>/projects/cacti/testing/で接続している場合は /projects/cacti/testing/

ブラウザでcactiにログインする

  1. console→User Management→Adminを選ぶ
  2. Realm PermissionsにPlugin Managementが表示されているのでチェックを付ける
  3. 左メニューのConfiguretionにPlugin Managementが増える

tholdのインストール

閾値を設定して警告してくれるプラグインのインストール

# wget http://cactiusers.org/downloads/thold.tar.gz
# tar zxvf thold-0.4.1.tar.gz
# mv thold /var/www/html/cacti/plugins/
# cd /var/www/html/cacti/include
# vi global.php
$plugins = array();
$plugins[] = 'thold'; ←追加
# cd /var/www/html/cacti/plugins/thold/
# mysql -u root -p cacti < thold.sql

cactiにログインして[console]→[Plugin Management]を開く

tholdが表示されているはずなので、Installをクリック → StatusはNot Installed

StatusがInstalledに変更されるので、Enableをクリック

StatusがActiveになり、利用可能となる → tholdタブが増える

しかし!settings Pluginがないと怒られた!

settingsのインストール

# wget http://cactiusers.org/downloads/settings.tar.gz
# tar zxvf settings-0.5.tar.gz
# mv settings /var/www/html/cacti/plugins/
# cd /var/www/html/cacti/include
# vi global.php
$plugins[] = 'settings'; ←追加

cactiにログインして[console]→[Plugin Management]を開く

settingsが表示されてStatusがRunningになっていればOK

tholdの設定

tholdプラグインを有効にして、各種閾値を設定する方法が意外と分かりにくい。

ディスク使用量を閾値に設定する場合

  • DeviceにはData Queryとして[SNMP - Get Mounted Partitions]を追加しておく
  • DeviceのGraphとしてData Queryの[SNMP - Get Mounted Partitions]箇所で必要なパーティションのグラフを作成しておく

この状態で、[console]画面の[Management]-[Thresholds]を開いて、[Add]をクリックしてウィザードを実行する

  1. Addをクリックする
  2. Hostを選択する
  3. 対象グラフを選択する、この時選択するのは[ホスト名 - Used Space - パーティション名]となっているグラフが該当する\\[ホスト名 - Disk Space - パーティション名]となっているものではないので注意!!
  4. データソースを選択する、この時選択するのは[hdd_used]
  5. createボタンをクリック
  6. 詳細設定画面が表示される
  7. [Data Manipulation]のData Typeを[Percentage]に変更し、Percent Datasourceでは[hdd_total]を選択する
  8. その他の項目は要件に合わせて設定する
  9. saveをクリックして完了!

[console]画面の[Management]-[Thresholds]を開くと一覧表示内に作成したThresholdsデータが表示されている
5分経過すると、Currentの項目に値が表示される。これがData Typeで選択したパーセント値となる
このパーセント値を元に最大値と最小値を設定すればアラートを発行することが可能になる
ここではディスク使用量なので、最大値側に90(90%)や95(95%)等を設定しておけばよい
Alert CycleやNotify Accounts等は適宜設定しておく必要がある

Threshold Templates

Threshold TemplatesはData Templateを元に作成できる。
先に紹介したディスク使用量の閾値設定方法ではData Templateを利用していないので、Threshold Templateが作成できない!
困った!

Data Query[SNMP - Get Mounted Partitions]を利用した理由はデータソースとしてusedとtotalが存在していたため。
ucd/netの分ではusedとfreeとなっているのでパーセント値を算出できない。
というかThred君は複雑な演算はできないので無理。

ucd/netでusedとfreeとtotalを出せるようになればよいのか??

という事なので調べてみた。結果は[できる]だ。8-)

Data Queryのucd/net - Get Monitored Partitionsを見てみると
XML Pathとして<path_cacti>/resource/snmp_queries/net-snmp_disk.xmlが定義されている。
このXMLファイルを覗いてみると、Total SpaceとUsed Percentも定義されているではないか!
ということは、このTotal Spaceを利用すれば良いって事です。
ちなみに、Total SpaceはdskTotalとして定義されています。

ではData Templateのucd/net - Hard Drive Spaceを見てみよう。
Data Source Itemで、NewをクリックしてSourceを追加する

Internal Data Source Name hdd_total
Minimum Value 0
Maximum Value 0
Data Source Type GAUGE
Heartbeat 600

そして、Saveしておく。

再度、Data Queryのucd/net - Get Monitored Partitionsを見る。
[Associated Graph Templates]のNameをクリックして中身を表示させる。
[Associated Data Templates]にhdd_totalが増えているのが見えただろか??
で、右側のチェックボックスにチェックが入っているかを確認しよう。入ってなければ入れるべし!これ忘れがち

さて、これでThreshold Templateが使えるようになった。
という事は、ディスク使用量監視部分をテンプレートを用いた方式に変更できるって事になる。

ディスク容量監視 with テンプレート

ucd/net - Get Monitored Partitionsを変更してテンプレートを利用可能な状態にした上でThresholdを設定すると楽。