Cactiを用いてシステムリソースを監視する方法(前編)

Cactiを用いてシステムリソースを監視する方法(前編)

はじめに

本ブログでは、MRTGによるネットワーク監視システムの構築において、MRTGによる監視システムの構築方法について解説しました。今回は、MRTGに変わるリソース監視ツールとして注目されているCactiを用いた監視システムの構築方法を、前編、後編の2回に分けて解説します。前編では、監視システムの構築方法を解説し、後編では、クライアントを監視システムに追加する方法を解説します。

前提条件

構築に必要なサーバー要件および、パッケージは下記のとおりです。

  1. サーバー要件

    サーバー要件は、次のとおりです。

    サーバーCactiサーバーCactiクライアント
    ホスト名cacti-servercacti-client
    IPアドレス10.0.2.15(eth0)
    192.168.0.50(eth1)
    10.0.2.15(eth0)
    192.168.0.30(eth1)
    OSCentOS 6.5 x86_64 minimal CentOS 6.5 i386 minimal
    HDD8GB(SCSI)
    RAM512MB
    Apache2.2.15n/a
    MySQL5.5.36
    crontabs1.10.33
    EPEL6.8
    remi6.5

  2. ダウンロードまたは、インストールするパッケージ

    ダウンロードまたは、インストールするパッケージは、次のとおりです。

    パッケージCactiサーバーCactiクライアント
    cacti0.8.8bn/a
    net-snmp
    net-snmp-utils
    n/a5.5.49

サーバーセットアップ

  1. 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!
    
  2. Cactiユーザー設定

    Cacti用のデータベースおよび、ユーザーを作成するため、SQLファイルを作成します。

    $ vi cacti-server.sql
    
    CREATE DATABASE cacti;
    GRANT ALL PRIVILEGES ON cacti.* TO admin@localhost IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
    4022-03

    作成したSQLファイルを実行します。

    $ mysql -u root -p < cacti-server.sql
    
    4022-04
  3. MySQL接続確認

    作成したユーザー名とパスワードでMySQLに接続できるか確認します。

    $ mysql -u admin --password=password -e 'status'
    
    4022-05
  4. 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 ~]$ 
    
  5. PHPデータベース接続設定

    PHPからデータベースに接続する際の認証情報を設定します。

    $ sudo vi /etc/cacti/db.php
    
    $database_username = "admin";
    $database_password = "password";
    
    4022-07
  6. 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
    
    4022-08

    設定が終了したら、Apacheを再起動します。

    $ sudo service httpd restart
    
    4022-09
  7. CRON設定

    Cactiのインストール時に、crontabが登録されていますので、行頭の#を削除しコマンドの実行を有効化します。

    $ sudo vi /etc/cron.d/cacti
    
    4022-10

    設定が終了したら、crondを再起動します。

    $ sudo service crond restart
    
    4022-11
  8. 以上で、サーバーセットアップは終了です。

サーバー初期設定

  1. 初期設定

    下記のURLにブラウザでアクセスして、サーバーの初期設定を行います。

    http://192.168.0.50/cacti/
    

    アクセスすると、Cacti Installation Guideが表示されますので、[Next]をクリックします。

    4022-12

    インストール方法に[New Install]が表示されますので、[Next]をクリックします。

    4022-13

    Cactiが使用するコマンドのパス設定などが表示されたら、デフォルトのまま[Finish]をクリックします。

    4022-14 4022-15
  2. 初期ログイン

    初期設定が終了すると、ログイン画面が表示されますので、ユーザー名、パスワードの双方にadminを指定してログインします。

    4022-16
  3. 初期パスワード変更

    ログインに成功すると、直ぐに初期パスワードの変更画面が表示されますので、任意のパスワードを設定した後、[Save]をクリックします。

    4022-17

    Saveが終了すると、Cactiのトップページが表示されます。

    4022-18
  4. サーバーのグラフ確認

    Cactiをインストールすると、デフォルトでlocalhostの監視設定が行われますので、graphsタブを選択してlocalhostの監視グラグを確認します。

    デフォルト設定では、メモリ使用量、ロードアベレージ、ログインユーザー数、プロセス数のグラフが表示されます。

    4022-19 4022-20

クライアントセットアップ

監視クライアントに、SNMPエージェントおよび、ユーティリティパッケージをインストールします。

  1. 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!
    
    4022-22
  2. 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
    
    4022-23
  3. サービス起動と自動起動設定

    $ sudo service snmpd start
    $ sudo chkconfig snmpd on
    
    4022-24
  4. 動作確認

    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
    
  5. 以上で、クライアントセットアップは終了です。

まとめ

ここまで、Cactiを用いた監視システムの構築方法を解説しました。後編では、クライアントを監視システムに追加する方法を解説します。

Comments are closed.