cactiとは

サーバや通信機器のグラフレポーティングツール。
基本的な機能はSNMPにより情報を取得しグラフ化する。
データの収集はrrdtoolによる。
自作スクリプトを利用すればあらゆる数値情報をグラフ化できる。

導入方法

cacti(0.8.7g)をCentOS(5.5)へインストールした際の備忘録

CentOSの導入と基本設定

CentOSのインストール

最小構成でインストールする。

ユーザアカウント作成

[root@myhost ~]# useradd myaccount
[root@myhost ~]# passwd myaccount
Changing password for user myaccount.
New UNIX password: <- パスワード入力
Retype new UNIX password: <- パスワード入力
passwd: all authentication tokens updated successfully.
[root@myhost ~]# 

sshdの設定

[root@myhost ~]# vi /etc/ssh/sshd_config
-----snip-----
#PermitRootLogin yes  <-  コメントアウト
PermitRootLogin no    <-  追加
-----snip-----
[root@myhost ~]# /etc/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]
[root@myhost ~]# chkconfig sshd on
[root@myhost ~]# chkconfig --list sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@myhost ~]# 

あとはリモートでログインして作業する。

SELINUXとiptablesによるアクセス制御の設定

SELinuxを無効にする

[root@myhost tmp]# vi /etc/selinux/config
-----snip-----
#SELINUX=enforcing       <-  コメントアウト
SELINUX=disabled         <-  追加
-----snip-----

iptablesの設定

[root@myhost tmp]# vi /etc/sysconfig/iptables
-----snip-----
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 80 -j ACCEPT      # <-  追加
-A RH-Firewall-1-INPUT -p tcp --dport 443 -j ACCEPT     # <-  追加
-A RH-Firewall-1-INPUT -p udp --dport 161 -j ACCEPT     # <-  追加
-A RH-Firewall-1-INPUT -p udp --dport 9999 -j ACCEPT    # <-  追加
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-----snip-----
[root@myhost tmp]# shutdown -r now
(SELinuxの設定がシステム再起動で反映されるため、再起動する。)

RPMforgeのインストール

cactiは標準のリポジトリに含まれていないため、RPMforgeのリポジトリを利用する。

参考
http://rpmrepo.org/RPMforge/Using

[root@myhost ~]# mkdir tmp
[root@myhost ~]# cd tmp
[root@myhost tmp]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@myhost tmp]# rpm -ihv rpmforge-release-0.5.1-1.el5.rf.i386.rpm
※ 2011年1月時点では
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
が最新のリンク先である。

標準リポジトリのパッケージをRPMforgeパッケージでアップデートしなくする。

[root@myhost tmp]# yum install yum-priorities
[root@myhost tmp]# vim /etc/yum.repo.d/CentOS-Base.repo
各セクション[]で囲まれた部分の最後に
priority=1
を追加する。

cactiセットアップ

cacti本体のインストール

yumでインストールすると依存関係が自動的に解決されるためspineをインストールする。 後述のプラグインアーキテクチャをインストールする際のパッチがうまくあたらないためここでcactiをアンインストールしておく。(つまり、依存関係で必要なものをインストールするだけです。)

[root@myhost tmp]# yum install cacti-spine
[root@myhost tmp]# yum remove cacti

cacti用のapache設定

[root@myhost tmp]# vi /etc/httpd/conf.d/cacti.conf
Alias /cacti/ /var/www/cacti/
<Directory /var/www/cacti/>
    DirectoryIndex index.php
    Options -Indexes
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    AllowOverride all
    order deny,allow
    deny from all
    allow from 127.0.0.1
    allow from all
    AddType application/x-httpd-php .php
    php_flag magic_quotes_gpc on
    php_flag track_vars on
</Directory>
[root@myhost tmp]# /etc/init.d/httpd start
[root@myhost tmp]# chkconfig httpd on
[root@myhost tmp]# chkconfig --list httpd 
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

mysql-serverをインストール

[root@myhost tmp]# yum install mysql-server
[root@myhost tmp]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8           # <- 追加
skip-character-set-client-handshake  # <- 追加
character-set-server = utf8          # <- 追加

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]                      # <- 追加
default-character-set=utf8   # <- 追加

[root@myhost tmp]# /etc/init.d/mysqld start
[root@myhost tmp]# chkconfig mysqld on
[root@myhost tmp]# chkconfig --list mysqld
mysqld           0:off   1:off   2:on    3:on    4:on    5:on    6:off

cactiプラグインアーキテクチャのインストール

プラグインを利用するためにはパッチを当てる必要がある。
cacti 0.8.7g
http://www.cacti.net/index.php

0.8.7g用パッチ
http://www.cacti.net/download_patches.php

PluginArchitecture? 2.9
http://forums.cacti.net/viewtopic.php?f=19&t=40385

各種パッチ適用

[root@myhost tmp]# wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/data_source_deactivate.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/graph_list_view.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/html_output.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/ldap_group_authenication.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/script_server_command_line_parse.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/ping.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/patches/0.8.7g/poller_interval.patch
[root@myhost tmp]# wget http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7g-PA-v2.9.tar.gz
[root@myhost tmp]# tar zxvf cacti-0.8.7g.tar.gz
[root@myhost tmp]# tar zxvf cacti-plugin-0.8.7g-PA-v2.9.tar.gz
[root@myhost tmp]# cd cacti-0.8.7g
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../data_source_deactivate.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../graph_list_view.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../html_output.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../ldap_group_authenication.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../script_server_command_line_parse.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../ping.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../poller_interval.patch
[root@myhost cacti-0.8.7g]# patch -p1 -N < ../cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.9.diff

