らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

Amazon Linux2 に Cacti をインストールする

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

f:id:sig9:20200709160308p:plain:w800

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 をインストールします。

yum -y install 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 を起動します。

systemctl enable mariadb
systemctl start  mariadb

mysql_secure_installation を実行して不要な設定は削除しておきます。

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 のインストール

PHPAmazon Linux2 の標準リポジトリからインストールすると 5.x 系になってしまう為、Amazon Extras から 7.4 をインストールします。

amazon-linux-extras install -y php7.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 が実態なのですが、デフォルトではコメントアウトされているので、行頭のコメントアウトを削除します。

*/5 * * * *    apache  /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&

Cacti 用の SQL を実行しておきます。

mysql -u cacti -pcacti cacti < /usr/share/doc/cacti-1.2.12/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 localhost
  • DB_Database cacti
  • DB_User cactiuser
  • DB_Pass cactiuser
  • DB_Port 3306
  • #RDB_Host localhost
  • #RDB_Database cacti
  • #RDB_User cactiuser
  • #RDB_Pass cactiuser
  • #RDB_Port 3306

Cacti のコンテンツは /usr/share/cacti に存在します。 デフォルトでは所有権が root になっていたので、Apache を動作させるユーザへ修正しておきます。

chown -R apache:apache /usr/share/cacti

Apache の設定

Cacti のインストール時に Apache もインストールされます。 必要に応じて Apache が待ち受けるポート番号を変更しておきます。

sed -i -e "s/^Listen 80/Listen 8080/g" /etc/httpd/conf/httpd.conf

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 を起動します。

systemctl enable httpd
systemctl start httpd

これで http://xxx.xxx.xxx.xxx/cacti/ へアクセスすると Cacti のインストールウィザードが表示されました。