【AWS】RHEL8インスタンスへのCactiインストール

皆さんこんにちは。
AWS上にRHEL8 OSインスタンスを構築し、Cactiをインストールする際の手順を紹介します。

要件

  • OSはRHEL8.6を選択する
  • Cactiのパッケージは最新バージョンのものを利用する (今回はCacti-1.2.22-1バージョンを利用)
  • 社内環境のNW機器のパフォーマンス監視ができるようにする
  • 管理用サーバのため外部公開はせず、社内管理用セグメントからのみアクセスできるようにする

 

構成

AWS上に構築したい新Cactiサーバについて、想定する構成図を作成します。

※関係するリソース以外のものは省略して記載しています。
※別途「AWS Backup」「CloudWatch」の設定も入れていますが、今回の記事では設定手順は省略します。

ここでは例として、AWS上のCactiサーバから社内のネットワーク機器のリソースを監視できるように構築します。

その際、新サーバはAWS(社外)からVPNを経由して社内環境へアクセスする構成となるため、追加でUTMでのセキュリティポリシーの許可設定が必要になります。

さらにネットワーク機器自体も、場合によっては新CactiサーバからのSNMPアクセスを許可する必要があるので考慮が必要です。

 

Cactiサーバ構築手順

それでは実際に、Cactiサーバを構築する手順について記載します。

EC2インスタンスの作成

セキュリティグループの作成

インスタンスを作成する前に、要件に沿ったセキュリティグループを事前に作成します。
ルールは以下の通りです。

【インバウンドルール】

  • SSH ソース:管理用セグメント
  • HTTP ソース:管理用セグメント

【アウトバウンドルール】

デフォルトですべての通信が許可されています。(0.0.0.0/0)
必要に応じて制御の設定を追加ください。

AWSのセキュリティグループと合わせて、社内環境とAWS環境の境界となるUTMでも、必要に応じてセキュリティポリシーを設定しておきます。

SSH、HTTP以外にもAWS→社内ネットワーク機器向けのSNMP許可設定も必要となります。
※アウトバウンド通信のみのため、AWSのセキュリティグループでは設定不要

インスタンスの作成

インスタンス起動画面より、RHEL8.6のAMIを選択し、インスタンスを起動します。

その他以下の通り項目を設定します。

※ インスタンスタイプ・ストレージについては監視対象規模等に応じて適宜選択ください。

  • インスタンスタイプ:任意
  • ネットワーク:任意のVPC
  • サブネット:任意のプライベートサブネット
  • セキュリティグループ:既存のセキュリティグループを選択する(先ほど作成したグループを選択)
  • ストレージ:任意

インスタンスの作成が完了したら、インスタンスにSSHでアクセスし、設定を変更していきます。

パッケージインストール

Cacti(epel)インストール

Cactiが格納されている、epelリポジトリをまずインストールします。

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

その後、システムを更新します。

dnf update

続いて必要なパッケージをインストールします。
上記手順を実施しないと、下記epelインストールコマンドが実行できない場合があります。

dnf install epel-release -y
dnf install cacti -y

その他Cactiの利用に必要なApacheやsnmpdも一緒にインストールされるので、起動しておきます。

systemctl enable httpd.service --now
systemctl enable snmpd.service --now

MariaDBの設定・インストール

現CactiサーバではDBにMySQLを使用していましたが、新CactiサーバではMySQLと完全互換性のあるMariaDBを使用します。

Cactiの設定情報はMariaDBに格納され、デフォルトの接続情報は「db.php」ファイルから確認できます。
下記はデフォルトの設定ですが、必要に応じて値を変更しても構いません。

/etc/cacti/db.php

$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuser';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';

MariaDBをインストール・起動します。

dnf install mariadb-server -y
systemctl enable mariadb.service --now

起動後、MariaDBにデータベースとユーザを作成します。

