はじめに
本ブログでは、MRTGによるネットワーク監視システムの構築において、MRTGによる監視システムの構築方法について解説しました。今回は、MRTGに変わるリソース監視ツールとして注目されているCactiを用いた監視システムの構築方法を、前編、後編の2回に分けて解説します。前編では、監視システムの構築方法を解説し、後編では、クライアントを監視システムに追加する方法を解説します。
前提条件
構築に必要なサーバー要件および、パッケージは下記のとおりです。
- サーバー要件
サーバー要件は、次のとおりです。
サーバー Cactiサーバー Cactiクライアント ホスト名 cacti-server cacti-client IPアドレス 10.0.2.15(eth0)
192.168.0.50(eth1)10.0.2.15(eth0)
192.168.0.30(eth1)OS CentOS 6.5 x86_64 minimal CentOS 6.5 i386 minimal HDD 8GB(SCSI) ← RAM 512MB ← Apache 2.2.15 n/a MySQL 5.5.36 crontabs 1.10.33 EPEL 6.8 remi 6.5 - ダウンロードまたは、インストールするパッケージ
ダウンロードまたは、インストールするパッケージは、次のとおりです。
パッケージ Cactiサーバー Cactiクライアント cacti 0.8.8b n/a net-snmp
net-snmp-utilsn/a 5.5.49
サーバーセットアップ
- Cactiのインストール
EPELリポジトリから、パッケージをインストールします。
$ sudo yum --enablerepo=epel -y install cacti
[vagrant@cacti-server ~]$ sudo yum --enablerepo=epel -y install cacti Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.kddilabs.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cacti.noarch 0:0.8.8b-3.el6 will be installed --> Processing Dependency: rrdtool for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: php-snmp for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: php-mysql for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: php for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: net-snmp-utils for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: net-snmp for package: cacti-0.8.8b-3.el6.noarch --> Processing Dependency: /usr/bin/php for package: cacti-0.8.8b-3.el6.noarch --> Running transaction check ---> Package net-snmp.x86_64 1:5.5-49.el6 will be installed
libXrender.x86_64 0:0.9.7-2.el6 libpng.x86_64 2:1.2.49-1.el6_2 libthai.x86_64 0:0.1.12-3.el6 libxcb.x86_64 0:1.8.1-1.el6 lm_sensors-libs.x86_64 0:3.1.1-17.el6 net-snmp.x86_64 1:5.5-49.el6 net-snmp-libs.x86_64 1:5.5-49.el6 net-snmp-utils.x86_64 1:5.5-49.el6 pango.x86_64 0:1.28.1-7.el6_3 php.x86_64 0:5.3.3-27.el6_5 php-cli.x86_64 0:5.3.3-27.el6_5 php-common.x86_64 0:5.3.3-27.el6_5 php-mysql.x86_64 0:5.3.3-27.el6_5 php-pdo.x86_64 0:5.3.3-27.el6_5 php-snmp.x86_64 0:5.3.3-27.el6_5 pixman.x86_64 0:0.26.2-5.1.el6_5 rrdtool.x86_64 0:1.3.8-6.el6 Complete!
- Cactiユーザー設定
Cacti用のデータベースおよび、ユーザーを作成するため、SQLファイルを作成します。
$ vi cacti-server.sql
CREATE DATABASE cacti; GRANT ALL PRIVILEGES ON cacti.* TO admin@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
作成したSQLファイルを実行します。
$ mysql -u root -p < cacti-server.sql
- MySQL接続確認
作成したユーザー名とパスワードでMySQLに接続できるか確認します。
$ mysql -u admin --password=password -e 'status'
- Cactiデータベース初期化
Cactiが使用するデータベースの初期設定を行います。
$ mysql -u admin --password=password --database=cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql
[vagrant@cacti-server ~]$ mysql -u admin --password=password -e 'status' -------------- mysql Ver 14.14 Distrib 5.5.36, for Linux (x86_64) using readline 5.1 Connection id: 8 Current database: Current user: admin@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.36 MySQL Community Server (GPL) by Remi Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 17 min 39 sec Threads: 1 Questions: 26 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.024 -------------- [vagrant@cacti-server ~]$
- PHPデータベース接続設定
PHPからデータベースに接続する際の認証情報を設定します。
$ sudo vi /etc/cacti/db.php
$database_username = "admin"; $database_password = "password";
- Apache設定
Cactiの管理インターフェースにウエブアクセスできるクライアントを設定します。
ここでは、192.168.0.0/24からのアクセスを許可しています。$ sudo vi /etc/httpd/conf.d/cacti.conf
# httpd 2.2 Order deny,allow Deny from all Allow from 192.168.0.0/24
設定が終了したら、Apacheを再起動します。
$ sudo service httpd restart
- CRON設定
Cactiのインストール時に、crontabが登録されていますので、行頭の#を削除しコマンドの実行を有効化します。
$ sudo vi /etc/cron.d/cacti
設定が終了したら、crondを再起動します。
$ sudo service crond restart
以上で、サーバーセットアップは終了です。
サーバー初期設定
- 初期設定
下記のURLにブラウザでアクセスして、サーバーの初期設定を行います。
http://192.168.0.50/cacti/
アクセスすると、Cacti Installation Guideが表示されますので、[Next]をクリックします。
インストール方法に[New Install]が表示されますので、[Next]をクリックします。
Cactiが使用するコマンドのパス設定などが表示されたら、デフォルトのまま[Finish]をクリックします。
- 初期ログイン
初期設定が終了すると、ログイン画面が表示されますので、ユーザー名、パスワードの双方にadminを指定してログインします。
- 初期パスワード変更
ログインに成功すると、直ぐに初期パスワードの変更画面が表示されますので、任意のパスワードを設定した後、[Save]をクリックします。
Saveが終了すると、Cactiのトップページが表示されます。
- サーバーのグラフ確認
Cactiをインストールすると、デフォルトでlocalhostの監視設定が行われますので、graphsタブを選択してlocalhostの監視グラグを確認します。
デフォルト設定では、メモリ使用量、ロードアベレージ、ログインユーザー数、プロセス数のグラフが表示されます。
クライアントセットアップ
監視クライアントに、SNMPエージェントおよび、ユーティリティパッケージをインストールします。
- SNMPエージェントとSNMPユーティリティのインストール
$ sudo yum -y install net-snmp net-snmp-utils
[vagrant@cacti-client ~]$ sudo yum -y install net-snmp net-snmp-utils Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: ftp.nara.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.tsukuba.wide.ad.jp * base: ftp.nara.wide.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.tsukuba.wide.ad.jp * extras: ftp.nara.wide.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.iij.ad.jp Including mirror: mirror.fairway.ne.jp Including mirror: ftp.riken.jp Including mirror: ftp.jaist.ac.jp Including mirror: ftp.tsukuba.wide.ad.jp * updates: ftp.nara.wide.ad.jp
Running Transaction Test Transaction Test Succeeded Running Transaction Installing : lm_sensors-libs-3.1.1-17.el6.i686 1/4 Installing : 1:net-snmp-libs-5.5-49.el6.i686 2/4 Installing : 1:net-snmp-5.5-49.el6.i686 3/4 Installing : 1:net-snmp-utils-5.5-49.el6.i686 4/4 Verifying : lm_sensors-libs-3.1.1-17.el6.i686 1/4 Verifying : 1:net-snmp-5.5-49.el6.i686 2/4 Verifying : 1:net-snmp-utils-5.5-49.el6.i686 3/4 Verifying : 1:net-snmp-libs-5.5-49.el6.i686 4/4 Installed: net-snmp.i686 1:5.5-49.el6 net-snmp-utils.i686 1:5.5-49.el6 Dependency Installed: lm_sensors-libs.i686 0:3.1.1-17.el6 net-snmp-libs.i686 1:5.5-49.el6 Complete!
- SNMPエージェント設定
$ sudo sed -i -e "s|^view|#view|" -e "s|systemview|all|" -e "s|^#disk|disk|" -e "s|^syslocation.*$|syslocation centos|" -e "s|^syscontact.*$|syscontact root@localhost|" /etc/snmp/snmpd.conf $ echo "view all included .1 80" | sudo tee -a /etc/snmp/snmpd.conf 1> /dev/null
- サービス起動と自動起動設定
$ sudo service snmpd start $ sudo chkconfig snmpd on
- 動作確認
SNMPエージェントからMIB情報が取得できるか確認します。
$ snmpwalk -v 2c -c public localhost | head -10 $ snmpwalk -v 2c -c public 10.0.2.15 | head -10 $ snmpwalk -v 2c -c public 192.168.0.30 | head -10
[vagrant@cacti-client ~]$ snmpwalk -v 2c -c public localhost | head -10 SNMPv2-MIB::sysDescr.0 = STRING: Linux cacti-client 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11 21:56:33 UTC 2014 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5209) 0:00:52.09 SNMPv2-MIB::sysContact.0 = STRING: root@localhost SNMPv2-MIB::sysName.0 = STRING: cacti-client SNMPv2-MIB::sysLocation.0 = STRING: centos SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1 SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
[vagrant@cacti-client ~]$ snmpwalk -v 2c -c public 10.0.2.15 | head -10 SNMPv2-MIB::sysDescr.0 = STRING: Linux cacti-client 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11 21:56:33 UTC 2014 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (12696) 0:02:06.96 SNMPv2-MIB::sysContact.0 = STRING: root@localhost SNMPv2-MIB::sysName.0 = STRING: cacti-client SNMPv2-MIB::sysLocation.0 = STRING: centos SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1 SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
[vagrant@cacti-client ~]$ snmpwalk -v 2c -c public 192.168.0.30 | head -10 SNMPv2-MIB::sysDescr.0 = STRING: Linux cacti-client 2.6.32-431.5.1.el6.i686 #1 SMP Tue Feb 11 21:56:33 UTC 2014 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (18277) 0:03:02.77 SNMPv2-MIB::sysContact.0 = STRING: root@localhost SNMPv2-MIB::sysName.0 = STRING: cacti-client SNMPv2-MIB::sysLocation.0 = STRING: centos SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1 SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
以上で、クライアントセットアップは終了です。
まとめ
ここまで、Cactiを用いた監視システムの構築方法を解説しました。後編では、クライアントを監視システムに追加する方法を解説します。