Amazon Linux2 に Cacti をインストールする
Cacti は OSS の監視ツールです。 PHP ベースで動作します。 今回は Amazon Linux2 に Cacti をインストールする手順をメモしておきます。

MariaDB のインストール¶
Amazon Linux2 標準リポジトリからインストール出来る MariaDB は 5.x 系だったので MariaDB の公式リポジトリから MariaDB をインストールします。 まず、リポジトリの定義を追加します。
cat << EOF > /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
mariadb-server をインストールします。
Cacti 用に /etc/my.cnf.d/server.cnf へ以下を追記します。
cat << EOF >> /etc/my.cnf.d/server.cnf
[server]
collation_server=utf8mb4_unicode_ci
character-set-server=utf8mb4
character_set_client=utf8mb4
max_connections=100
max_heap_table_size=16M
tmp_table_size=16M
join_buffer_size=32M
innodb_file_format=Barracuda
innodb_large_prefix=1
innodb_buffer_pool_size=256M
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_buffer_pool_instances=10
innodb_io_capacity=5000
EOF
MariaDB を起動します。
mysql_secure_installation を実行して不要な設定は削除しておきます。
Cacti 用のデータベースも作成しておきます。
mysql -u root -p
CREATE DATABASE cacti;
GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'cacti';
GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'cacti';
FLUSH PRIVILEGES;
ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
QUIT;
PHP のインストール¶
PHP も Amazon Linux2 の標準リポジトリからインストールすると 5.x 系になってしまう為、Amazon Extras から 7.4 をインストールします。
PHP の設定をチューニングしておきます。
sed -i -e "s/^max_execution_time = 30/max_execution_time = 60/g" /etc/php.ini
sed -i -e "s/^memory_limit = 128M/memory_limit = 512M/g" /etc/php.ini
sed -i -e "s/^;date.timezone =/date.timezone = 'Asia\/Tokyo'/g" /etc/php.ini
Cacti のインストール¶
いよいよ Cacti をインストールします。 EPEL からインストールします。
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install cacti-spine
Cacti をインストールすると cron の定期実行設定が行われます。 /etc/cron.d/cacti が実態なのですが、デフォルトではコメントアウトされているので、行頭のコメントアウトを削除します。
Cacti 用の SQL を実行しておきます。
MariaDB 上に作成したデータベースにあわせて /usr/share/cacti/include/config.php ファイルのユーザ名やパスワード情報に該当する下記項目を適宜、書き換えます。
$database_type = 'mysql';$database_default = 'cacti';$database_hostname = 'localhost';$database_username = 'cactiuser';$database_password = 'cactiuser';$database_port = '3306';
同じく /etc/spine.conf ファイルの下記項目を適宜、書き換えます。
DB_Host localhostDB_Database cactiDB_User cactiuserDB_Pass cactiuserDB_Port 3306#RDB_Host localhost#RDB_Database cacti#RDB_User cactiuser#RDB_Pass cactiuser#RDB_Port 3306
Cacti のコンテンツは /usr/share/cacti に存在します。 デフォルトでは所有権が root になっていたので、Apache を動作させるユーザへ修正しておきます。
Apache の設定¶
Cacti のインストール時に Apache もインストールされます。 必要に応じて Apache が待ち受けるポート番号を変更しておきます。
Cacti に関する設定は /etc/httpd/conf.d/cacti.conf にあるのですが、下記の部分があります。
<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require host localhost
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from localhost
</IfModule>
</Directory>
ここへ以下のように追記します (Require all granted を追記しています)。
<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require host localhost
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from localhost
</IfModule>
</Directory>
Apache を起動します。
これで http://xxx.xxx.xxx.xxx/cacti/ へアクセスすると Cacti のインストールウィザードが表示されました。