2023-07-30 Cacti , Others , Rocky Linux/CentOS
Rocky Linux での Cacti 構築手順です。
Rocky Linux への Cacti パッケージのインストールから、ブラウザでの Cacti 初期インストールまでの手順をまとめています。
※Azure上の仮想マシンを利用して、手順を確認しています。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※手順確認には、Rocky Linux 8を利用しています。
パッケージを使ってCactiをインストールする手順
参考にしたサイト
今回のインストール手順確認にあたっては、こちらのサイトを参考にしました。
Installing on CentOS/RHEL/ROCKY
構築環境の条件
手順確認に利用した環境です。
Rocky Linuxは仮想マシン上で動作しています。
パッケージを利用してインストールを行っています。
仮想マシンのリソース
Standard D2lds v5 (2 vcpu 数、4 GiB メモリ)
Rocky Linux release 8.8 (Green Obsidian)
パッケージ(セットアップ時点(2023年7月)の最新を使用)
cactiは1.2.23
mariadb-server-10.3.35
php-fpm-8.2.8
cacti-spine
※SELinuxは無効化した状態で作業を実施しています。SELinuxを有効化している場合は、追加でSELinuxの許可設定が必要になります。
仮想マシンをデプロイ
仮想マシンのデプロイ手順は、こちらで紹介しています。
SELinuxの無効化手順もこちらで紹介しています。
Rocky Linux9の場合のSELinux無効化手順については、こちらで紹介しています。
パッケージインストール
パッケージをインストールします。
Cactiをインストールすると、php7も同時にインストールされます。
php8.xを利用する場合は、remiリポジトリを有効化し、php8.xを利用するように設定します。
RRD Tool、PHP、httpd(Apache)などはCactiの依存関係として自動的にインストールされます。
mariadb-serverもCactiと一緒にインストールされますが、パッケージ不足によるエラーが発生したため、今回は個別にインストールしています。
# epelをインストール
[root@sv-cacti-01 ~]#
dnf install epel-release
# remiリポジトリを設定(PHP8.2を使用するように変更)
[root@sv-cacti-01 ~]#
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
[root@sv-cacti-01 ~]#
dnf clean all
[root@sv-cacti-01 ~]# dnf -y makecache
[root@sv-cacti-01 ~]#
dnf module list php
[root@sv-cacti-01 ~]#
dnf -y module reset php
[root@sv-cacti-01 ~]# dnf -y module enable php:remi-8.2
# パッケージをインストール
[root@sv-cacti-01 ~]#
dnf –enablerepo=epel -y install -y mariadb-server mariadb mariadb-devel
[root@sv-cacti-01 ~]#
dnf –enablerepo=epel -y install cacti
[root@sv-cacti-01 ~]#
dnf –enablerepo=epel -y install cacti-spine
php.iniの編集
php.iniを編集します。
設定を行う前にファイルのバックアップを取得しています。
Cactiで必要となる設定項目を変更しています。
# PHP.iniの編集
[root@sv-cacti-01 ~]#
cp -p /etc/php.ini /etc/php.ini.`date “+%Y%m%d"`
[root@sv-cacti-01 ~]#
vi /etc/php.ini
# 追加変更内容
max_execution_time = 60
memory_limit = 512M
date.timezone = Asia/Tokyo
php-fpmの設定
php-fpmを設定します。
設定を行う前にファイルのバックアップを取得しています。
Cactiの初期セットアップでは必須の設定ではありませんが、php-fpmのCPU使用率が高くなる場合があったため、設定しています。
※設定値は一例です。利用用途や環境に応じて適切な値を設定します。
# PHP-fpmの設定
[root@sv-cacti-01 ~]#
cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.`date “+%Y%m%d"`
[root@sv-cacti-01 ~]#
vi /etc/php-fpm.d/www.conf
# 追加変更内容
pm = static
pm.max_children = 2
pm.max_requests = 500
MariaDBのセキュアインストール
MariaDBのセキュアインストールを実行します。
セキュアインストールを行う前に、MariaDBが起動していることを確認します。
# MariaDBを起動
[root@sv-cacti-01 my.cnf.d]#
systemctl start mariadb
# MariaDBのセキュアインストール
[root@sv-cacti-01 mariadb]#
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
# rootユーザーのパスワード入力(インストール直後はrootユーザー未設定なのでそのままEnterで進みます)
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
# rootユーザーのパスワード設定確認(yを選択してパスワード設定します)
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
# anonymousユーザーの削除確認(利用しないのでyを選択して削除します)
Remove anonymous users? [Y/n] y
… Success!
Normally, root should only be allowed to connect from 'localhost’. This
ensures that someone cannot guess at the root password from the network.
# rootユーザーのリモートログイン確認(リモートからのログイン要件が無い場合はyを選択します)
Disallow root login remotely? [Y/n] y
… Success!
By default, MariaDB comes with a database named 'test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
# testデータベースの削除確認(利用しないのでyを選択し削除します)
Remove test database and access to it? [Y/n] y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
# 権限テーブルのリロード確認
Reload privilege tables now? [Y/n] y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
MariaDBの設定
MariaDBを設定します。
TimeZoneの設定と、server.cnfの作成・設定を行います。
設定後にMariaDBを再起動します。
server.cnfの設定内容は、サーバのリソース(特にメモリサイズ)によって適切な値が異なります、
利用している環境に合わせて調整します。
※server.cnfはデフォルトでは存在しないため、新規作成します。
※MariaDBのサーバパラメータチェックはCactiセットアップ時に実行されます。Warningが発生した場合は、パラメータを調整します。
※Warningが発生しても、そのままセットアップを進めることができます。
※今回利用のしている環境で、Cactiのパラメータチェックでエラーが発生しないように調整した設定例を記載しています。
# ファイルバックアップ(今回はserver.cnfを別で作成するので必要ないが念のため)
[root@sv-cacti-01 my.cnf.d]#
cp -p /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.`date “+%Y%m%d"`
# TimeZoneを設定
[root@sv-cacti-01 mariadb]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:MariaDBに設定したrootユーザーのパスワードを入力
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list’ as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds’ as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi’ as time zone. Skipping it.
# MariaDBの設定をファイル追加(server.cnf)
[root@sv-cacti-01 my.cnf.d]#
vi /etc/my.cnf.d/server.cnf
# 追記内容
[mariadb-10.3]
default-time-zone=’Asia/Tokyo’
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_heap_table_size= 128M
tmp_table_size= 128M
join_buffer_size = 8M #Cacti設定時にエラーが発生しないようにした場合の設定値。
innodb_flush_log_at_timeout = 5
innodb_write_io_threads = 16
innodb_read_io_threads = 32
max_allowed_packet = 16777777
innodb_file_per_table = ON
innodb_buffer_pool_size = 2048M
innodb_flush_log_at_trx_commit = 2
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000
sort_buffer_size = 8M #Cacti設定時にエラーが発生しないようにした場合の設定値。
innodb_doublewrite = off
innodb_buffer_pool_instances = 10
innodb_file_format=Barracuda
innodb_large_prefix=1
# 設定反映(サービスを再起動)
[root@sv-cacti-01 my.cnf.d]#
systemctl restart mariadb
Cacti用のデータベース設定
Cacti用のデータベース作成、Cacti用DBユーザーの作成、権限付与、および文字コード設定を行います。
最後に、初期SQLファイルを読み込んでCacti用のテーブルを作成します。
※データベースユーザー名はcactiuserとしていますが、任意の名前に設定可能です。
# DB設定(データベース作成、ユーザー作成、権限付与、文字コード設定)
# DBへログイン
[root@sv-cacti-01 my.cnf.d]#
mysql -u root -p
# DBを作成
MariaDB [(none)]> create database cacti;
# DBユーザーを作成
MariaDB [(none)]> CREATE USER 'cactiuser’@’localhost’ IDENTIFIED BY 'Cactiuserに設定するパスワード’;
# 権限を付与(データベース、TimeZone)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cacti.* TO 'cactiuser’@’localhost’;
MariaDB [(none)]> grant select on mysql.time_zone_name to cactiuser@’localhost’;
# 文字コードを設定
MariaDB [(none)]> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 変更内容を反映
MariaDB [(none)]> FLUSH PRIVILEGES;
# テーブルを作成(データベースCactiに作成)
MariaDB [(none)]>
use cacti;
Database changed
MariaDB [cacti]>
source /usr/share/doc/cacti/cacti.sql
MariaDB [cacti]>
FLUSH PRIVILEGES;
Cronを設定
CactiのCron設定を行います。
設定ファイル内の該当行のコメントアウトを外し、有効化します。
※時間の部分はPollerの実行間隔を指定します。例では5分間隔ですが1分間隔で実行する場合は、/1と記述します。
# Crond設定
[root@sv-cacti-01 my.cnf.d]#
vi /etc/cron.d/cacti
# コメントアウトを外して有効化
/5 * * * * apache /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
データベースの接続設定
データベースへの接続設定を行います。
設定ファイルをバックアップした上で編集しています。
ユーザー名やパスワードなどの設定を、必要に応じて変更します。
※今回は、DBユーザー名をcactiuserとしているため、ユーザー名の変更は必要ありませんでした。
# config.phpの設定
[root@sv-cacti-01 my.cnf.d]#
cp -p /usr/share/cacti/include/config.php /usr/share/cacti/include/config.php.`date “+%Y%m%d"`
[root@sv-cacti-01 my.cnf.d]#
vi /usr/share/cacti/include/config.php
$database_type = 'mysql’;
$database_default = 'cacti’;
$database_hostname = 'localhost’;
$database_username = 'cactiuser’;
$database_password = 'cactiuser(DBユーザー)のパスワード’;
$database_port = '3306’;
$database_retries = 5;
# db.phpの設定
[root@sv-cacti-01 my.cnf.d]#
cp -p/etc/cacti/db.php /etc/cacti/db.php.`date “+%Y%m%d"`
[root@sv-cacti-01 my.cnf.d]#
vi /etc/cacti/db.php
$database_type = 'mysql’;
$database_default = 'cacti’;
$database_hostname = 'localhost’;
$database_username = 'cactiuser’;
$database_password = 'cactiuser(DBユーザー)のパスワード’;
$database_port = '3306’;
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = ";
$database_ssl_cert = ";
$database_ssl_ca = ";
$database_persist = false;
Cacti Spineの設定
Cactiで利用するPollerのひとつで、Cactiで大量の監視データを効率よく収集するために利用します。
Cacti Spineにもデータベース接続用の設定が必要です。
設定ファイルをバックアップした後、ファイルを編集します。
MariaDB(Cactiのデータベース)へ接続するためのユーザー名やパスワードを設定します。
# spine.confの設定
[root@sv-cacti-01 my.cnf.d]#
cp -p /etc/spine.conf /etc/spine.conf.`date “+%Y%m%d"`
[root@sv-cacti-01 my.cnf.d]#
vi /etc/spine.conf
DB_Host localhost
DB_Database cacti
DB_User cactiuser
DB_Pass cactiuser(DBユーザー)のパスワード
DB_Port 3306
snmpd.confの設定
snmpd.confを設定します。
今回は、コミュニティ名やシステムロケーション名はtamanegiに設定しています。
利用している環境にあわせて設定します。
# snmpd.conf設定
[root@sv-cacti-01 my.cnf.d]#
cp -p /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.`date “+%Y%m%d"`
[root@sv-cacti-01 my.cnf.d]#
vi /etc/snmp/snmpd.conf
# 設定例(有効な行のみを抜粋しています。)
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
# group context sec.model sec.level prefix read write notif
access notConfigGroup “" any noauth exact systemview none none
## sec.name source community
com2sec local localhost tamanegi #LocalHostのコミュニティ名を設定
com2sec mynetwork 10.0.1.0/24 tamanegi #MyNetworkのコミュニティ名を設定
## group.name sec.model sec.name
group MyRWGroup v2c local
group MyROGroup v2c mynetwork
## incl/excl subtree mask
view all included .1 80
## context sec.model sec.level prefix read write notif
access MyROGroup “" v2c noauth exact all none none
access MyRWGroup “" v2c noauth exact all all all
syslocation tamanegi (edit /etc/snmp/snmpd.conf) #syslocationにもTamanegiを設定しています。
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes
※検証用の設定です。利用している環境に合わせて適宜修正します。
httpdの設定
httpdの設定です。
パッケージからCactiをインストールした場合、自動的にcacti.confが生成されます。
cacti.confファイルを編集し、アクセスを許可したいIPアドレスをRequire ipディレクティブで追加します。
# cacti.conf(httpd.conf)設定
[root@sv-cacti-01 my.cnf.d]#
cp -p /etc/httpd/conf.d/cacti.conf /etc/httpd/conf.d/cacti.conf.`date “+%Y%m%d"`
[root@sv-cacti-01 my.cnf.d]#
vi /etc/httpd/conf.d/cacti.conf
# RequiredIPを追加
#
# Cacti: An rrd based graphing tool
#
# For security reasons, the Cacti web interface is accessible only to
# localhost in the default configuration. If you want to allow other clients
# to access your Cacti installation, change the httpd ACLs below.
# For example:
# On httpd 2.4, change “Require host localhost" to “Require all granted".
# On httpd 2.2, change “Allow from localhost" to “Allow from all".
Alias /cacti /usr/share/cacti
<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require ip 許可したいIP(例 10.0.1.0/16)
Require host localhost
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from localhost
</IfModule>
</Directory>
~以下略~
サービスの起動設定
サービスを起動します。
サービスの自動起動も設定します。
# サービス起動
[root@sv-cacti-01 my.cnf.d]#
systemctl restart mariadb
[root@sv-cacti-01 my.cnf.d]# systemctl start httpd
[root@sv-cacti-01 my.cnf.d]#
systemctl start php-fpm
# 自動起動有効化
[root@sv-cacti-01 my.cnf.d]#
systemctl enable mariadb
[root@sv-cacti-01 my.cnf.d]#
systemctl enable httpd
[root@sv-cacti-01 my.cnf.d]#
systemctl enable php-fpm
—広告—
ブラウザからCactiの初期設定
ブラウザでCactiにアクセスして初期設定を行います。
http://サーバのIPアドレス/cacti/ にアクセスします。
※Cactiをパッケージからインストールした直後のユーザー名とパスワードは、共にadminです。
Cactiの初期設定手順
ブラウザでアクセスするとログイン画面が表示されます。
初期設定のユーザー名とパスワードを入力してログインします。
パスワード変更画面が表示されます。
初期パスワードの変更が求められます。
新しいパスワードを設定し、Saveします。
ライセンス確認画面が表示されます。
この画面でテーマや言語の設定もします。
※今回は、画面表示のテーマは変更せず、表示言語のみ日本語に設定しています。
パッケージのインストール状況や設定内容の確認画面です。
PHPやMariaDBの設定値(パラメータ)が推奨値に沿っていない場合は、警告やエラーが表示されます。
必要に応じて設定を調整します。
※警告の場合は、そのままセットアップを進めることも可能です。
インストールの種類を選択する画面です。
今回は新規サーバーですので、変更せずにそのまま進めます。
ディレクトリのパーミッション確認画面です。
警告が表示された場合は、指示に従ってパーミッションを設定します。
※警告とともに、必要なパーミッションを設定するためのコマンドも表示されます。
各アプリケーションのパスやバージョンをチェックする画面です。
今回は、Spine Config File Pathが未入力だったため、追加で設定しています。
※パスが入力されていない場合でも正常(グリーン)と表示されることがあります。
データ入力方法に関する確認画面が表示されます。
チェックを入れて次に進みます。
デフォルト設定値の確認画面です。
データ取得間隔の設定などを行います。
Default Automation Networkでは、自動スキャンの可否や対象となるネットワークレンジの設定が可能です。
今回は、データ取得間隔は変更せず、Network Rangeのみ自身のネットワークに変更しています。
Automation Networks
テンプレート設定画面です。
必要なテンプレートにチェックを入れ、次へ進みます。
Device Templates
データベースおよびテーブルのセットアップ確認画面です。
そのまま次へ進みます。
インストール確認画面です。
インストールを確認するチェックを入れ、インストールを開始します。
完了画面が表示されたら、始めるを選択します。
Cactiのトップ画面が表示され、正常にインストールできたことを確認できます。
—広告—
最後に
今回は、Rocky LinuxにCactiをパッケージを利用してインストールする手順について確認しました。
今回はローカルにインストールしたデータベースを利用していますが、パブリッククラウド上の仮想マシンなどでは、外部のマネージドデータベースを利用することも可能です。
引き続き、いろいろを試してみたいと思います。
Windows ServerのSNMPサービス構成からCactiでのデバイス登録手順については、こちらで紹介しています。