Cactiのインストール

スポンサーリンク

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/

Cactiの初回ログイン

初期パスワードを変更するように促されます。パスワードを変更してください。

Cactiの初回パスワード変更

言語設定も可能です。ただし、日本語されている部分は多くなく、気持ち程度が日本語に変わります。

Cactiの言語設定

ライセンスに同意し「開始」を押下します。

Cactiのライセンス同意

Requirementを満たしていない事項が表示されます。これを満たすまでCactiの操作を開始する事ができません。

Requirementの表示

チューニング

PHP タイムゾーン

PHPに関するエラーを確認します。「エラー」と書かれているタイムゾーン設定に関しては修正必須で、「警告」と書かれている事項に関しては修正は任意です。

Cactiの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

ブラウザをリロードし、エラーが解消した事を確認します。

CactiのPHPタイムゾーンに関するエラーが解消したことを確認

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.

CactiのMySQLタイムゾーンに関するエラーが発生することを確認

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

ブラウザをリロードし、エラーが解消した事を確認します。

actiのMySQLタイムゾーンに関するエラーが解消したことを確認

MariaDB チューニング

MariaDBに対するチューニングを行います。これは必須設定ではないので、パフォーマンスを気にする必要がない小規模な環境ならば無視しても差し支えない手順です。

まずはエラーの内容を確認します。

Cactiの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のインストールが開始されます。

CactiのMariaDBパラメタに関するエラーが解消したことを確認

インストールウィザード

ブラウザでインストール時の初期パラメタを定義します。

「次に」を押下します。

Cactiのインストールウィザード01

「次に」を押下します。

Cactiのインストールウィザード02

「次に」を押下します。

Cactiのインストールウィザード03

「I have read this statement」にチェックを入れ、「次に」を押下します。「次に」を押下します。

Cactiのインストールウィザード04

監視間隔や機器を自動検出するセグメントの定義画面です。「次に」を押下します。

Cactiのインストールウィザード05

「次に」を押下します。

Cactiのインストールウィザード06

データベースcactiのcharacter setを「utf8mb4_unicode_ci」にするように指示されています。また、インストールの過程で、自動的にテーブルのcharacter setが「utf8mb4_unicode_ci」に変更される旨の注意書きが書かれています。

Cactiのインストールウィザード07

データベース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 ~]# 

以上の操作および確認が完了しましたら、「次に」を押下します。

Cactiのインストールウィザード08

「インストールを確認」にチェックを入れ、「インストール」を押下します。

Cactiのインストールウィザード09

インストールが完了するまで待ちます。

Cactiのインストールウィザード10

インストール完了後、テーブルの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' |
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
タイトルとURLをコピーしました