Cactiインストール · 5 min read · Nov 03, 2025

Debian 9にCacti SNMP監視ツールをインストールする方法

このチュートリアルでは、Debian 9(コードネームStretch)で最新バージョンのCactiネットワーク監視ツールをソースからインストールおよび構成する方法を示します。

Cactiは、RRDtoolを介してネットワークおよびシステムのグラフィックを表示するために設計された、完全にオープンソースのWebベースのネットワーク監視ツールです。SNMP(Simple Network Management Protocol)プロトコルを使用して、スイッチ、ルーター、Linux、Unix、Windowsサーバーなどのネットワークデバイスからネットワークトラフィックを収集および監視します。

要件

  • ベアメタルマシンまたは仮想プライベートサーバー上のDebian 9の最小インストール。
  • システムのネットワークインターフェースカードの1つに構成された静的IPアドレス。
  • rootアカウントへのアクセスまたはsudoを介してrootアカウントの特権を持つユーザー。

初期設定

Cactiをソースからインストールする前に、まずシステムがCactiのコンパイルおよびインストールに必要なすべてのソフトウェア要件を満たしていることを確認してください。最初のステップとして、root権限でDebianのソースリストファイルを編集し、以下のファイル抜粋に示すようにcontribおよびnon-freeリポジトリを追加します。

nano /etc/apt/sources.list

sources.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*

sources.listファイル

ファイルの編集が完了したら、ファイルを保存して閉じ、新しいパッケージを取り込むためにシステムのリポジトリとソフトウェアパッケージを更新します。以下のコマンドを実行します。

apt update
apt upgrade

Debianパッケージの更新

次に、コマンドラインからシステムをさらに管理するために必要なユーティリティをインストールするために新しいコマンドを実行します。

apt install wget patch unzip zip bash-completion

Cactiは、主にPHPサーバーサイドプログラミング言語で書かれたWebベースの監視ツールです。CactiのPHPファイルスクリプトを実行するには、Apache HTTPサーバーなどのWebサーバーとPHPインタープリターがシステムにインストールされ、機能している必要があります。Cactiが正しく動作するために必要なすべてのPHPモジュールとともにApache WebサーバーとPHPインタープリターをインストールするために、サーバーコンソールで以下のコマンドを実行します。

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

PHPのインストール

ApacheとPHPがインストールされた後、root権限で以下のコマンドを実行して、Webサーバーが稼働しており、ポート80でネットワーク接続をリッスンしているかどうかをテストします。

netstat –tlpn

Debianシステムにnetstatネットワークユーティリティがデフォルトでインストールされていない場合は、以下のコマンドを実行してインストールします。

apt install net-tools

netstatコマンドの出力を確認すると、apacheデーモンがポート80で受信ネットワーク接続をリッスンしていることがわかります。

Netstatコマンドの出力

システムにUFWファイアウォールアプリケーションなどのファイアウォールが有効になっている場合は、以下のコマンドを実行してHTTPトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。

ufw allow WWW

または

ufw allow 80/tcp

最後に、クライアントのブラウザでDebianマシンのIPアドレスにHTTPプロトコルでアクセスして、Apache WebサーバーのデフォルトWebページが表示できるかどうかをテストします。以下の画像に示すように、マシンのIPアドレスがわからない場合は、’ ifconfig’ または ‘ ip a’ コマンドを実行します。このセットアップでの私のIPは: http://192.168.1.14

DebianデフォルトWebページ

次のステップでは、PHPのデフォルト設定ファイルにいくつかの変更を加えて、file_uploads変数が有効になっていることと、PHPのtimezone設定が正しく構成されていることを確認する必要があります。/etc/php/7.0/apache2/php.iniファイルを編集し、以下の行が次のように設定されていることを確認します。

*file_uploads = On  
****date.timezone = Europe/London*

タイムゾーン変数は、以下のリンクにあるPHPドキュメントで提供されているタイムゾーンのリストを参照して、物理的なタイムゾーンに応じて置き換えます。http://php.net/manual/en/timezones.php

