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.listsources.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*
ファイルの編集が完了したら、ファイルを保存して閉じ、新しいパッケージを取り込むためにシステムのリポジトリとソフトウェアパッケージを更新します。以下のコマンドを実行します。
apt updateapt upgrade
次に、コマンドラインからシステムをさらに管理するために必要なユーティリティをインストールするために新しいコマンドを実行します。
apt install wget patch unzip zip bash-completionCactiは、主に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
ApacheとPHPがインストールされた後、root権限で以下のコマンドを実行して、Webサーバーが稼働しており、ポート80でネットワーク接続をリッスンしているかどうかをテストします。
netstat –tlpnDebianシステムにnetstatネットワークユーティリティがデフォルトでインストールされていない場合は、以下のコマンドを実行してインストールします。
apt install net-toolsnetstatコマンドの出力を確認すると、apacheデーモンがポート80で受信ネットワーク接続をリッスンしていることがわかります。

システムに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
次のステップでは、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.phpsystemctl restart apache2PHPのタイムゾーンが正しく設定されているかどうかを確認するには、ブラウザから以下のURLのphp infoスクリプトにアクセスします(以下の画像に示すように)。日付設定までスクロールしてphpタイムゾーン設定を確認します。
Cacti監視ツールは、構成と収集したデータをRDBMSデータベースに保存します。このチュートリアルでは、MariaDBデータベースバックエンドでCactiを構成します。以下のコマンドを実行して、MariaDBデータベースとmysqlデータベースにアクセスするために必要なPHPモジュールをインストールします。
apt install mariadb-server php7.0-mysql
MariaDBをインストールしたら、デーモンが実行中であり、localhostのポート3306でネットワーク接続をリッスンしていることを確認するために、netstatコマンドを実行します。
netstat –tlpn | grep mysql次に、MySQLコンソールにログインし、以下のコマンドを実行してMariaDBのrootアカウントを保護します。
mysql -h localhostuse mysql;
update user set plugin='' where user='root';
flush privileges;
exit
次のステップでは、Debian Stretchリポジトリからのインストールパッケージに含まれるmysql_secure_installationスクリプトを実行してMariaDBを保護します。スクリプトを実行すると、MySQL rootパスワードの変更、匿名ユーザーの削除、リモートrootログインの無効化、テストデータベースの削除など、MariaDBデータベースを保護するための一連の質問が表示されます。以下のコマンドを実行してスクリプトを実行し、MySQLデーモンを完全に保護するためにすべての質問に「yes」と入力することを確認してください。以下のスクリプト出力をガイドとして使用します。
sudo mysql_secure_installationNOTE: 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 currentpassword for the root user. If you've just installed MariaDB, andyou 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 MariaDBroot user without the proper authorisation.You already have a root password set, so you can safely answer 'n'.Change the root password? [Y/n] yNew password:Re-enter new password:Password updated successfully!Reloading privilege tables.. ... Success!By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.Remove anonymous users? [Y/n] y ... Success!Normally, root should only be allowed to connect from 'localhost'. Thisensures 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 canaccess. This is also intended only for testing, and should be removedbefore 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 rootmysql -h localhost -u root –p
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.sqlmysql -u root -p -e 'grant select on mysql.time_zone_name to cacti_user@localhost'
次のステップでは、MySQLサーバーのデフォルト設定ファイルを開き、以下のように次の行を追加します。
nano /etc/mysql/mariadb.conf.d/50-server.cnf50-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 
これまでに行ったすべての変更を適用するために、MySQLとApacheデーモンを再起動し、以下のコマンドを実行してデーモンが実行中であることを確認します。
systemctl restart mysql apache2systemctl status mysql apache2SNMPサービスの設定
Cacti Web監視サービスは、デバイスデータと統計を収集するためにSNMPプロトコルを使用します。SNMPプログラム、SNMPデーモンサービス、およびローカルDebian 9システムのSNMP MIBSをインストールするために、root権限で以下のコマンドを実行します。
apt install snmp snmpd snmp-mibs-downloader
また、Cactiがグラフ機能を表示するために使用する業界標準のデータロギングツールRRDtoolをインストールします。
apt install rrdtool
次に、SNMP設定ファイル/etc/snmp/snmp.confを編集し、以下の画像に示すように「mibs」行の前にハッシュタグ(#)を追加してコメントアウトします。

また、snmpd.confファイルを開いてSNMPデーモンのリモートおよびlocalhostアクセスを構成し、以下の行を検索して更新します。
nano /etc/snmp/snmpd.confすべてのインターフェースで接続をリッスンするための行のコメントを外します。
agentAddress udp:161,udp6:[::1]:161
次の行を追加して、snmp_stringパスワードを介してローカルネットワークのSNMPクエリを許可します。snmpコミュニティ文字列snmp_stringパスワードとネットワークCIDRアドレスを適宜置き換えます。
rocommunity snmp_string localhost
rocommunity snmp_string 192.168.1.0/25
オプションとして、サーバーに関する情報を提供するためにcontactおよびlocation変数を変更することもできます。この情報は、サーバーの詳細を確認するときにCactiの通知エリアに表示されます。また、システムのホスト名、カーネルバージョン、およびシステムの稼働時間がCactiの通知エリアに表示されます。
この情報を変更するには、システム情報セクションのsysLocationおよびsysContact行を編集し、自分の値を追加します。デフォルトでは、以下の値がsysLocationおよびsysContactに設定されています。

sysLocation Sitting on the Dock of the Bay
sysContact Me <[email protected]>snmpd.confファイルへの適切な変更を加えたら、ファイルを保存して閉じ、以下のコマンドを実行してsnmpデーモンを再起動し、変更を反映させます。その後、snmpdデーモンのステータスとリッスン状態のポートを確認します。
systemctl restart snmpd.servicesystemctl status snmpd.servicenetstat -tulpn| grep snmp
SNMP用のファイアウォールポートを開きます:
ufw allow 161/udpSNMPデーモンが期待どおりに動作し、localhostのメモリツリーの下ですべてのSNMP値を取得していることを確認するために、以下のコマンドを実行します。
snmpwalk -v 2c -c snmp_string localhost memory
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.gztar xfz cacti-spine-latest.tar.gzcd cacti-spine-1.1.24/次に、以下のコマンドを実行してソースからCacti-Spineユーティリティをコンパイルしてインストールします。
./bootstrap./configuremakemake installCacti-Spineは/usr/local/spine/システムパスにインストールされます。Spineは、ICMP pingリクエストをサポートするためにspineバイナリのSUIDビットを設定することを推奨しています。
chown root:root /usr/local/spine/bin/spinechmod +s /usr/local/spine/bin/spineまた、以下のファイル抜粋に示すように、設定ファイルを編集してSpineをcactiデータベースに接続する必要があります。
nano /usr/local/spine/etc/spine.confspine.confファイルのサンプル。資格情報を適宜置き換えます。Cacti用に構成したのと同じデータベース資格情報を使用します。
DB_Host localhost
DB_Database cacti
DB_User user_cacti
DB_Pass pass_cacti
DB_Port 3306
DB_PreG 0
Cactiのインストール
Debian 9でソースからCactiをインストールするには、まず、Cactiの最新バージョンのtarball圧縮アーカイブをダウンロードして抽出し、次に、以下のコマンドを実行して抽出したすべてのファイルをApache Webルートパスにコピーします。
wget https://www.cacti.net/downloads/cacti-latest.tar.gztar xfz cacti-latest.tar.gzcp -rf cacti-1.1.24/* /var/www/html/
次のステップでは、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 = '/';*

次に、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.htmltouch /var/www/html/log/cacti.logchown -R www-data:www-data /var/www/html/** WebインターフェースからシステムのIPアドレスまたはドメイン名にアクセスして、以下のURLを開くことでCactiのインストールを開始します。
最初の画面でGPLライセンス契約に同意することを確認し、次のボタンをクリックして続行します。以下のスクリーンショットに示すように。
次の画面で、インストーラーによってすべてのシステム要件が通過したかどうかを確認し、次のボタンをクリックしてインストールプロセスを進めます。
次に、インストールタイプとしてNew Primary Serverを選択し、次のボタンをクリックして続行します。
すべての重要なバイナリの場所とバージョンがCactiインストーラーによって正しく検出されたかどうかを確認します。また、Spineバイナリパスを/usr/local/spine/bin/spineに更新する必要があります。クラシックテーマを選択し、次のボタンをクリックして続行します。
次の画面で、インストーラーはApache Webルートディレクトリの権限を確認し、WebサーバーがCactiインストールパスに書き込みを行うことができるかどうかを確認します。必要なすべてのパスが書き込み可能であれば、次のボタンをクリックして続行します。
提供されたリストからすべてのテンプレートを選択し、インストールを完了するために完了ボタンをクリックします。
インストールプロセスが完了したら、以下のデフォルトの資格情報を使用してCacti Webインターフェースにログインし、adminのデフォルトパスワードを新しい強力なパスワードに置き換えます。以下のスクリーンショットに示すように。
ユーザー名: admin パスワード: admin
Cacti Webインターフェースにログインしたら、Console -> Configuration -> Settings -> Pollerに移動し、ポーラータイプをcmd.phpからspineバイナリに変更します。以下の画像に示すように、下にスクロールして保存ボタンをクリックして変更を適用します。
次に、Console -> Configuration -> Settings -> Pathsに移動し、Cacti-Spineの設定ファイルパスを/usr/local/spine/etc/spine.confに設定し、保存ボタンをクリックして設定を適用します。以下の画像に示すように。
SNMPを介して監視される新しいデバイスを追加するには、Console -> Management -> Devicesに移動し、+アイコンをクリックします。以下の画像に示すように、デモンストレーションの目的で、CactiによってSNMPプロトコルを介して監視されるlocalhostマシンを追加します。
新しく追加されたLinuxデバイスがSNMPを介して監視されるため、デバイスの説明、ホスト名、FQDN、または監視対象デバイスのIPアドレスを追加し、デバイステンプレートとしてLocal Linux Machineを選択します。SNMPオプションでは、適切なSNMPバージョン(この場合はバージョン2)を選択し、デバイスのSNMPコミュニティ文字列を記入します。以下の画像に示すように。SNMPポートが変更されていない場合は、ポート値をデフォルトのままにし、完了したら下にスクロールして作成ボタンをクリックしてデバイスをCactiデータベースに追加します。
デバイスがCactiデータベースに追加されると、デバイスページの上部にSNMPの概要が表示され、デバイスが正しく検出されてクエリされた場合に表示されます。このデバイスのためにRRDTool SNMPグラフを作成するには、このデバイスのグラフを作成リンクをクリックし、さらに調べたいグラフテンプレートにチェックを入れ、作成ボタンをクリックして次の画面に進み、再度作成ボタンをクリックして完了します。以下の画像に示すように。
グラフを視覚化するには、Console -> Management -> Devicesに移動し、アクションを実行したいデバイスをチェックし、アクションメニューからデフォルトツリーに配置を選択します。
新しい画面で、宛先ブランチをデフォルトのままにして、続行ボタンをクリックしてプロセスを完了します。以下の画像に示すように。
最後に、Cactiポーラーが監視されているデバイスに関するデータを収集し始めるために、デバイスをSNMP経由で5分ごとにクエリする新しいcronジョブを追加する必要があります。以下のコマンドを実行して、スケジュールされたジョブをApacheランタイムユーザーが所有し、実行できるようにします。
crontab –u www-data –eCrontabジョブ行:
*/5 * * * * /usr/bin/php /var/www/html/poller.php > /var/www/html/log/cron.log 2>&1
プーラーcronジョブを追加したら、Cactiがデータを収集する時間を与えるために約30分待ち、その後Cacti Webインターフェースのグラフタブに移動します。デフォルトツリーを展開すると、監視されているマシンから収集されたグラフが表示されるはずです。以下のスクリーンショットに示すように。
現時点では、CactiインターフェースはHTTPプロトコルを介してクライアントのブラウザから安全でない方法でアクセスできます。デバイスに関するすべての機密情報やCactiのログイン資格情報は、平文で送信されます。クライアントのブラウザとCacti Webインターフェース間のトラフィックを暗号化するために、以下のコマンドをroot権限で実行してApache SSL構成を有効にします。
a2enmod ssla2ensite default-ssl.confsystemctl restart apache2その後、HTTPSプロトコルを介してCacti Webインターフェースに移動します。Apache Webサーバーは接続を暗号化するために自己署名証明書を使用しているため、ブラウザにエラーメッセージが表示されるはずです。エラーを受け入れると、以下のスクリーンショットに示すように、Cacti Webインターフェースに安全にアクセスできるようになります。
以上です!Debian 9でソースからCactiを正常にインストールおよび構成しました。Cactiに関するその他のカスタム設定については、以下のリンクのドキュメントページを訪問してください。https://docs.cacti.net/manual:100
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。