RRDtool+Cactiのインストール
概要:サーバー監視システムをRRDtoolにより構築する。
ここでは、RRDtoolのフロントエンドとしてCactiを利用し、Webインタフェースでグラフの管理ができるようにする。RRDとはRound Robin Databaseを指している。
また、ハードディスク使用量を監視し、規定値を超えたら管理者宛にメール通知するようにする。
前提:
1. Net-SNMPインストール
- ) Net-SNMPインストール
データ収集に必要なNet-SNMPをインストールする。
# yum -y install net-snmp ← Net-SNMPインストール
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
net-snmp i386 1:5.3.2.2-7.el5_4.2 updates 696 k
Installing for dependencies:
lm_sensors i386 2.10.7-4.el5 base 513 k
net-snmp-libs i386 1:5.3.2.2-7.el5_4.2 updates 1.3 M
Transaction Summary
==========================================================================================
Install 3 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
- ) Net-SNMP設定
# vi /etc/snmp/snmpd.conf ← Net-SNMP設定ファイル編集
# sec.name source community
#com2sec notConfigUser default public ← コメントアウト
com2sec local localhost private ← 追加
com2sec mynetwork 192.168.1.0/24 public ← 追加(ネットワークアドレスは各自の環境に合わせること)
# groupName securityModel securityName
#group notConfigGroup v1c notConfigUser ← コメントアウト
#group notConfigGroup v2c notConfigUser ← コメントアウト
group MyROGroup v1 local ← 追加
group MyROGroup v2c local ← 追加
group MyROGroup v1 mynetwork ← 追加
group MyROGroup v2c mynetwork ← 追加
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
#view systemview included .1.3.6.1.2.1.1 ← コメントアウト
#view systemview included .1.3.6.1.2.1.25.1.1 ← コメントアウト
view all included .1 80 ← 追加
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
#access notConfigGroup "" any noauth exact systemview none none
← コメントアウト
access MyROGroup "" any noauth exact all none none ← 追加
access MyRWGroup "" any noauth exact all all none ← 追加
# Check the / partition and make sure it contains at least 10 megs.
#disk / 10000
disk / 10000 ← 追加(ディスク使用率表示用設定)
- ) Net-SNMP起動
# /etc/rc.d/init.d/snmpd start ← Net-SNMP起動
snmpd を起動中: [ OK ]
# chkconfig snmpd on ← Net-SNMP自動起動設定
# chkconfig --list snmpd ← Net-SNMP自動起動設定確認
snmpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
← ランレベル2~5のon確認
2. RRDtoolインストール
RPMforgeリポジトリよりインストールする。
# yum -y --enablerepo=rpmforge install rrdtool ← RRDtoolインストール
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
rrdtool i386 1.4.2-1.el5.rf rpmforge 881 k
Installing for dependencies:
libdbi i386 0.8.1-2.1 base 35 k
perl-rrdtool i386 1.4.2-1.el5.rf rpmforge 52 k
ruby i386 1.8.5-5.el5_4.8 updates 274 k
ruby-libs i386 1.8.5-5.el5_4.8 updates 1.6 M
xorg-x11-fonts-Type1 noarch 7.1-2.1.el5 base 1.5 M
Transaction Summary
==========================================================================================
Install 6 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
3. Cactiインストール
- ) Cactiインストール
# yum -y install cacti
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
cacti noarch 0.8.7e-3.el5.rf rpmforge 2.2 M
Installing for dependencies:
net-snmp-utils i386 1:5.3.2.2-7.el5_4.2 updates 185 k
php-snmp i386 5.1.6-24.el5_4.5 updates 29 k
Transaction Summary
==========================================================================================
Install 3 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
- ) Cacti設定
- Cacti用MySQLデータベース作成
# mysql -u root -p ← MySQLへrootでログイン
Enter password: ← MySQLのrootパスワード応答
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 297
Server version: 5.0.37 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database cacti; ← Cacti用データベース作成
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on cacti.* to cactiuser@localhost identified by '任意のパスワード';
← Cacti用データベースアクセスユーザ登録
Query OK, 0 rows affected (0.06 sec)
mysql> exit ← MySQLからログアウト
Bye
# mysql -u cactiuser -p cacti < /var/www/cacti/cacti.sql ← Cacti用データベース初期化
Enter password: ← Cacti用データベースアクセスユーザのパスワード応答
- Cacti設定
# vi /var/www/cacti/include/config.php ← Cactiデータベース設定ファイル編集
$database_password = "cactiuser";
↓
$database_password = "パスワード"; ← Cacti用データベースアクセスユーザのパスワードを指定
- Apache設定
# vi /etc/httpd/conf.d/cacti.conf ← Cacti用Apache設定ファイル編集
Alias /cacti/ /var/www/cacti/
<Directory /var/www/cacti/>
DirectoryIndex index.php
Options -Indexes
AllowOverride all
order deny,allow
deny from all
allow from 127.0.0.1
Allow from 192.168.1.0/24 ← 追加(内部からCactiにアクセスできるようにする)
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc on
php_flag track_vars on
</Directory>
# /etc/rc.d/init.d/httpd reload ← Apache設定再読込み
httpd を再読み込み中: [ OK ]
- Cacti初期設定
- Webブラウザから http://サーバー名/cacti/ へアクセスする。
- User Nameにadmin、Passwordにadminと入力してLoginする。
- Passwordに任意の管理者パスワード、confirmに同じパスワードを入力してSaveをクリックする。
- Devices⇒Localhost
- SNMP VersionでVersion 1を選択する。(元Not In Use)
- SNMP Communityにprivateと入力する。(元public)
- saveをクリックする。
4. グラフの追加
- ) ネットワークトラフィックグラフ追加
- consoleタブをクリックする。
- Devices⇒Localhost⇒Associated Data QueriesのAdd Data Query:でSNMP - Interface Statisticsを選択してaddをクリックする。
- New Graphs⇒Data Query [SNMP - Interface Statistics]-任意のName (IF-MIB)(例:eth0)をチェックしてcreateをクリックする。
- ) ディスク使用状況グラフ追加
- consoleタブをクリックする。
- New Graphs⇒Data Query [Unix - Get Mounted Partitions]-任意のMount Pointをチェックしてcreateをクリックする。
- ) PU使用率グラフ追加
- consoleタブをクリックする。
- Devices⇒Localhost⇒Associated Graph TemplatesのAdd Graph Template:でucd/net - CPU Usageを選択してaddをクリックする。
- New Graphs⇒Graph TemplatesのCreate: ucd/net - CPU Usageをチェックしてcreateをクリックする。
- ) 不要グラフ削除
- consoleタブをクリックする。
- Graph Managementをクリックする。
- 削除したいグラフ(例:Localhost - Logged in Users )をチェックする。
- Choose an action:でDeleteを選択してgoをクリックする。
5. Cacti確認
約10分後graphsタブをクリックしてグラフが表示されることを確認。
6. HTML作成
公開用にグラフをHTML化する。
- ) Apache設定
# mkdir /var/www/cactihtml ← HTML作成先ディレクトリ作成
# chown cacti:cacti /var/www/cactihtml/ ← HTML作成先ディレクトリ所有者変更
# echo Alias /cactihtml /var/www/cactihtml > /etc/httpd/conf.d/cactihtml.conf
← Apache設定ファイル作成
# /etc/rc.d/init.d/httpd reload ← Apache設定再読込み
httpd を再読み込み中: [ OK ]
- ) Cacti設定
- Webブラウザからhttp://サーバー名/cacti/へアクセスする。
- consoleタブをクリックする。
- Data Sourcesをクリックする。
- Settingsをクリックする。
- Graph Exportタブをクリックする。
- Export MethodでClassic(local path)を選択する。
- Export Directory (both local and ftp)に/var/www/cactihtmlと入力する。
- Export timingでClassic(export every x times)を選択する。
- saveをクリックする。
7. HTML確認
約10分後Webブラウザからhttp://サーバー名/cactihtml/へアクセスしてグラフが表示されることを確認する。
8. ハードディスク使用量監視設定
Cactiのプラグイン[ http://cactiusers.org/downloads/ ]を導入してハードディスク使用量を監視し、規定値を超えたら管理者宛にメール通知するようにする。
- ) cacti-plugin-archインストール
# cd /tmp/work
#wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7e-PA-v2.6.zip
# unzip cacti-plugin-0.8.7e-PA-v2.6.zip ← cacti-plugin-arch展開
# rpm -q cacti ← Cactiバージョン確認
cacti-0.8.7e-3.el5.rf
# cp -p cacti-plugin-0.8.7e-PA-v2.6.diff /var/www/cacti
← Cactiバージョンに該当するパッチをCactiインストール先ディレクトリへコピー
パッチを当てる前にバックアップを取る。
# cp -Rp /var/www/cacti/ /tmp/work/cacti
# cd /var/www/cacti/ ← Cactiインストール先ディレクトリへ移動
patch -p1 -N --dry-run < cacti-plugin-0.8.7e-PA-v2.6.diff ← cacti-plugin-archパッチの試行
パッチを当てても問題ないか試行する。実際にはパッチは適用されない。
エラーがなければ次を実行する。
# patch -p1 -N < cacti-plugin-0.8.7e-PA-v2.6.diff ← cacti-plugin-archパッチ施行
patching file auth_changepassword.php
patching file auth_login.php
patching file data_sources.php
patching file graph_image.php
patching file graph.php
patching file graphs_new.php
patching file graphs.php
patching file host.php
patching file include/auth.php
patching file include/global_arrays.php
patching file include/global_form.php
patching file include/global.php
patching file include/global_settings.php
patching file include/plugins.php
patching file include/top_graph_header.php
patching file include/top_header.php
patching file index.php
patching file lib/api_device.php
patching file lib/functions.php
patching file lib/html_form.php
patching file lib/html.php
patching file lib/html_tree.php
patching file lib/poller.php
patching file lib/rrd.php
patching file lib/variables.php
patching file plugins/index.php
patching file poller.php
patching file user_admin.php
patching file utilities.php
# cd /tmp/work/cacti-plugin-arch
# mysql -u cactiuser -p < pa.sql cacti ← Cactiデータベースへthold設定を追加
Enter password: ← Cacti用データベースアクセスユーザのパスワード応答
- ) settingsインストール
# cd /tmp/work
# wget http://cactiusers.org/downloads/settings.tar.gz ← settingsダウンロード
# tar zxvf settings-*.tar.gz ← settings展開
# /bin/cp -pr settings /var/www/cacti/plugins/
← settings展開先ディレクトリをプラグイン格納ディレクトリへコピー
- ) tholdインストール
- tholdインストール
# cd /tmp/work
# wget http://cactiusers.org/downloads/thold.tar.gz ← tholdダウンロード
# tar zxvf thold-*.tar.gz ← thold展開
# /bin/cp -pr thold /var/www/cacti/plugins/
← thold展開先ディレクトリをプラグイン格納ディレクトリへコピー
# mysql -u cactiuser -p < /var/www/cacti/plugins/thold/thold.sql cacti
← Cactiデータベースへthold設定を追加
Enter password: ← Cacti用データベースアクセスユーザのパスワード応答
# cp -p /var/www/cacti/include/global.php /var/www/cacti/include/global.php.backup
# vi /var/www/cacti/include/global.php ← Cacti設定ファイル編集
$plugins = array();
$plugins[] = 'settings'; ← 追加
$plugins[] = 'thold'; ← 行頭の//を削除
$config['url_path'] = '/cacti/'; ← パスを変更
- thold設定
- consoleタブをクリック。
- Utilitiesの中のUser Managementをクリック。
- ユーザー名のadminをクリック。
- 下の方にあるRealm Permissionsタブの中にあるPlugin Managementにチェックを入れてsaveをクリック。
- Configurationの中のSettingsの下にPlugin Managementが現れる。
- Plugin Managementをクリックする。
- tholdの欄のInstallをクリックし、Enableをクリックする。
- Managementの中にThresholds、Templatesの中にThreshold Templatesが表示される。
- Threshold Templates⇒Add⇒Threshold Template Creation Wizard Please select a Data SourceのData TemplateでUnix - Hard Drive Spaceを選択する。
- Data Sourceでhdd_usedを選択してcreateをクリック。
- High Thresholdに閾値(例:ハードディスク使用率が90%を超えたら警告メールを送信するようにする場合は、ハードディスクサイズ×0.9の値をバイト単位で)入力する。
注:閾値を超えた場合にメールが届くか確認する場合は1を入力する。
- Alert E-Mailに管理者メールアドレスを入力してsaveをクリック。
- Devices⇒Localhost⇒Create Graphs for this Host⇒Auto-create thresholdsをクリック。
- ) ハードディスク使用量監視確認
約10分後threshldタブをクリックしてCurrent欄に現在のハードディスク使用量が表示されることを確認。
9. Cactiの自動アップデート無効化
yumにより自動アップデートされるとパッチがはがれてプラグインが無効になってしまうので、yum-versionlockプラグインによりCactiをyumによる自動アップデート対象外にする。
ただし、アップデートしないまま使用し続けるのはセキュリティ上好ましくないため、アップデートチェックを行い、
アップデート検知時はroot宛にメール通知するようにする。
- ) yum-versionlockインストール
# yum -y install yum-versionlock ← yum-versionlockプラグインインストール
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
yum-versionlock noarch 1.1.16-14.el5.centos.1 updates 15 k
Transaction Summary
==========================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
# vi /etc/yum/pluginconf.d/versionlock.conf
[main]
enabled = 1 ← 1であることを確認。
# touch /etc/yum/pluginconf.d/versionlock.list ← バージョンロック対象リスト作成
# sed -i '/cacti/d' /etc/yum/pluginconf.d/versionlock.list
← cactiをバージョンロック対象にする場合(1/2)
# rpm -q cacti >> /etc/yum/pluginconf.d/versionlock.list
← cactiをバージョンロック対象にする場合(2/2)
# vi /etc/cron.daily/yum-check-update
← バージョンロック対象パッケージアップデートチェックスクリプト作成
#!/bin/bash
# versionlockパッケージアップデートチェックスクリプト
YUMTMP=$(mktemp)
for pkg in `cat /etc/yum/pluginconf.d/versionlock.list`
do
chkname="$chkname `rpm -qi $pkg|grep Name|awk '{print $3}'`"
done
yum --noplugins check-update $chkname > $YUMTMP
[ $? -eq 100 ] && cat $YUMTMP
rm -f $YUMTMP
# chmod +x /etc/cron.daily/yum-check-update
← バージョンロック対象パッケージアップデートチェックスクリプトへ実行権限付加
アップデート検知時はroot宛にメール通知されるので、最新版で再インストールする
アップデート検知時は、手動でCactiアップデート(yum -y update cacti)後、http://サーバー名/cacti/へアクセスしてウィザードに従ってアップグレード)を実行し、「ハードディスク使用量監視設定」を行う。
10. Apacheアクセス統計監視グラフ追加(apachestats)
概要:RRDtool+Cactiのサーバー監視システムにApacheアクセス統計監視グラフを追加する。
- ) server-status設定
# vi /etc/httpd/conf/httpd.conf ← Apache設定ファイル編集
#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On ← ExtendedStatus有効化
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .example.com
#</Location>
以下を追加
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168.1.0/24 ← 内部ネットワークアドレスを指定
</Location>
# /etc/rc.d/init.d/httpd reload ← Apache設定再読込み
httpd を再読み込み中: [ OK ]
- ) server-status確認
Webブラウザからhttp://サーバー名/server-status?autoへアクセスして以下のようなページが表示されることを確認する。
Total Accesses: 59833
Total kBytes: 739184
CPULoad: .401741
Uptime: 101197
ReqPerSec: .591253
BytesPerSec: 7479.71
BytesPerReq: 12650.6
BusyWorkers: 1
IdleWorkers: 19
Scoreboard: _.___._____W.___.___._.__._
- ) Apacheアクセス統計監視グラフ追加
- Apacheアクセス統計収集スクリプトインストール
# cd /tmp/work
# wget http://forums.cacti.net/download.php?id=9907 -O ws_apachestats.pl.gz
← Apacheアクセス統計収集スクリプトダウンロード
# gunzip ws_apachestats.pl.gz ← Apacheアクセス統計収集スクリプト解凍
# cp -p ws_apachestats.pl /var/www/cacti/scripts/
← Apacheアクセス統計収集スクリプトを所定のディレクトリへコピー
# chmod +x /var/www/cacti/scripts/ws_apachestats.pl
← Apacheアクセス統計収集スクリプトへ実行権限付与する。
- Apacheアクセス統計監視グラフ追加
- Cacti用Apacheアクセス統計監視グラフテンプレート[ http://forums.cacti.net/download.php?id=3330 ]をPC上にダウンロードする。
- http://サーバー名/cacti/へアクセスしてadminでログインする。
- consoleタブをクリック。
- Import Templatesをクリック。
- Import Template from Local Fileでcacti_host_template_webserver_apache.xmlを選択
- saveをクリック。
- consoleタブをクリック。
- Devices⇒Localhostをクリック。
- Host Template・・・Web Server - Apache選択する。
- saveをクリック。
- Create Graphs for this Hostをクリック。
- Graph Template NameでWebServer - Apache Statistics~を全てチェック。
- createをクリック。
- createをクリック。
- ) Apacheアクセス統計監視グラフ確認
約10分後graphsタブをクリックしてグラフが表示されることを確認する。