mysql -uroot << EOF
create database cacti;
grant all privileges on cacti.* to cactiuser@localhost identified by 'cactiuser';
flush privileges;
EOF
mysql -u cactiuser -p cactiuser < /usr/share/doc/cacti/cacti.sql

cronの設定

Cactiがデータを取得するために、Cronの設定が必要です。
下記ファイルの行先頭のコメントアウトを外し、定期的なデータ取得ができるように設定します。

/etc/cron.d/cacti

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

再起動して設定を反映させます。

systemctl restart crond

 

httpdの設定

Apacheは追加のインストール不要で利用できるようになっています。
(Cactiインストール時に同時にインストールされるため)

Apahceのアクセス許可を変更し、管理セグメントからHTTPでアクセスできるようにします。

/etc/httpd/conf.d/cacti.conf

<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require host localhost
Require ip XXX.XXX.XXX.XXX/XX ##行を追加し、許可するIPを記載##
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from localhost
</IfModule>
</Directory>

再起動して設定を反映させます。

systemctl restart httpd.service

ブラウザからCacti(http://<Cacti IP>/cacti/)へアクセスし、ログイン画面が現れることを確認します。

初期ユーザー:admin
初期パスワード:admin

初回ログイン後、パスワードの変更を求められるので変更して保存します。

言語は「Japanese」を選択し、
「Accept GPL License Agreement」にチェックを入れます。

Cactiログイン後のチューニング

ログインし、ライセンス契約に同意しても、まだCactiを操作することはできません。

インストール前のチェック項目がの状態が「合格」にならないと、次の画面に進むことができません。
したがって、設定値のチューニングが必要となります。

 

PHPの設定

エラーが出ている項目、「max_execution_time」「memory_limit」「date.timezone」について行を追加し、推奨値を設定します。

/etc/pip.ini

--------------------------

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 60  ##追加##

--------------------------

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 400M  ##追加##

--------------------------

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo  ##追加##

変更を反映させるために再起動します。 その後ブラウザをリロードし、エラーが解消すればOKです。

systemctl restart httpd.service

 

MariaDBの設定

次にMariaDBへのアクセス権の設定と、タイムゾーンの設定が必要になります。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot mysql
mysql -u root -e "SET GLOBAL time_zone = 'Asia/Tokyo';"
/etc/my.cnf.d/mariadb-server.cnf

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
log-error=/var/log/mariadb/mariadb.log 
pid-file=/run/mariadb/mariadb.pid 
default-time-zone=Asia/Tokyo  ##追加##

MariaDBを再起動します。

systemctl restart mariadb.service

設定が反映されているか確認します。

mysql -uroot -e "show variables like '%time_zone%';"
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | JST        |
| time_zone        | Asia/Tokyo |
+------------------+------------+

またcactiuserに対しても権限を付与します。

mysql -uroot << EOF
grant select on mysql.time_zone_name to cactiuser@localhost identified by 'cactiuser';
flush privileges ;
EOF

以下は必須の変更ではありませんが、必要に応じて行を追加しMariaDBのチューニングを行います。

/etc/my.cnf.d/mariadb-server.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
default-time-zone=Asia/Tokyo
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
character_set_client=utf8mb4
max_heap_table_size=62M
tmp_table_size=62M
join_buffer_size=123M
innodb_file_format=Barracuda
innodb_large_prefix=1
innodb_buffer_pool_size=1G
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_buffer_pool_instances=19
innodb_io_capacity=5000
innodb_io_capacity_max=10000
innodb_doublewrite=OFF

 

DBのcharacter setの変更

データベースcactiのcharacter setを「utf8mb4_unicode_ci」に変更する必要があります。

mysql -uroot -e 'ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'

以下のコマンドで「utf8mb4_unicode_ci」に変わったことを確認できます。

mysql -uroot -e 'show create database cacti'

各種設定が完了したら、準備完了です。
Cacti画面でインストールを実行することで、Cactiが利用できるようになります。

タイトルとURLをコピーしました