必要な変更を加えたら、php infoファイルを作成し、以下のコマンドを実行してapacheデーモンを再起動して変更を適用します。

echo ''| tee /var/www/html/info.php
systemctl restart apache2

PHPのタイムゾーンが正しく設定されているかどうかを確認するには、ブラウザから以下のURLのphp infoスクリプトにアクセスします(以下の画像に示すように)。日付設定までスクロールしてphpタイムゾーン設定を確認します。

http://192.168.1.14/info.php

PHP情報出力

Cacti監視ツールは、構成と収集したデータをRDBMSデータベースに保存します。このチュートリアルでは、MariaDBデータベースバックエンドでCactiを構成します。以下のコマンドを実行して、MariaDBデータベースとmysqlデータベースにアクセスするために必要なPHPモジュールをインストールします。

apt install mariadb-server php7.0-mysql

MariaDBのインストール

MariaDBをインストールしたら、デーモンが実行中であり、localhostのポート3306でネットワーク接続をリッスンしていることを確認するために、netstatコマンドを実行します。

netstat –tlpn | grep mysql

次に、MySQLコンソールにログインし、以下のコマンドを実行してMariaDBのrootアカウントを保護します。

mysql -h localhost
use mysql;  
update user set plugin='' where user='root';  
flush privileges;  
exit

MySQL rootパスワードの設定

次のステップでは、Debian Stretchリポジトリからのインストールパッケージに含まれるmysql_secure_installationスクリプトを実行してMariaDBを保護します。スクリプトを実行すると、MySQL rootパスワードの変更、匿名ユーザーの削除、リモートrootログインの無効化、テストデータベースの削除など、MariaDBデータベースを保護するための一連の質問が表示されます。以下のコマンドを実行してスクリプトを実行し、MySQLデーモンを完全に保護するためにすべての質問に「yes」と入力することを確認してください。以下のスクリプト出力をガイドとして使用します。

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...

All done!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

MariaDBのセキュリティをテストするために、rootパスワードなしでコンソールからデータベースにログインしてみてください。rootアカウントにパスワードが提供されていない場合、データベースへのアクセスは拒否されるはずです。パスワードが提供されると、MySQLコンソールへのログインプロセスが許可されるはずです。以下のスクリーンショットに示すように。

mysql -h localhost -u root
mysql -h localhost -u root –p

MySQLログインのテスト

MariaDBデータベースにログインしたら、Cactiインストール用のデータベースを作成し、cactiデータベースを管理するために使用されるユーザーを作成します。以下のコマンドを実行します。cactiデータベースユーザーとパスワードを適宜置き換えます。

create database cacti;  
grant all on cacti.* to 'cacti_user'@'localhost' identified by 'cacti_pass';  
flush privileges;  
exit

また、以下のコマンドを実行してMySQLタイムゾーンに対するcactiデータベースユーザーに選択権限を付与します。これは、最新のCactiリリースをインストールして実行するための新しい要件です。

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 cacti_user@localhost'

MySQLタイムゾーンデータベースのインポート

次のステップでは、MySQLサーバーのデフォルト設定ファイルを開き、以下のように次の行を追加します。

nano /etc/mysql/mariadb.conf.d/50-server.cnf

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  

MariaDBサーバーの設定

これまでに行ったすべての変更を適用するために、MySQLとApacheデーモンを再起動し、以下のコマンドを実行してデーモンが実行中であることを確認します。

systemctl restart mysql apache2
systemctl status mysql apache2

SNMPサービスの設定

Cacti Web監視サービスは、デバイスデータと統計を収集するためにSNMPプロトコルを使用します。SNMPプログラム、SNMPデーモンサービス、およびローカルDebian 9システムのSNMP MIBSをインストールするために、root権限で以下のコマンドを実行します。

apt install snmp snmpd snmp-mibs-downloader

snmpのインストール

また、Cactiがグラフ機能を表示するために使用する業界標準のデータロギングツールRRDtoolをインストールします。

