RRDtoolベースのネットワークグラフ描画ソフト
必要なRPMや設定
ソースファイルは/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の準備
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 = "********";
ソースファイルは/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の準備
# 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側の設定を変更する
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はcactiのDaemonプログラム
spineの0.8.7cはconfigureスクリプトにバグ?がありそのままでは動かない
これらを解決してから実行する
デフォルトでは/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の設定変更
修正箇所
<<<<<<< .mine ←行削除 何がし ←行削除 ======= ←行削除 何がし <<<<<<< .r4885 ←行削除 この.mineから.r4885を1セットと数えて合計9セットある箇所を修正する
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のインストール方法はほぼ同様
流れ
パッチ適用方法は2つある
ここでは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にログインする
閾値を設定して警告してくれるプラグインのインストール
# 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がないと怒られた!
# 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プラグインを有効にして、各種閾値を設定する方法が意外と分かりにくい。
この状態で、[console]画面の[Management]-[Thresholds]を開いて、[Add]をクリックしてウィザードを実行する
[console]画面の[Management]-[Thresholds]を開くと一覧表示内に作成したThresholdsデータが表示されている
5分経過すると、Currentの項目に値が表示される。これがData Typeで選択したパーセント値となる
このパーセント値を元に最大値と最小値を設定すればアラートを発行することが可能になる
ここではディスク使用量なので、最大値側に90(90%)や95(95%)等を設定しておけばよい
Alert CycleやNotify Accounts等は適宜設定しておく必要がある
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を出せるようになればよいのか??
という事なので調べてみた。結果は[できる]だ。
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が使えるようになった。
という事は、ディスク使用量監視部分をテンプレートを用いた方式に変更できるって事になる。
ucd/net - Get Monitored Partitionsを変更してテンプレートを利用可能な状態にした上でThresholdを設定すると楽。