CentOS7 Cacti1.1.xのインストールと基本設定

SNMP経由でサーバやネットワーク機器のCPU負荷やトラフィック流量などを計測するツールでcactiというツールがあります。オープンソースのソフトウェアで日本語化もされていないのですが、世界中で多数の実績があり使い勝手も非常によく見た目も美しく大変お勧めのツールです。似たようなツールでMRTGというのが昔からありますが、MRTGよりもcactiのほうが絶対にお勧めです。

オープンソースであるということから世界中の誰でも開発に参加できるという観点からcactiで取得できる様々なネットワーク機器ベンダー ( Cisco / Juniper など ) のtemplateが公開されており、有名どころの機器であれば大抵対応しておりリソースを計測することができます。当然ながら機器がSNMPに対応している必要があります。

■MySQLのインストールと設定

cactiはyumからインストールを行います。cactiのデータの保存はデータベースサーバ ( MySQL ) に保存しますので合わせてインストールします。デフォルトのMariaDBのバージョンは5.5.56 ( 2018/1/4現在 ) で、これだとcacti1.1.xに怒られるので先ず最初にこれをアンインストール後、MySQL5.7をインストールします。

# yum remove mariadb-libs
# yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# yum install php mysql-community-server
# rpm -qa | grep mysql
mysql-community-server-5.7.20-1.el7.x86_64
mysql-community-common-5.7.20-1.el7.x86_64
mysql57-community-release-el7-7.noarch
mysql-community-libs-5.7.20-1.el7.x86_64
mysql-community-client-5.7.20-1.el7.x86_64


これでインストールは完了なのでとりあえず起動まで確認します。

# systemctl enable mysqld
# systemctl start mysqld
# systemctl status mysqld

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 木 2018-01-04 16:35:22 JST; 4min 40s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  <省略>


この状態まできたら初期パスワードが自動生成されています。それが/var/log/mysqld.logに出力されているので以下のコマンドで確認します。末尾にある12桁の英数字が初期パスワードとなります。

# cat /var/log/mysqld.log | grep password
2018-01-04T07:35:12.878672Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXXXXXXX


この初期パスワードを使ってmysqlの初期設定を行っていきます。

# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:【上記の初期パスワードを入力】

The existing password for the user account root has expired. Please set a new password.

New password:【新しいパスワード】

Re-enter new password:【パスワードの再入力】※ポリシーにマッチしないと弾かれる
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.

All done!


続けてMySQLのタイムゾーンの設定を以下のコマンドで行います。

# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:【パスワード入力】
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' 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.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.

さらにMySQLの設定を/etc/my.cnfに追記します。

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

default-time-zone = Asia/Tokyo
max_heap_table_size = 256M
max_allowed_packet = 16777216
tmp_table_size = 64M
join_buffer_size = 64M
innodb_buffer_pool_size = 1024M
innodb_doublewrite = OFF
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
character_set_server=utf8mb4
collation_server = utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4


変更後、MySQLを再起動しステータスを確認します。

# systemctl restart mysqld
# systemctl status mysqld

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 木 2018-01-04 17:00:18 JST; 9s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  <省略>


cactiのデータベースはMySQLに登録しますので、cacti用データベースとユーザを以下のコマンドで作成し、全権限を与えておきます。

# mysql -u root -p
Enter password:【パスワード入力】
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database cacti;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'XXXXXX';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT SUPER ON *.* TO cactiuser@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

続けてテーブル参照権限を付与します。

# mysql -u root -p
Enter password:【パスワード入力】
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%time_zone%';
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | JST        |
| time_zone        | Asia/Tokyo |
+------------------+------------+
2 rows in set (0.01 sec)

mysql> grant select on mysql.time_zone_name to 'cactiuser'@'localhost' identified by 'XXXX';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> quit
Bye


これで下準備は整いました。


■cactiのインストールと設定


cactiをyumコマンドでインストールします。これは標準リポジトリでは提供されないのでepelリポジトリを追加しておいてください。

# yum install cacti
# rpm -qa | grep cacti
cacti-1.1.28-1.el7.noarch


上記で作ったMySQLのcacti用データベースに予め用意されたsqlを流し込みます。

# mysql -u cactiuser -p cacti < /usr/share/doc/cacti-1.1.28/cacti.sql
Enter password:【cactiuserのパスワード】

cactiの初期設定を行います。上記で作成したcactiuserのパスワードを編集する必要があります。

# vi /etc/cacti/db.php
<省略>

$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'XXXXXXXX';
$database_port     = '3306';
$database_ssl      = false;

<省略>

さらにcactiのpollerのcronの設定をコメントアウトします。

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


上記のpollerを使っても良いのですが、spineを使いたいという場合は以下のようにインストールを行います。

# yum install gcc-c++ autoconf automake dos2unix help2man net-snmp-devel mysql-community-devel
# wget https://www.cacti.net/downloads/spine/cacti-spine-1.1.28.tar.gz
# ./configure
# make
# make install


必要最低限のspineの設定を実施する必要があります。

# cd /usr/local/spine/etc/
# cp spine.conf.dist spine.conf
# vi spine.conf

<省略>
DB_Host                 localhost
DB_Database             cacti
DB_User                 cactiuser
DB_Pass                 XXXXXX
DB_Port                 3306
<省略>


以上で完了です。

■Apacheの設定

 

デフォルトではローカルホストからのみcactiにアクセスできるようになっていますので他ホストからもアクセスできるようapacheの設定を変更します。

 

# vi /etc/httpd/conf.d/cacti.conf

<省略>
<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>
<省略>


この状態でApacheを有効化し起動します。

# systemctl enable httpd.service
# systemctl start httpd.service


■phpの設定

次にPHPの設定ファイルを編集します。最低限、以下の2箇所の設定変更が必要となります。

# vi /etc/php.ini

// 692行目
default_charset = "UTF-8"

// 878行目
date.timezone = "Asia/Tokyo"


■Cactiの初期設定


インストールは完了したので以降はブラウザから操作を行います。アクセスURLはhttp://xx.yy.xx.yy/cacti/となります。最初のアクセスでは以下の画面が表示されますのでライセンスに同意してNextボタンをクリックします。




続いてインストールされているソフトウェアのチェックや設定のパラメータのチェックなどが行われます。満たしていないところなどありましたら赤字で表示されますので修正してから再度チェックしてみてください。

下記はそのまま次へをクリックします。


コマンドのパスチェックが行われます。問題なければそのまま次へをクリックします。


ディレクトリのパーミッションチェックが行われます。こちらも問題なければ次へ進んでください。

テンプレートのセットアップ画面が表示されます。右側のチェックを入れることで標準のテンプレートがインスールされます。


最後にログイン画面が表示されます。

参考URL:https://qiita.com/Apollo_/items/f3588de7d57690e08b37

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする