Linux
CentOS
cacti

CentOS7にcacti1.1.38をインストールする+グラフを日本語化する

はじめに

このエントリはCentOS7にcactiをインストールする手順を記載します。

対象機器および環境

  • CentOS7(7.6.1810)

関連するエントリ

cactiの過去グラフが平均化されないようにする方法

cactiとは

cacti

サーバや通信機器のグラフレポーティングツール。
基本的な機能はSNMPにより情報を取得しグラフ化する。
データの収集はrrdtoolによる。
自作スクリプトを利用すればあらゆる数値情報をグラフ化できる。

2019/1/9時点での最新は1.2.0
yumインストールの場合は1.1.38

インストール手順

SELinux

/etc/selinux/config
-----8<-----snip-----8<-----
#SELINUX=enforced
SELINUX=disabled
-----8<-----snip-----8<-----

再起動して設定を適用する。

# shutdown -r now
# getenforce
Disabled
#

パッケージインストール

cactiはepelに含まれるので、リポジトリをインストールする。
cactiと付随するソフトウェアは依存関係で自動的にインストールされる。
日本語フォントも入れておくので、明示的に指定する。

# yum install epel-release
# yum install mariadb-server cacti-spine php ipa-*-fonts

ファイアウォール設定(firewalld)

必要なポートに穴あけ

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=snmp --zone=public --permanent
# firewall-cmd --add-service=snmptrap --zone=public --permanent
# firewall-cmd --reload

apache設定

日本語対応

/etc/sysconfig/httpd
-----8<-----snip-----8<-----
#LANG=C
HTTPD_LANG=ja_JP.UTF-8
-----8<-----snip-----8<-----

サービス自動起動の設定

# systemctl enable httpd
# systemctl start httpd
# systemctl status httpd

php環境設定

/etc/php.ini
-----8<-----snip-----8<-----
date.timezone = 'Asia/Tokyo'
-----8<-----snip-----8<-----

MariaDBの設定

MariaDBの設定はcacti利用時にチェックされる下記の設定を追加する。

/etc/my.cnf.d/server.cnf
-----8<-----snip-----8<-----
[mysqld]
collation_server=utf8_general_ci
character-set-server=utf8
max_heap_table_size=90M
max_allowed_packet=16777216
tmp_table_size=64M
join_buffer_size=64M
innodb_file_per_table=ON
innodb_buffer_pool_size=449M
innodb_doublewrite=OFF
innodb_additional_mem_pool_size=80M
innodb_flush_log_at_trx_commit=2
-----8<-----snip-----8<-----

サービス自動起動の設定

# systemctl enable mariadb
# systemctl status mariadb
# systemctl start  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.

Enter current password for root (enter for none):                                   <--- ここは現在のroot(=空のはず)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) <--- なにか入れるとエラーになる
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.

Set root password? [Y/n] y                                                          <--- rootパスワードはここで決める
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.

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.

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.

Remove test database and access to it? [Y/n] y                                      <--- testデータベースを削除
 - 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!
#

タイムゾーン設定

# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

cacti用データベースの作成

# mysql -u root -p
MariaDB> create database cacti;
MariaDB> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipwd';
MariaDB> grant select on mysql.time_zone_name to cactiuser@localhost identified by 'cactipwd';
MariaDB> flush privileges;
MariaDB> quit;

# mysql -u cactiuser -pcactipwd cacti < /usr/share/doc/cacti-1.1.*/cacti.sql

caci環境設定

cron有効化(デフォルトで設定されているもののコメントアウトを解除)

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

cactiで利用するデータベース設定

/usr/share/cacti/include/config.php
-----8<-----snip-----8<-----
$database_default  = 'cacti';
$database_username = 'cactiuser';
$database_password = 'cactipwd';
-----8<-----snip-----8<-----

spine用の設定ファイルをコピーしてから編集
cp /etc/spine.conf.dist /etc/spine.conf

/etc/spine.conf
-----8<-----snip-----8<-----
DB_Host                 localhost
DB_Database             cacti
DB_User                 cactiuser
DB_Pass                 cactipwd
DB_Port                 3306

RDB_Host                localhost
RDB_Database            cacti
RDB_User                cactiuser
RDB_Pass                cactipwd
RDB_Port                3306
-----8<-----snip-----8<-----