apt install rrdtool

rrdtoolのインストール

次に、SNMP設定ファイル/etc/snmp/snmp.confを編集し、以下の画像に示すように「mibs」行の前にハッシュタグ(#)を追加してコメントアウトします。

snmp.confファイルの設定

また、snmpd.confファイルを開いてSNMPデーモンのリモートおよびlocalhostアクセスを構成し、以下の行を検索して更新します。

nano /etc/snmp/snmpd.conf

すべてのインターフェースで接続をリッスンするための行のコメントを外します。

agentAddress udp:161,udp6:[::1]:161

snmpd.confファイルの編集

次の行を追加して、snmp_stringパスワードを介してローカルネットワークのSNMPクエリを許可します。snmpコミュニティ文字列snmp_stringパスワードとネットワークCIDRアドレスを適宜置き換えます。

rocommunity snmp_string localhost  
rocommunity snmp_string 192.168.1.0/25

snmp_stringの設定

オプションとして、サーバーに関する情報を提供するためにcontactおよびlocation変数を変更することもできます。この情報は、サーバーの詳細を確認するときにCactiの通知エリアに表示されます。また、システムのホスト名、カーネルバージョン、およびシステムの稼働時間がCactiの通知エリアに表示されます。

この情報を変更するには、システム情報セクションのsysLocationおよびsysContact行を編集し、自分の値を追加します。デフォルトでは、以下の値がsysLocationおよびsysContactに設定されています。

sysLocationとsysContactの設定

sysLocation Sitting on the Dock of the Bay  
sysContact Me <[email protected]>

snmpd.confファイルへの適切な変更を加えたら、ファイルを保存して閉じ、以下のコマンドを実行してsnmpデーモンを再起動し、変更を反映させます。その後、snmpdデーモンのステータスとリッスン状態のポートを確認します。

systemctl restart snmpd.service
systemctl status snmpd.service
netstat -tulpn| grep snmp

snmpサービスの再起動

SNMP用のファイアウォールポートを開きます:

ufw allow 161/udp

SNMPデーモンが期待どおりに動作し、localhostのメモリツリーの下ですべてのSNMP値を取得していることを確認するために、以下のコマンドを実行します。

snmpwalk -v 2c -c snmp_string localhost memory

snmpwalkでsnmpサーバーをテスト

Cacti-Spineのインストール

Cacti-Spineは、デフォルトのcmd.phpポーラーの代替品であり、Cで書かれており、実行時間が速くなります。Debian 9でソースからCacti-Spineプーラーをコンパイルしてインストールするには、まず、システムに必要なすべての依存関係をインストールするために以下のコマンドを実行します。

apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql++-dev libmariadb-dev libmariadbclient-dev librrds-perl libsnmp-dev

次に、wgetユーティリティを使用してCacti-Spineの最新バージョンのtar圧縮アーカイブをダウンロードし、tarballアーカイブを抽出し、以下のコマンドを実行してcacti-spine抽出ディレクトリに入ります。

wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz
tar xfz cacti-spine-latest.tar.gz
cd cacti-spine-1.1.24/

次に、以下のコマンドを実行してソースからCacti-Spineユーティリティをコンパイルしてインストールします。

./bootstrap
./configure
make
make install

Cacti-Spineは/usr/local/spine/システムパスにインストールされます。Spineは、ICMP pingリクエストをサポートするためにspineバイナリのSUIDビットを設定することを推奨しています。

chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine

また、以下のファイル抜粋に示すように、設定ファイルを編集してSpineをcactiデータベースに接続する必要があります。

nano /usr/local/spine/etc/spine.conf

spine.confファイルのサンプル。資格情報を適宜置き換えます。Cacti用に構成したのと同じデータベース資格情報を使用します。

DB_Host localhost  
DB_Database cacti  
DB_User user_cacti  
DB_Pass pass_cacti  
DB_Port 3306  
DB_PreG 0

spine.confファイルの編集

Cactiのインストール

Debian 9でソースからCactiをインストールするには、まず、Cactiの最新バージョンのtarball圧縮アーカイブをダウンロードして抽出し、次に、以下のコマンドを実行して抽出したすべてのファイルをApache Webルートパスにコピーします。

wget https://www.cacti.net/downloads/cacti-latest.tar.gz
tar xfz cacti-latest.tar.gz
cp -rf cacti-1.1.24/* /var/www/html/

Cactiのインストール

次のステップでは、Cacti設定ファイルを開き、以下の行を更新してMySQL cactiデータベースのユーザー名、パスワード、ホスト、およびURLパスを適宜反映させます。以下の例に示すように。

nano /var/www/html/include/config.php

** Cacti config.phpファイルのサンプル:

*$database_type     = 'mysql';  
$database_default  = 'cacti';  
$database_hostname = 'localhost';  
$database_username = 'cacti_user';  
$database_password = 'cacti_pass';  
$database_port     = '3306';  
$database_ssl      = false;*

下にスクロールして、パス変数を“/cacti ”から“ / ”に変更します。

*$url_path = '/';*

cacti設定ファイル

cacti ULRパス

次に、Webサーバーのドキュメントルートにあるcacti.sqlスクリプトを読み込んでcactiデータベースをポピュレートし、以下のコマンドを実行してcacti mysqlテーブルを確認します。

mysql -u cacti_user cacti -p < /var/www/html/cacti.sql 
mysql -u cacti_user cacti -p -e 'show tables'

最後に、WebインターフェースからCactiのインストールを開始する前に、以下のコマンドを実行してApache Webサーバーによってインストールされたデフォルトのindex.htmlファイルを削除し、Cactiのログファイルを作成し、ApacheランタイムユーザーにCactiインストールパスへのフル書き込み権限を付与します。

rm /var/www/html/index.html
touch /var/www/html/log/cacti.log
chown -R www-data:www-data /var/www/html/

** WebインターフェースからシステムのIPアドレスまたはドメイン名にアクセスして、以下のURLを開くことでCactiのインストールを開始します。

http://192.168.1.14/install

最初の画面でGPLライセンス契約に同意することを確認し、次のボタンをクリックして続行します。以下のスクリーンショットに示すように。

Cactiライセンス契約の受諾

次の画面で、インストーラーによってすべてのシステム要件が通過したかどうかを確認し、次のボタンをクリックしてインストールプロセスを進めます。

システム要件の確認

Cacti設定

Cacti設定パート2

次に、インストールタイプとしてNew Primary Serverを選択し、次のボタンをクリックして続行します。

プライマリサーバーのインストール

すべての重要なバイナリの場所とバージョンがCactiインストーラーによって正しく検出されたかどうかを確認します。また、Spineバイナリパスを/usr/local/spine/bin/spineに更新する必要があります。クラシックテーマを選択し、次のボタンをクリックして続行します。

バイナリの場所とバージョン

次の画面で、インストーラーはApache Webルートディレクトリの権限を確認し、WebサーバーがCactiインストールパスに書き込みを行うことができるかどうかを確認します。必要なすべてのパスが書き込み可能であれば、次のボタンをクリックして続行します。

パスが書き込み可能かどうかの確認

提供されたリストからすべてのテンプレートを選択し、インストールを完了するために完了ボタンをクリックします。

Cactiインストールの完了

インストールプロセスが完了したら、以下のデフォルトの資格情報を使用してCacti Webインターフェースにログインし、adminのデフォルトパスワードを新しい強力なパスワードに置き換えます。以下のスクリーンショットに示すように。

ユーザー名: admin パスワード: admin

Cactiにログイン

Cacti管理者パスワードの変更

Cacti Webインターフェースにログインしたら、Console -> Configuration -> Settings -> Pollerに移動し、ポーラータイプをcmd.phpからspineバイナリに変更します。以下の画像に示すように、下にスクロールして保存ボタンをクリックして変更を適用します。

ポーラーをspineに変更

次に、Console -> Configuration -> Settings -> Pathsに移動し、Cacti-Spineの設定ファイルパスを/usr/local/spine/etc/spine.confに設定し、保存ボタンをクリックして設定を適用します。以下の画像に示すように。

spine.confパスの設定

SNMPを介して監視される新しいデバイスを追加するには、Console -> Management -> Devicesに移動し、+アイコンをクリックします。以下の画像に示すように、デモンストレーションの目的で、CactiによってSNMPプロトコルを介して監視されるlocalhostマシンを追加します。

新しい監視デバイスの追加

新しく追加されたLinuxデバイスがSNMPを介して監視されるため、デバイスの説明、ホスト名、FQDN、または監視対象デバイスのIPアドレスを追加し、デバイステンプレートとしてLocal Linux Machineを選択します。SNMPオプションでは、適切なSNMPバージョン(この場合はバージョン2)を選択し、デバイスのSNMPコミュニティ文字列を記入します。以下の画像に示すように。SNMPポートが変更されていない場合は、ポート値をデフォルトのままにし、完了したら下にスクロールして作成ボタンをクリックしてデバイスをCactiデータベースに追加します。

デバイス設定の構成

デバイス設定の構成 - パート2

デバイスがCactiデータベースに追加されると、デバイスページの上部にSNMPの概要が表示され、デバイスが正しく検出されてクエリされた場合に表示されます。このデバイスのためにRRDTool SNMPグラフを作成するには、このデバイスのグラフを作成リンクをクリックし、さらに調べたいグラフテンプレートにチェックを入れ、作成ボタンをクリックして次の画面に進み、再度作成ボタンをクリックして完了します。以下の画像に示すように。

グラフの作成

グラフの作成2

グラフの作成3

グラフを視覚化するには、Console -> Management -> Devicesに移動し、アクションを実行したいデバイスをチェックし、アクションメニューからデフォルトツリーに配置を選択します。

デフォルトツリーにデバイスを配置

新しい画面で、宛先ブランチをデフォルトのままにして、続行ボタンをクリックしてプロセスを完了します。以下の画像に示すように。

続行をクリック

最後に、Cactiポーラーが監視されているデバイスに関するデータを収集し始めるために、デバイスをSNMP経由で5分ごとにクエリする新しいcronジョブを追加する必要があります。以下のコマンドを実行して、スケジュールされたジョブをApacheランタイムユーザーが所有し、実行できるようにします。

crontab –u www-data –e

Crontabジョブ行:

*/5 * * * * /usr/bin/php /var/www/html/poller.php > /var/www/html/log/cron.log 2>&1

Cacti cronjobの追加

プーラーcronジョブを追加したら、Cactiがデータを収集する時間を与えるために約30分待ち、その後Cacti Webインターフェースのグラフタブに移動します。デフォルトツリーを展開すると、監視されているマシンから収集されたグラフが表示されるはずです。以下のスクリーンショットに示すように。

Cacti監視

現時点では、CactiインターフェースはHTTPプロトコルを介してクライアントのブラウザから安全でない方法でアクセスできます。デバイスに関するすべての機密情報やCactiのログイン資格情報は、平文で送信されます。クライアントのブラウザとCacti Webインターフェース間のトラフィックを暗号化するために、以下のコマンドをroot権限で実行してApache SSL構成を有効にします。

a2enmod ssl
a2ensite default-ssl.conf
systemctl restart apache2

その後、HTTPSプロトコルを介してCacti Webインターフェースに移動します。Apache Webサーバーは接続を暗号化するために自己署名証明書を使用しているため、ブラウザにエラーメッセージが表示されるはずです。エラーを受け入れると、以下のスクリーンショットに示すように、Cacti Webインターフェースに安全にアクセスできるようになります。

SSLで保護されたCactiインターフェース

以上です!Debian 9でソースからCactiを正常にインストールおよび構成しました。Cactiに関するその他のカスタム設定については、以下のリンクのドキュメントページを訪問してください。https://docs.cacti.net/manual:100

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。