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
をインストールします。
| yum -y install mariadb-server
|
Cacti 用に /etc/my.cnf.d/server.cnf
へ以下を追記します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | 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 のインストール
PHP も Amazon 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
にあるのですが、下記の部分があります。
1
2
3
4
5
6
7
8
9
10
11
12 | <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
を追記しています)。
1
2
3
4
5
6
7
8
9
10
11
12
13 | <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 のインストールウィザードが表示されました。