MySQL設定

[root@myhost cacti-0.8.7g]# mysqladmin -u root password XXXXX
[root@myhost cacti-0.8.7g]# mysql -u root -p
mysql> use mysql;
mysql> select user,host,password from user;
+------+------------------------+------------------+
| user | host                   | password         |
+------+------------------------+------------------+
| root | localhost              | XXXXXXXXXXXXXXXX | 
| root | XXXXXX.XXXX.XXX.XX     |                  | 
| root | 127.0.0.1              |                  | 
|      | localhost              |                  | 
|      | XXXXXX.XXXX.XXX.XX     |                  | 
+------+------------------------+------------------+
5 rows in set (0.00 sec)

mysql> delete from user where password = "";
Query OK, 4 rows affected (0.00 sec)

mysql> select user,host,password from user;
+------+-----------+------------------+
| user | host      | password         |
+------+-----------+------------------+
| root | localhost | XXXXXXXXXXXXXXXX | 
+------+-----------+------------------+
1 row in set (0.01 sec)

mysql>exit;

MySQLのcacti用アカウント設定

[root@myhost cacti-0.8.7g]# mysqladmin -u root -p create cacti
[root@myhost cacti-0.8.7g]# mysql -u root -p cacti < /var/www/cacti/cacti.sql 
[root@myhost cacti-0.8.7g]# mysql -u root -p cacti < ../cacti-plugin-arch/pa.sql
[root@myhost cacti-0.8.7g]# mysql -u root -p 
mysql> grant all on cacti.* to cactiuser@localhost identified by 'PASSWORD';
mysql> flush privileges;
mysql> 

config.phpの編集

[root@myhost cacti-0.8.7g]# vi include/config.php 
-----snip-----
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "PASSWORD";  <- さっきのに修正
$database_port = "3306";

/* load up old style plugins here */
$plugins = array();
//$plugins[] = 'thold';

/*
   Edit this to point to the default URL of your Cacti install
   ex: if your cacti install as at http://serverip/cacti/ this
   would be set to /cacti/
*/
$url_path = "/cacti/"; ←修正
-----snip-----

[root@myhost cacti-0.8.7g]# cd ..
[root@myhost tmp]# mv cacti-0.8.7g /var/www/cacti

cacti動作確認

webでアクセス。
http://サーバのIPアドレス/cacti/

初回ログイン時は強制的にパスワード変更ダイアログが出る。
セットアップした直後の初期アカウントは admin/admin となっている。

plugin動作確認

とりあえず適当なプラグインを入れてみる
cactiのwebからプラグインの設定を行う
Console -> Utilities -> User Management を選択
ユーザ選択でadminを選択
最下段の Plugin Management のチェックを入れ、Save押下

loginmod
ログイン画面を変更する
http://docs.cacti.net/plugin:loginmod

[root@myhost cacti]# cd plugins
[root@myhost plugins]# wget http://docs.cacti.net/_media/plugin:loginmod-latest.tgz
[root@myhost plugins]# mv plugin:loginmod-latest.tgz loginmod-latest.tgz
[root@myhost plugins]# tar zxvf loginmod-latest.tgz
[root@myhost plugins]# rm loginmod-latest.tgz
[root@myhost plugins]# mv loginmod-1.0 loginmod

docs
簡単なドキュメント管理を行う
http://docs.cacti.net/plugin:docs

[root@myhost plugins]# wget http://docs.cacti.net/_media/plugin:docs_v0.2.tar.gz
[root@myhost plugins]# mv plugin:docs_v0.2.tar.gz docs_v0.2.tar.gz
[root@myhost plugins]# tar zxvf docs_v0.2.tar.gz
[root@myhost plugins]# rm docs_v0.2.tar.gz
[root@myhost plugins]# mv docs_v0.2 docs

cronの登録

[root@myhost plugins]# crontab -e
*/5 * * * * /usr/bin/php /var/www/cacti/poller.php &> /dev/null

sslへの対応

[root@myhost plugins]# yum install mod_ssl
[root@myhost plugins]# cd /etc/httpd
[root@myhost plugins]# mkdir ssl
[root@myhost plugins]# cd ssl
[root@myhost ssl]# openssl genrsa -des3 1024 > ./server.key
[root@myhost ssl]# openssl rsa -in ./server.key -out ./server.key
[root@myhost ssl]# chmod 400 ./server.key
[root@myhost ssl]# openssl req -new -key ./server.key -out ./server.csr
[root@myhost ssl]# openssl x509 -in ./server.csr -out ./server.crt -req -signkey ./server.key -days 3650
[root@myhost ssl]# vi ../conf.d/ssl.conf
-----snip-----
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt  <-  コメントアウト
SSLCertificateFile /etc/httpd/ssl/server.crt          <-  追加
-----snip-----
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key   <-  コメントアウト
SSLCertificateKeyFile /etc/httpd/ssl/server.key             <-  追加
-----snip-----
[root@myhost ssl]# /etc/init.d/httpd restart

で、完了!



Counter: 756, today: 1, yesterday: 0

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS