Cactiインストール サーバ監視グラフツール

CactiはSNMPなどを利用して取得したサーバやネットワーク機器の状態をグラフ化してくれるツールだ。

cactiスクリーンショット

CactiではWeb上で操作して監視対象のサーバや機器を簡単に追加削除できるので非常に便利。

ここでは以下のMySQLデータベース情報でインストールする方法を説明していく。

ユーザID: cacti
DB名: cacti
パスワード: RGfPjNsqTXtc

rpmforgeリポジトリを追加する。
最新のRPMやCentOSのバージョンに合ったRPMは配布ページからダウンロードすること。

http://pkgs.repoforge.org/rpmforge-release/

i386の場合
-------------------------------------------
wget http://apt.sw.be/redhat/el5/en/i386/RPMS.rpmforge/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
-------------------------------------------
x86_64の場合
-------------------------------------------
wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.rpmforge/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
-------------------------------------------
デフォルトではrpmforgeを使用しないように設定
sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo

yumコマンドでRRDtoolとCactiをインストールする。

yum -y --enablerepo=rpmforge install rrdtool cacti

MySQLのユーザとデータベースを追加してCactiの初期データを投入する。

mysql -u root -p
データベース作成
mysql> create database cacti;
ユーザ追加
mysql> grant all privileges on cacti.* to cacti@localhost identified by 'RGfPjNsqTXtc';
mysql> exit
初期データ投入
mysql -u cacti -p cacti < /var/www/cacti/cacti.sql
データベース接続情報を設定
vi /var/www/cacti/include/config.php
----------------------------------------------------------------------
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "RGfPjNsqTXtc";
$database_port = "3306";
----------------------------------------------------------------------

デフォルトではローカルホストからしかアクセスできないようになっているので
CactiへアクセスできるようにApacheの設定をして再起動する。

vi /etc/httpd/conf.d/cacti.conf
----------------------------------------------------------------------
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
order allow,deny
allow from all
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc on
php_flag track_vars on
</Directory>
----------------------------------------------------------------------
Apacheの設定をテスト
apachectl -t
----------------------------------------------------------------------
Syntax OK
----------------------------------------------------------------------
Apacheの再起動
apachectl restart

ホスト名がwww.example.jpでIPアドレスが192.168.1.100とすると、CactiのURLは下記のようになる。

CactiのURLへアクセスするとインストールが始まるのでインストール作業を行う。

http://www.example.jp/cacti/
もしくは
http://192.168.1.100/cacti/

管理者アカウントの初期ログイン情報。ログイン後すぐにパスワードを変更すること。

User Name: admin
Password: admin

【参考サイト】
サーバー監視システム構築(RRDtool+Cacti)

http://centossrv.com/rrdtool-cacti.shtml

SNMP MRTG設定によるサーバ監視導入

CPU、eth0のトラフィック、メモリの状態を設定する場合の
SNMP、MRTGの設定です。

commpassはコミュニティ名です。それぞれの設定に置き換えて考えてください。

MRTG、Net-SNMPをインストールします。snmpwalkなどのツールはnet-snmp-utilsに入っています。

yum -y install mrtg net-snmp net-snmp-utils

cp /etc/snmp/snmpd.conf  /etc/snmp/snmpd.conf.org
vi /etc/snmp/snmpd.conf
-----------------------------------------------------------
#com2sec notConfigUser  default       public
#group   notConfigGroup v1           notConfigUser
#group   notConfigGroup v2c           notConfigUser
#view    systemview    included   .1.3.6.1.2.1.1
#view    systemview    included   .1.3.6.1.2.1.25.1.1
#access  notConfigGroup ""      any       noauth    exact  systemview none none
com2sec local     localhost       commpass
group MyRWGroup  any        local
view all    included  .1                               80
access MyRWGroup ""      any       noauth    0      all    all    all
-----------------------------------------------------------

snmpデーモンを起動します。

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

snmpwalでローカルに対して許可されているか確認します。
次のコマンドで、SNMPで取得した値がずらっと閲覧できればOKです。

snmpwalk -v 1 -c commpass localhost

デフォルトでは外部からの閲覧ができないようになっているためアクセス権を変更する。

※URLさえわかればMRTGの画面を閲覧できるというセキュリティの
問題があるため特定IPを許可する、Basic認証をかけるなどの設定を
適宜行ってください。

vi /etc/httpd/conf.d/mrtg.conf

変更前

--------------------------------------------------------------------------------
Alias /mrtg /var/www/mrtg
<Location /mrtg>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>
--------------------------------------------------------------------------------

変更後

--------------------------------------------------------------------------------
Alias /mrtg /var/www/mrtg
<Directory "/var/www/mrtg">
Order allow,deny
Allow from all
</Directory>
--------------------------------------------------------------------------------
apachectl graceful
cd /var/www/mrtg/
rm -f *
cp /etc/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg.org
vi /etc/mrtg/mrtg.cfg
--------------------------------------------------------------------------------
WorkDir: /var/www/mrtg
Options[_]: growright,bits
Target[tra]: 1:commpass@localhost:
SetEnv[tra]: MRTG_INT_IP="xxx.xxx.xxx.xxx" MRTG_INT_DESCR="eth0"
MaxBytes[tra]: 1250000
Title[tra]: Traffic Analysis
PageTop[tra]: <H1>Traffic Analysis eth0</H1>
withPeak[tra]: mw
Target[cpu]: 1.3.6.1.4.1.2021.10.1.5.2&1.3.6.1.4.1.2021.10.1.5.3:commpass@localhost:
MaxBytes[cpu]: 100
WithPeak[cpu]: mw
Title[cpu]: CPU Load Avalage
ShortLegend[cpu]: percent
Unscaled[cpu]: dwmy
PageTop[cpu]: <H1>CPU Load Average</H1>
Options[cpu]: gauge,absolute,growright,nopercent
YLegend[cpu]: CPU Load Avalage (%)
Legend1[cpu]: 5 min CPU Load Average
Legend2[cpu]: 15 min CPU Load Average
LegendI[cpu]: 5min
LegendO[cpu]: 15min
Target[mem]: 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.4.0:commpass@localhost:
MaxBytes1[mem]: 1073676
MaxBytes2[mem]: 2147352
Title[mem]: Memory Used
PageTop[mem]: <H1>Memory Used</H1>
Options[mem]: gauge, absolute, growright, nopercent
YLegend[mem]: Memory Used(kBytes)
ShortLegend[mem]: kBytes
Legend1[mem]: Real Memory
Legend2[mem]: Swap Memory
LegendI[mem]: Real
LegendO[mem]: Swap
YTicsFactor[mem]: 0.001
Unscaled[mem]: dwmy
WithPeak[mem]: mw
--------------------------------------------------------------------------------
indexmaker --columns=1 /etc/mrtg/mrtg.cfg > index.html

3回実行、2回目まではワーニングが出力されます。

env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg

URLは/mrtgとなります。
http://xxx.xxx.xxx.xxx/mrtg/
https://xxx.xxx.xxx.xxx/mrtg/
http://www.example.com/mrtg/

ちなみにMRTGインストールの際のcronの設定で5分毎に情報が更新されます。

cat /etc/cron.d/mrtg
--------------------------------------------------------------------------------
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
--------------------------------------------------------------------------------