
Cactiは、RRDtoolのオープンソースのWebベースフロントエンドで、ネットワークとシステムのグラフィック表示に必要なすべての情報を保存します。CactiはSimple Network Management Protocol(SNMP)を利用してネットワークデバイスからのトラフィックを収集・監視し、様々なLinuxディストリビューションにインストールできます。Ubuntu 16.04サーバーにCactiをインストールする手順を解説します。インストールは非常に複雑で、大部分はターミナルで操作します。Ubuntu 16.04サーバーにログインして、入力する準備をしてください。
apt と update/upgrade の設定
まず最初に、必要なリポジトリをaptに追加します。そのためには、sudo nano /etc/apt/sources.list.d/cacti.listコマンドで新しいファイルを作成し、以下の内容を追加します。
deb http://ftp.ro.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.ro.debian.org/debian/ stretch main
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main
ファイルを保存して閉じ、次のコマンドで Ubuntu を更新およびアップグレードします。
sudo apt update
sudo apt upgrade
依存関係のインストール
次に、必要な依存関係をインストールする必要があります。これは以下の3つのコマンドで実行できます。
sudo apt install wget patch unzip zip bash-completion
sudo apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-snmp php7.0-xml php7.0-mbstring php7.0-json php7.0-gd php7.0-gmp php7.0-zip php7.0-ldap php7.0-mcrypt
sudo apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql++-dev librrds-perl libsnmp-dev
ファイアウォールが動作している場合は、次のコマンドで開く必要があります。
sudo ufw allow 80/tcp
PHPの設定
/etc/php/7.0/apache2/php.iniには設定する行が2つあります。その2行とは:
file_uploads = On
date.timezone =
file_uploads が On に設定されていない場合は、変更してください。また、タイムゾーンも設定する必要があります。PHP に適したタイムゾーンは、公式の PHP タイムゾーン一覧で確認してください。設定が完了したら、ファイルを保存して閉じ、次のコマンドで Apache を再起動します。
sudo systemctl restart apache2
データベース
CactiはデータをRDBMSデータベースに保存します。これを実現するために、CactiをMariaDBと連携するように設定します。以下のコマンドでこのデータベースをインストールします。
sudo apt install mariadb-server php7.0-mysql
次に、次のコマンドを使用して MariaDB ルート アカウントを保護します。
mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit
sudo mysql_secure_installation
最後のコマンドでは、いくつかの質問に答えるように求められます。最初の質問は、rootユーザーの現在のパスワードを入力することです。パスワードが設定されていないため、キーボードのEnterキーを押してからyと入力してrootパスワードを変更します。新しいパスワードを入力して確認し、残りの質問にはデフォルトの回答で答えてください。
次に、新しいデータベースを作成します。まず、次のコマンドでデータベースにログインします。
mysql -h localhost -u root -p
認証後、次のコマンドを発行して新しいデータベースを作成します。
create database cacti;
grant all on cacti.* to 'cacti_user'@'localhost' identified by 'cacti_pass';
flush privileges;
exit
次に、新しいデータベースユーザーに正しいタイムゾーンに応じた権限を設定する必要があります。これを行うには、以下のコマンドを実行します。
mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql
mysql -u root -p -e 'grant select on mysql.time_zone_name to root@localhost'
次のステップでは、/etc/ mysql/mariadb.conf.d/50- server.cnf ファイルに次の行を追加します。
max_heap_table_size = 98M
tmp_table_size = 64M
join_buffer_size = 64M
innodb_buffer_pool_size = 485M
innodb_doublewrite = off
innodb_additional_mem_pool_size = 80M
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
次のコマンドで Apache と MySQL を再起動します。
systemctl restart mysql apache2
SNMPを設定する
次はSNMPサービスをインストールして設定します。インストールは次のコマンドで完了します。
sudo apt install snmp snmpd snmp-mibs-downloader
Cacti は RRDtool に依存しているため、次のコマンドでインストールする必要があります。
sudo apt install rrdtool
/etc/snmp/snmp.confファイルを開き、次のように # を追加してmibs :行をコメント アウトします。
#mibs :
そのファイルを保存して閉じます。
SNMPを設定するには、ファイル/etc/snmp/snmpd.confを開きます。まず、以下の行をコメントアウトする必要があります。
agentAddress udp:127.0.0.1:161
次に、行のコメントを解除します(# を削除します)。
agentAddress udp:161,udp6:[::1]:161
下にスクロールして次の行を見つけます。
rocommunity6 public default -V systemonly
その行の下に次の内容を追加します。
rocommunity snmp_string localhost
rocommunity snmp_string 192.168.1.0/25
そのファイルを保存して閉じます。
次のコマンドで SNMP サービスを再起動します。
sudo systemctl restart snmpd.service
ファイアウォールが動作している場合は、次のコマンドで適切なポートを開きます。
sudo ufw allow 161/udp
Cacti-Spineをインストールする
デフォルトのcmd.phpポーラーを置き換えるツール、Cacti-Spineをインストールしましょう。以下のコマンドで実行できます。
sudo -s
wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz
tar xfz cacti-spine-latest.tar.gz
cd cacti-spine*
./bootstrap
./configure
make
make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine
次に、Cacti-Spine が新しいデータベースを使用するように設定します。/usr/local/spine/etc/spine.conf ファイルを開き、データベースのインストール/設定時に設定した内容に従ってデータベースの認証情報を編集します。DB_User と DB_Pass を変更する必要があります。
Cactiをインストールする
いよいよCactiのインストールです。以下のコマンドでインストールできます。
wget https://www.cacti.net/downloads/cacti-latest.tar.gz
tar xfz cacti-latest.tar.gz
cp -rf cacti*/* /var/www/html/
Cacti-Spineと同様に、Cactiをデータベースに接続するための設定が必要です。/var/www/html/include/config.phpファイルを開き、データベースのインストール/設定に従って認証情報を変更します。database_usernameとdatabase_passwordを変更する必要があります。同じファイルで、次の行を変更します。
$url_path = "/cacti";
次のように変更する必要があります:
$url_path = "/";
そのファイルを保存して閉じます。
次のコマンドで cacti データベースにデータを入力します。
mysql -u cacti_user cacti -p < /var/www/html/cacti.sql
コマンド mysql -u cacti_user cacti -p -e 'show tables' を実行すると、新しく入力されたデータが表示されます (図 A )。
図A

Web インストールに進む前に、次のコマンドを発行します。
rm /var/www/html/index.html
touch /var/www/html/log/cacti.log
chown -R www-data:www-data /var/www/html/
ウェブインストール
最後のステップは、ブラウザで http://SERVER_IP/install (SERVER_IP はCactiをインストールしたサーバーのアドレス)にアクセスし、インストール手順を進めていくことです。すでにすべての設定が完了しているので、「次へ」を数回クリックするだけで完了です。
しかし、解決に少し手間のかかる問題が1つ見つかりました。インストーラーがspineの実行ファイルを見つけられないのです。デフォルトでは、この実行ファイルは/usr/local/spine/binにあります。しかし、インストーラーはそれを/usr/local/spine/bin/spine /に置くように要求します。この問題を解決するには、以下の手順を実行してください。
cd /usr/local/spine/bin
mv spine ../
mkdir spine
mv ../spine spine/
奇妙な問題ですが、上記の方法で解決できます。
ウェブインストーラで「完了」をクリックすると、ログイン画面が表示されます。デフォルトの認証情報はadmin/adminです。これを入力すると、新しい管理者パスワードを設定するように求められます(大文字と小文字を組み合わせ、少なくとも1つの数字を含める必要があります)。その後、Cactiのウェブインターフェースが表示され、新しくインストールしたCactiを操作できるようになります。
グラフ作成を楽しんでください!