CactiはSNMP型のパフォーマンス収集ツールです。このページではCactiのインストール方法について示します。最近は下火になってしまい使用する機会も減ってきましたが、諸所の事情でCactiを使わざるを得ない方向けに、この記事は削除せずに残しておきます。
Cactiのインストール
Cactiのインストール
Cactiはepelリポジトリに格納されています。CentOS 8.X代でも一応はメンテナンスは続けられているようでダウンロードは可能です。インストールの操作例は以下の通りです。
dnf install epel-release dnf install cacti
MariaDB(MySQL)への接続情報
Cactiは設定情報をMariaDBへ格納します。/etc/cacti/db.phpを閲覧し、MariaDBへの接続情報を確認します。デフォルト設定を使用したくない場合は、/etc/cacti/db.phpを編集しても差し支えございません。
# view /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 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
データベースとユーザ作成後、MariaDBにログインできる事を確認します。
[root@centos82 ~]# mysql -ucactiuser -pcactiuser --host=localhost cacti Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 10.3.17-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [cacti]>
MariaDBへ初期データを流し込みます。
mysql -ucactiuser -pcactiuser --host=localhost cacti \ < /usr/share/doc/cacti/cacti.sql
httpdの設定
Cactiと同時にApacheもインストールされます。明示的なApacheのインストール操作は不要です。まずはApacheを起動させます。
systemctl enable httpd.service --now
デフォルトではローカルホストからのアクセスのみしか受け付けないので、Apahceのアクセス許可を適宜変更します。設定変更例は以下の通りです。
# vi /etc/httpd/conf.d/cacti.conf Alias /cacti /usr/share/cacti <Directory /usr/share/cacti/> <IfModule mod_authz_core.c> # httpd 2.4 Require host localhost Require ip 192.168.63.0/24 </IfModule> <IfModule !mod_authz_core.c> # httpd 2.2 Order deny,allow Deny from all Allow from localhost </IfModule> </Directory>
再起動で設定を反映させます。
systemctl restart httpd.service
ブラウザで以下URLへアクセスし、Cactiの画面にアクセスできる事ができる事を確認します。アクセス可能ならば、初期ユーザ「admin」、初期パスワード「admin」でログインします。
http://<ip address>/cacti/
初期パスワードを変更するように促されます。パスワードを変更してください。
言語設定も可能です。ただし、日本語されている部分は多くなく、気持ち程度が日本語に変わります。
ライセンスに同意し「開始」を押下します。
Requirementを満たしていない事項が表示されます。これを満たすまでCactiの操作を開始する事ができません。
チューニング
PHP タイムゾーン
PHPに関するエラーを確認します。「エラー」と書かれているタイムゾーン設定に関しては修正必須で、「警告」と書かれている事項に関しては修正は任意です。
/etc/php.iniを以下のように変更します。
# vi /etc/pip.ini <omitted> ; 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 <omitted> ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 400M <omitted> [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = date.timezone = Asia/Tokyo
設定を反映させるためにphp-fpmを再起動します。
systemctl restart php-fpm.service
ブラウザをリロードし、エラーが解消した事を確認します。
MariaDB タイムゾーン
以下のようなエラーメッセージが表示されています。
エラー: Your Cacti database login account does not have access to the MySQL TimeZone database. Please provide the Cacti database account "select" access to the "time_zone_name" table in the "mysql" database, and populate MySQL's TimeZone information before proceeding.
mysqlデータベースのtime_zone_nameテーブルにアクセス権が必要とのことです。
アクセス権の設定も必要ですが、初期設定ではMariaDB(MySQL)にはタイムゾーンが設定されていません。アクセス権の設定前にタイムゾーンを設定します。まずはタイムゾーンの設定を行うために必要なテーブルをmysqlデータベースに対して流し込みます。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot mysql mysql -u root -e "SET GLOBAL time_zone = 'Asia/Tokyo';"
MariaDBの設定ファイルを開きmysqldに対してタイムゾーンの設定を行います。
# vi /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の再起動後に設定が反映されているかどうかを確認します。
[root@centos82 ~]# systemctl restart mariadb.service [root@centos82 ~]# mysql -uroot -e "show variables like '%time_zone%';" +------------------+------------+ | Variable_name | Value | +------------------+------------+ | system_time_zone | JST | | time_zone | Asia/Tokyo | +------------------+------------+ [root@centos82 ~]#
タイムゾーンの設定完了後、cactiuserに対してmysqlデータベースのtime_zone_nameテーブルに対してSELECT(読み取り)が可能になる権限を与えます。
mysql -uroot << EOF grant select on mysql.time_zone_name to cactiuser@localhost identified by 'cactiuser'; flush privileges ; EOF
ブラウザをリロードし、エラーが解消した事を確認します。
MariaDB チューニング
MariaDBに対するチューニングを行います。これは必須設定ではないので、パフォーマンスを気にする必要がない小規模な環境ならば無視しても差し支えない手順です。
まずはエラーの内容を確認します。
エラーを訂正するよう、MariaDBの設定をチューニングします。設定例は以下の通りです。
# vi /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
エラーが解消した事を確認します。確認できたら「次へ」を押下するとCactiのインストールが開始されます。
インストールウィザード
ブラウザでインストール時の初期パラメタを定義します。
「次に」を押下します。
「次に」を押下します。
「次に」を押下します。
「I have read this statement」にチェックを入れ、「次に」を押下します。「次に」を押下します。
監視間隔や機器を自動検出するセグメントの定義画面です。「次に」を押下します。
「次に」を押下します。
データベースcactiのcharacter setを「utf8mb4_unicode_ci」にするように指示されています。また、インストールの過程で、自動的にテーブルのcharacter setが「utf8mb4_unicode_ci」に変更される旨の注意書きが書かれています。
データベースcactiのcharacter setを変更します。
mysql -uroot \ -e 'ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'
操作後、「utf8mb4_unicode_ci」に変わった事を確認します。
[root@centos82 ~]# mysql -uroot -e 'show create database cacti' +----------+----------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+----------------------------------------------------------------------------------------------+ | cacti | CREATE DATABASE `cacti` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ | +----------+----------------------------------------------------------------------------------------------+ [root@centos82 ~]#
テーブルのcharacter setはインストール完了後に、自動的に「utf8mb4_unicode_ci」に変わるようです。確かに変更される事を確認するため、操作前のcharacter setを確認しておきます。
[root@centos82 ~]# mysql -uroot cacti -e 'show create table aggregate_graph_templates' +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | aggregate_graph_templates | CREATE TABLE `aggregate_graph_templates` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `graph_template_id` int(10) unsigned NOT NULL, `gprint_prefix` varchar(64) NOT NULL, `gprint_format` char(2) DEFAULT '', `graph_type` int(10) unsigned NOT NULL, `total` int(10) unsigned NOT NULL, `total_type` int(10) unsigned NOT NULL, `total_prefix` varchar(64) NOT NULL, `order_type` int(10) unsigned NOT NULL, `created` timestamp NOT NULL DEFAULT current_timestamp(), `user_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `graph_template_id` (`graph_template_id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='Template Definitions for Aggregate Graphs' | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ [root@centos82 ~]#
以上の操作および確認が完了しましたら、「次に」を押下します。
「インストールを確認」にチェックを入れ、「インストール」を押下します。
インストールが完了するまで待ちます。
インストール完了後、テーブルのcharacter setが「utf8mb4_unicode_ci」に変わった事を確認します。
[root@centos82 ~]# mysql -uroot cacti -e 'show create table aggregate_graph_templates' +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | aggregate_graph_templates | CREATE TABLE `aggregate_graph_templates` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `graph_template_id` int(10) unsigned NOT NULL, `gprint_prefix` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `gprint_format` char(2) COLLATE utf8mb4_unicode_ci DEFAULT '', `graph_type` int(10) unsigned NOT NULL, `total` int(10) unsigned NOT NULL, `total_type` int(10) unsigned NOT NULL, `total_prefix` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, `order_type` int(10) unsigned NOT NULL, `created` timestamp NOT NULL DEFAULT current_timestamp(), `user_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `graph_template_id` (`graph_template_id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='Template Definitions for Aggregate Graphs' | +---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+