apache用の設定ファイル修正

/etc/httpd/conf.d/cacti.conf
-----8<-----snip-----8<-----
<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>
-----8<-----snip-----8<-----

apacheを再起動する
systemctl restart httpd

web上での初期設定

ブラウザで
http://[IPアドレス]/cacti/
にアクセスする。

ライセンスに同意して次へ進む
image.png

 
モジュールの確認
(問題なければ緑で表示)
image.png

 
モジュールの確認
(問題なければ緑で表示)
image.png

データベースパラメータの確認
(問題なければ緑で表示)
image.png

 
確認に問題なければ、最下部の「Next」がクリックできる状態になるので、クリックする。
(問題がある場合には、確認結果が赤文字になり、「Next」がクリックできない状態になる)
image.png

 
分散型でなければ「Primary」(デフォルト)を選択して「Next」をクリック
image.png

 
その他のソフトウェア確認に問題なければ、最下部の「Next」がクリックできる状態になるので、クリックする。
(問題がある場合には、確認結果が赤文字になり、「Next」がクリックできない状態になる)
image.png

 
ディレクトリのパーミッション確認に問題なければ、最下部の「Next」がクリックできる状態になるので、クリックする。
(問題がある場合には、確認結果が赤文字になり、「Next」がクリックできない状態になる)
image.png

 
必要なテンプレートを選択して「Finish」をクリック
(とりあえず全部選択しといてよいです)
image.png

 
全部終わると、トップページに遷移します。
image.png

spineの設定

標準のPollerよりも高速なSpineでポーリングできるようにする。

上部メニュ「Console」→サイドメニュ「Configuration」→「Settings」→「Poller」タブのPollerTypeを "cmd.php" から "spine" に変更して、右下の「Save」をクリックする。
image.png

もし、うまく値が取得できない場合は、コマンドラインで動作確認してみる

# spine -V=3 -R
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 1.1.38 starting
2019/01/09 23:07:24 - SPINE: Poller[1] NOTE: Spine will support multithread device polling.
2019/01/09 23:07:24 - SPINE: Poller[1] DEBUG: Initial Value of Active Threads is 0
2019/01/09 23:07:24 - SPINE: Poller[1] SPINE: Active Threads is 1, Pending is 1
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] NOTE: There are '5' Polling Items for this Device
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] DS[1] SCRIPT: perl /usr/share/cacti/scripts/unix_processes.pl, output: 184
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] DS[2] SCRIPT: perl /usr/share/cacti/scripts/loadavg_multi.pl, output: 1min:0.00 5min:0.02 10min:0.09
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] DS[3] SCRIPT: perl /usr/share/cacti/scripts/unix_users.pl '', output: 1
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] DS[4] SCRIPT: perl /usr/share/cacti/scripts/linux_memory.pl 'MemFree:', output: 793572
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] DS[5] SCRIPT: perl /usr/share/cacti/scripts/linux_memory.pl 'SwapFree:', output: 2097148
2019/01/09 23:07:24 - SPINE: Poller[1] Device[1] TH[1] Total Time: 0.058 Seconds
2019/01/09 23:07:24 - SPINE: Poller[1] POLLR: Active Threads is 0, Pending is 0
2019/01/09 23:07:25 - SPINE: Poller[1] SPINE: The Final Value of Threads is 0
2019/01/09 23:07:25 - SPINE: Poller[1] Time: 1.0277 s, Threads: 1, Devices: 1
#

outputにそれっぽい数字が取得できていることが確認できれば、取得できているはず。

動作確認

 
適当なグラフのタイトルを日本語にしてみると、きちんと日本語化もできています。
image.png

その他の設定

過去グラフの参照

インストール直後のデフォルト設定のままでは、3日以上前のデータは平均化され、取得した値が消えてしまいます。
以下参照して、長期間データを細かく取得できるようにしておくとよいです。

cactiの過去グラフが平均化されないようにする方法

https化

自営CAでのサーバ証明書発行は こちら を参照してください。

# yum install mod_ssl
# systemctl restart httpd
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

さいごに

感想

0.8.8の頃に比べると格段にインストールしやくすなったと思います。
1.xになってUIもスタイリッシュになったのですが、動作がもっさりしてしまったような。。。