Cacti on CentOS6


Cacti (+ RRDTool)  を CentOS6 上で稼働させて、ネットワーク機器のトラフィック状況をグラフ化してみた際の作業記録です。

 


【Cacti について】

RRDTool (http://oss.oetiker.ch/rrdtool/) が作成したグラフをブラウザで表示できるようにしてくれるオープンソースなツールです。

SNMP で対象機器をポーリング、そのデータをRRDTool (がDBに格納して)グラフを作成、cacti 経由で ブラウザに表示してくれる、といった具合になります。

↓ こんな感じです。 (下記はローカルホストのロードアベレージを表示したところ)

 

Cacti のホームページ
http://www.cacti.net/

Cacti のマニュアル
http://www.cacti.net/documentation.php

 


【インストール】

CentOS 標準のリポジトリには含まれておらず、ソースからのインストールがメジャー(?)ですが、幸いにも EPEL (https://fedoraproject.org/wiki/EPEL/ja)リポジトリでパッケージが公開されているので、今回はEPEL から yum して利用することにします。

 


 

まずは EPEL リポジトリの追加から。
EPEL のトップページ(https://fedoraproject.org/wiki/EPEL/ja) にも記載あるように、CentOS では “yum install epel-release” の実行だけで、EPELを利用できるようになります。

# yum install epel-release

 

EPEL は現在 CentOS Extras repository に含まれているため、標準リポジトリとの競合はまずなさそう  (FAQより :  https://fedoraproject.org/wiki/EPEL/FAQ/ja) ですが、念のため、yum priorities (https://wiki.centos.org/PackageManagement/Yum/Priorities) プラグインを追加して、リポジトリの優先順位を設定しておきます。

# yum install yum-plugin-priorities

 

/etc/yum.repos.d/CentOS-Base.repo の [Base], [updates], [extras], [centosplus] を priority=1 に、[contrib] を priority=2 に指定します。
(priority は 1 – 99 までの指定、デフォルトは 99、数字が低いほど優先)

# vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2

 

EPEL は priority=10 を指定しておきます。

# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=10

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

 


 

Cacti を yum でインストールします。

# yum install cacti

稼働要件(http://www.cacti.net/downloads/docs/html/requirements.html) のツール(RRDTool や PHP、MySQL, Apache など)も併せてインストールされます。

読み込んだプラグイン:fastestmirror, priorities
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
117 packages excluded due to repository priority protections
依存性の解決をしています

 <中略>

依存性を解決しました

============================================================================================================================
 パッケージ                              アーキテクチャ      バージョン                          リポジトリー          容量
============================================================================================================================
インストールしています:
 cacti                                   noarch              0.8.8b-7.el6                        epel                 2.2 M
依存性関連でのインストールをします。:
 apr                                     x86_64              1.3.9-5.el6_2                       base                 123 k
 apr-util                                x86_64              1.3.9-3.el6_0.1                     base                  87 k
 apr-util-ldap                           x86_64              1.3.9-3.el6_0.1                     base                  15 k
 cairo                                   x86_64              1.8.8-6.el6_6                       base                 309 k
 dejavu-fonts-common                     noarch              2.33-1.el6                          base                  63 k
 dejavu-lgc-sans-mono-fonts              noarch              2.33-1.el6                          base                 397 k
 dejavu-sans-mono-fonts                  noarch              2.33-1.el6                          base                 474 k
 fontconfig                              x86_64              2.8.0-5.el6                         base                 186 k
 fontpackages-filesystem                 noarch              1.41-1.1.el6                        base                 8.8 k
 freetype                                x86_64              2.3.11-15.el6_6.1                   base                 361 k
 httpd                                   x86_64              2.2.15-47.el6.centos.4              updates              831 k
 httpd-tools                             x86_64              2.2.15-47.el6.centos.4              updates               77 k
 libX11                                  x86_64              1.6.0-6.el6                         base                 586 k
 libX11-common                           noarch              1.6.0-6.el6                         base                 192 k
 libXau                                  x86_64              1.0.6-4.el6                         base                  24 k
 libXft                                  x86_64              2.3.1-2.el6                         base                  55 k
 libXrender                              x86_64              0.9.8-2.1.el6                       base                  24 k
 libpng                                  x86_64              2:1.2.49-2.el6_7                    updates              182 k
 libthai                                 x86_64              0.1.12-3.el6                        base                 183 k
 libxcb                                  x86_64              1.9.1-3.el6                         base                 110 k
 lm_sensors-libs                         x86_64              3.1.1-17.el6                        base                  38 k
 mailcap                                 noarch              2.1.31-2.el6                        base                  27 k
 mysql                                   x86_64              5.1.73-5.el6_7.1                    updates              894 k
 net-snmp                                x86_64              1:5.5-54.el6_7.1                    updates              308 k
 net-snmp-libs                           x86_64              1:5.5-54.el6_7.1                    updates              1.5 M
 net-snmp-utils                          x86_64              1:5.5-54.el6_7.1                    updates              176 k
 pango                                   x86_64              1.28.1-10.el6                       base                 351 k
 php                                     x86_64              5.3.3-46.el6_7.1                    updates              1.1 M
 php-cli                                 x86_64              5.3.3-46.el6_7.1                    updates              2.2 M
 php-common                              x86_64              5.3.3-46.el6_7.1                    updates              529 k
 php-mysql                               x86_64              5.3.3-46.el6_7.1                    updates               86 k
 php-pdo                                 x86_64              5.3.3-46.el6_7.1                    updates               80 k
 php-snmp                                x86_64              5.3.3-46.el6_7.1                    updates               35 k
 pixman                                  x86_64              0.32.4-4.el6                        base                 243 k
 rrdtool                                 x86_64              1.3.8-7.el6                         base                 293 k

トランザクションの要約
============================================================================================================================
インストール        36 パッケージ

総ダウンロード容量: 14 M
インストール済み容量: 43 M
これでいいですか? [y/N]y

 <中略>

インストール:
  cacti.noarch 0:0.8.8b-7.el6

依存性関連をインストールしました:
  apr.x86_64 0:1.3.9-5.el6_2                                   apr-util.x86_64 0:1.3.9-3.el6_0.1
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1                       cairo.x86_64 0:1.8.8-6.el6_6
  dejavu-fonts-common.noarch 0:2.33-1.el6                      dejavu-lgc-sans-mono-fonts.noarch 0:2.33-1.el6
  dejavu-sans-mono-fonts.noarch 0:2.33-1.el6                   fontconfig.x86_64 0:2.8.0-5.el6
  fontpackages-filesystem.noarch 0:1.41-1.1.el6                freetype.x86_64 0:2.3.11-15.el6_6.1
  httpd.x86_64 0:2.2.15-47.el6.centos.4                        httpd-tools.x86_64 0:2.2.15-47.el6.centos.4
  libX11.x86_64 0:1.6.0-6.el6                                  libX11-common.noarch 0:1.6.0-6.el6
  libXau.x86_64 0:1.0.6-4.el6                                  libXft.x86_64 0:2.3.1-2.el6
  libXrender.x86_64 0:0.9.8-2.1.el6                            libpng.x86_64 2:1.2.49-2.el6_7
  libthai.x86_64 0:0.1.12-3.el6                                libxcb.x86_64 0:1.9.1-3.el6
  lm_sensors-libs.x86_64 0:3.1.1-17.el6                        mailcap.noarch 0:2.1.31-2.el6
  mysql.x86_64 0:5.1.73-5.el6_7.1                              net-snmp.x86_64 1:5.5-54.el6_7.1
  net-snmp-libs.x86_64 1:5.5-54.el6_7.1                        net-snmp-utils.x86_64 1:5.5-54.el6_7.1
  pango.x86_64 0:1.28.1-10.el6                                 php.x86_64 0:5.3.3-46.el6_7.1
  php-cli.x86_64 0:5.3.3-46.el6_7.1                            php-common.x86_64 0:5.3.3-46.el6_7.1
  php-mysql.x86_64 0:5.3.3-46.el6_7.1                          php-pdo.x86_64 0:5.3.3-46.el6_7.1
  php-snmp.x86_64 0:5.3.3-46.el6_7.1                           pixman.x86_64 0:0.32.4-4.el6
  rrdtool.x86_64 0:1.3.8-7.el6

完了しました!

 

必要なパッケージ (http://docs.cacti.net/manual:088:1_installation.1_install_unix#installing_under_unix) が全て yum 経由で入ったかどうか、確認しましょう。
今回は、 php-xml と mysql-server  が不足していたので、別途インストールしました。

# yum install php-xml
# yum install mysql-server

 


 

これで cacti (とRRDTool や関連パッケージ)の導入が完了しましたので、次は、

Cacti のインストールガイド (http://docs.cacti.net/manual:088:1_installation.1_install_unix#configuration_of_software_packages) を参考に、各ソフトウェアの設定を行っていきます。

 


 

PHP の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.1_configure_php

確認対象は /etc/php.ini です。
上記マニュアルを参考に、必要に応じて修正します。
今回は、date.timezone = “Asia/Tokyo” に修正。 (http://php.net/manual/en/timezones.asia.php

# vi /etc/php.ini

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = "Asia/Tokyo

 


 

httpd (Apache) の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.2_configure_apache

上記のマニュアルを参考に、

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/php.conf

↑ この2つの設定を確認。 私の環境では、特に変更しなくてもよさそうだったです。

なお、Cacti (のWebサイト)へのアクセスが デフォルトでは local host (127.0.0.1) からのみ可となっているため、接続できるIPを追加しておきます。

# vi /etc/httpd/conf.d/cacti.conf
#
# 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 host localhost
                Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
                # httpd 2.2
                Order deny,allow
                Deny from all
                Allow from localhost
                Allow from 172.31.1.0/24
                Allow from 172.31.10.0/24
        </IfModule>
</Directory>

<Directory /usr/share/cacti/install>
        # mod_security overrides.
        # Uncomment these if you use mod_security.
        # allow POST of application/x-www-form-urlencoded during install
        #SecRuleRemoveById 960010
        # permit the specification of the rrdtool paths during install
        #SecRuleRemoveById 900011
</Directory>


# These sections marked "Require all denied" (or "Deny from all")
# should not be modified.
# These are in place in order to harden Cacti.
<Directory /usr/share/cacti/log>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>
<Directory /usr/share/cacti/rra>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>

17 行目をコメントアウト、
18, 25, 26 行目を追加してます。

 

httpd を起動します。
(OS起動時に自動起動するようにもしておきます)

# service httpd start
# chkconfig httpd on

 


 

Cacti 用の MySQL DB を作成します。 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.5_install_and_configure_cacti

今回は、データベース名 「cacti」、DBのユーザー「cactiuser」 、パスワード「cacticacti」とします。

 

このへんの設定あたりから、↑ のマニュアルに書いてない事も多かったので、ネットでいろいろと検索した結果を織り交ぜて書いてます。

 

mysqld が起動していない場合は、まず起動を。

# service mysqld start
# chkconfig mysqld o

 

cacti 用のDB 「cacti」 を作成して、テーブルをインポートします。

# mysqladmin --user=root create cacti
# mysql cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql

 

cacti DB に ユーザとパスワードを設定

# mysql --user=root
Server version: 5.1.73 Source distribution

mysql> grant all on cacti.* to cactiuser@localhost identified by 'cacticacti';
Query OK, 0 rows affected (0.00 sec)

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

mysql> exit;
Bye

 


 

残りの設定。

DBのユーザ名/パスワードを cacti の設定ファイルに反映。

# vi /usr/share/cacti/include/config.php

 <中略>

$database_username = "cactiuser";
$database_password = "cacticacti";

 <中略>

 

cron を有効化。
yum した際に cacti の cron ファイル(/etc/cron.d/cacti)が作成さますが、中身がコメントアウトされてるので、外して有効化します。

# vi /etc/cron.d/cacti

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

↑ コメントアウトされてるので、外します。

 

cron の再起動

# service crond restart

 


 

これで準備が整いました。
cacti にアクセスして初期設定を開始します。

ブラウザから、

http://cactiをインストールしたサーバー/cacti

にアクセスすると、下記のように Installation Guide で出てきます。「Next」で次に進みます。

 

「New Install 」 を選んで 「Next」

 

各パラメータのチェックがOK(緑色文字)な事を確認して、「Finish」

 

ログイン画面が出てきます。

User Name :  admin
Password: admin

でログイン。

 

初回の強制パスワードの設定画面が出てきますので、新しいパスワードを設定します。

 

cacti の利用準備が整いました!

 

 


 

次は、トラッフィクグラフを取得したい機器を登録していきます。

基本的な設定の流れは、cacti にログイン後のトップページにも記載があるように、

  1.  「create device」 (ネットワーク機器を登録)
  2.  「create grafh」  (グラフ作成)

の流れです。

では、早速登録してみます。

 

画面左上の赤いタブ 「console」を選択(デフォルトではこの画面になってます)、 画面左側のメニュー一覧から 「Devices」 をクリック。

 

↑ この画面右上の「Add」 をクリックすると、デバイス登録画面が出てきます。

 

Hostname、SNMP Community など、必要な情報をタイプして、画面右下の 「create」 をクリックします。

 

対象とSNMPでコミュニケーションできなかった場合、下記のように赤文字で 「SNMP error」 となります。

対象の機器でSNMPが有効になっているか、コミュニティ名などに間違いはないか、通信経路上のFirewallがある場合はSNMP 通信(UDP/161) が許可されているか、など確認します。

 

うまくいった場合は下記のように SNMP Information が取得できます。

 

次はグラフの作成です。 
↑ この画面の右上の 「Create Graphs for this Host」 をクリックします。

すると、↑ このように作成できるグラフリストの一覧が表示されます。

(デバイス作成時に SNMP error が表示された -> でもなんとか修正して SNMP Information は取れるようになった -> でもこのリストが出てこない、な場合はデバイスの削除 -> 再登録 でうまくいくかもしれません)

右端のチェックボックスにチェックを入れて、画面右下の 「Create」 をクリックすると、グラフが作成されます。
ポート数の多い機器とかは、Next ページにも一覧があるので忘れずにチェックを。

↓ Create が終わったところ。

 


グラフを見てみます。
GUI画面左上、赤色の 「graphs」 をクリックします。

初期状態では、↓ こんなふうに Tree View 画面が表示されます。
左ペインの Default Tree を展開すると、localhost の各グラフを表示することができます。

 

さきほど登録した機器は、デフォルトではこの Tree View には表示されません。
画面右上、「setting」 ボタンの右側に、3つほどボタン(左から、Tree View、List View、Preview view)があって、List View か Preview view を選択すると、追加した機器のグラフを見ることができます。

List View をクリックしたところ。
↓ こんなふうに、グラフの一覧が出てきます。

↑ この中から、見たいグラフをクリックすると、
↓ こんなかんじで閲覧することができます。

 


 

よく見るグラフは、Tree View に登録すると良いです。

Console > Graph Trees をクリックします。

↑ 初期状態では、「Default Tree」(localhost の各グラフが表示) のみ登録されています。

ここに新しいツリーを作成して、閲覧したいグラフを追加していきます。

↑ この画面右上の 「Add」 をクリック。
↓ 新規ツリーの作成画面が出ますので、適当な名前を入力して 「Create」 をクリック。

 

↓ Tree Items の 「Add」 をクリックして、見たいアイテムを追加します。

 

↓ Add を押したところ。
Tree Item Type には、「header」、「grapsh」、「host 」 が選択できます。
Header はTree の 上位階層(Parent) になるので、アイテムを階層化したい場合に使います。
graph は 各グラフ単位、host はその対象で取得しているグラフ全てが表示されます。

Tree Item Type「Header」 で作るとこんな感じです。

 

SW01 の配下に、Gi 1/0/1 のグラフを追加してみます。

 

すると、Tree View ではこんな風に表示されます。

 

こんな感じで、お好みのグラフ表示を作成することができます。

 

今回の備忘録は以上です。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です