本ガイドでは、ネットワークグラフソリューションCactiを使用し、ネットワーク監視システムを構築します。 CactiはSNMPを使用し、監視ターゲットの統計情報(Load Average、Traffic等)の取得・表示だけに止まらず、Cacti Users提供のプラグインをインストールすることで監視システムとしても利用できます。 監視設計からスタートし、CentOSによるCacti環境構築および筆者オリジナルテンプレートの提供までご案内します。
本ガイドでは、グローバルIPアドレスにて外部公開しているサーバを監視ターゲットとします。
フィルタリングポリシーは以下の通りです。
監視ターゲットとなる外部公開サーバは、ウェブ・メール・DNS・データベースサービスを提供します。 インターネットからグローバルIPアドレスへのアクセスはすべて外部公開サーバにフォワーディングされるため、セキュリティ対策として、iptablesによるファイアウォール機能を有効にします。
本ガイドにて、構築する監視サーバです。プライベートIPアドレスにて運用するため、外部からは接続できません。
筆者オリジナルテンプレートで監視ターゲットから取得する統計情報を以下に示します。
| No. | 項目 | 備考 |
|---|---|---|
| 1 | Load Average | 5分平均のロードアベレージを取得 |
| 2 | CPU Usage | CPUの使用率を取得 |
| 3 | Memory Usage | メモリおよびスワップの使用率を取得 |
| 4 | Disk Usage | パーティション単位のディスク使用率を取得 |
| 5 | Traffic | 5分平均のネットワークトラフィック量(bps)を取得 |
| 6 | Proc Count | 稼動プロセス数を取得 |
統計情報の保管期間は400日とします。
SNMPタイムアウトは3秒(3000ms)とします。
下記項目の監視を行い、検知時はメールにて通知します。
| No | 項目 | 閾値1 | 閾値2 | 備考 |
|---|---|---|---|---|
| 1 | Disk Usage | 80% | 90% | ディスク使用率を監視(警告[hdd_warn]:閾値1、異常[hdd_err]:閾値2) |
| 2 | Proc Count | 1未満 | - | 必須プロセスを監視 |
| 3 | Device(Host) | - | - | SNMPの応答を監視 |
各監視は障害発生時と復旧時にメール通知を行います。 障害が継続している場合、1時間毎にメールを送信します。
監視サーバは、CentOS4.4 ServerCDを使用します。 CentOSは、北米ベンダーのEnterprise Linuxをベースに開発されているクローンLinuxです。 CentOSコミュニティは北米ベンダーの公開しているソースパッケージから製品名・商標ロゴ等を除去し再構築したパッケージを無償で公開しています。 このバイナリパッケージは100%互換を目指しています。
本ガイド環境のインストール手順を示します。 あなたのハードウェア環境・ネットワーク環境・管理ポリシーに応じて変更してください。
インストール画面はVMware Workstationにてキャプチャしています。 実機で確認した方法をVMwareで再現しています。 実機作業前にVMwareを使用したい場合は無償版のVMware Serverがありますので、VMwareをお持ちでない方はServer版をお勧めします。
最新のパッケージにアップデートします。最も近いミラーサイトを利用するようfastestmirrorプラグインを使用します。
[root]# yum install yum-plugin-fastestmirror [root]# vi /etc/yum.conf [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=centos-release tolerant=1 exactarch=1 retries=20 obsoletes=1 gpgcheck=1 plugins=1 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d [root]# yum update
[root]# vi /etc/inittab # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 ####4:2345:respawn:/sbin/mingetty tty4 ####5:2345:respawn:/sbin/mingetty tty5 ####6:2345:respawn:/sbin/mingetty tty6
LISTENしているサービスを停止します。
[root]# chkconfig cups off [root]# chkconfig portmap off [root]# chkconfig nfslock off
netstatコマンドの実行結果が以下のようであることを確認して下さい。
[root]# netstat -lntu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN
サーバ管理、パッケージ作成等に使用する一般ユーザを登録します。 登録したユーザは、sudoコマンドの実行、rpmパッケージの再構築を行うことができるよう環境を準備します。
サーバのメンテナンスを行うユーザ(sabakan)を登録します。
[root]# useradd -u 1000 -c "Maintenance User" sabakan [root]# passwd sabakan
rpmパッケージの作成、再構築は登録した一般ユーザにて行います。
[root]# su - sabakan
[user]$ echo "%_topdir $HOME/rpm" > ~/.rpmmacros
[user]$ mkdir -p ~/rpm/{SPECS,BUILD,SOURCES,SRPMS,RPMS}
ディレクトリの用途を以下に示します。
| ディレクトリ | 用途 |
|---|---|
| SPECS | rpmパッケージの設定ファイルspecファイルを配置 |
| BUILD | ビルド時の作業ディレクトリ |
| SOURCES | パッケージのソース、パッチを配置 |
| SRPMS | 作成されたsrc.rpmパッケージを保存 |
| RPMS | 作成されたrpmパッケージを保存 |
一般ユーザプロンプトにて、実行したいコマンドの前にsudoをつけることでroot権限にてコマンドを実行できるようにします。 sudoコマンド実行後に表示されるPassword:プロンプトには、ユーザ自身のパスワードを入力します。 また、sudoによるコマンド実行は、/var/log/secureに記録されるため作業後に実行したコマンドを確認することができます。
[root]# visudo # User privilege specification root ALL=(ALL) ALL sabakan ALL=(ALL) ALL
今後、rootでの作業は出来る限り避け、sudoコマンドを使用して作業を行うことをお勧めします。
Cactiには直接関係ありませんが、日本語環境で便利なパッケージを追加します。 時間の惜しい方やつまづいた方はビルド環境準備とNTPの設定だけを行い、nkf、lv、kccは読み飛ばして下さい。 各パッケージはfedora(日本)からソースパッケージ(/fedora/core/6/source/SRPMS以下)をダウンロードし、再構築したパッケージをインストールします。 パッケージのバージョンやダウンロードサーバは適宜読み替えてください。
[user]$ sudo yum install rpm-build [user]$ sudo yum install gcc [user]$ sudo yum install autoconf
時刻同期を行うためNTPをインストールします。
[user]$ sudo yum install ntp [user]$ sudo vi /etc/sysconfig/ntpd # Drop root to id 'ntp:ntp' by default. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -x" # Set to 'yes' to sync hw clock after successful ntpdate. SYNC_HWCLOCK=yes [user]$ sudo /etc/init.d/ntpd start
nkf(Network Kanji Filter)は文字コードの変換に使用します。
[user]$ rpm -ivh http://ftp.kddilabs.jp/Linux/packages/fedora/core/6/source/SRPMS/nkf-2.07-1.1.fc6.src.rpm [user]$ rpmbuild -ba rpm/SPECS/nkf.spec [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/nkf-2.07-1.1.i386.rpm
lvは強力な多国語対応テキストファイルビューアです。
[user]$ sudo yum install libtermcap-devel [user]$ rpm -ivh http://ftp.kddilabs.jp/Linux/packages/fedora/core/6/source/SRPMS/lv-4.51-8.1.src.rpm [user]$ rpmbuild -ba rpm/SPECS/lv.spec [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/lv-4.51-8.1.i386.rpm
kcc(Kanji Code Coverter)はテキストファイルの文字コード調査、変換に使用します。
[user]$ rpm -ivh http://ftp.kddilabs.jp/Linux/packages/fedora/core/6/source/SRPMS/kcc-2.3-24.2.2.src.rpm [user]$ rpmbuild -ba rpm/SPECS/kcc.spec [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/kcc-2.3-24.2.2.i386.rpm
ここからメインテーマであるCactiのインストールを行います。 冒頭でCactiはネットワークグラフソリューションと表記しましたが、Cacti自身にはグラフ作成機能は持ちません。 実際のグラフ作成およびデータ保管はRRDtool(Round Robin Database Tool)が行います。 RRDtoolおよびCactiの理解には、rrdtutorial(日本語訳)の一読およびコマンドを試してみることを強くお勧めします。 ちなみにRRDtoolとMRTG(Multi Router Traffic Grapher)はTobias Oetikerにより開発されているソフトウェアです。 他にもSmokePingというネットワークのレスポンスをグラフ化するツールも作成しています。
また、データの収集はSNMP(Simple Network Management Protocol)を使用します。 SNMPはネットワーク経由でターゲット機器の管理情報を取得するプロトコルです。 LinuxではほぼすべてのディストリビューションにNet-SNMPが用意されており、CactiでもNet-SNMPを必要とします。
ではCactiは何者かというと、RRDtoolおよびNet-SNMPを実行する際のコマンドオプションを管理するフロントエンドツールということができます。 さらにユーザの取り出したいグラフをウェブブラウザから簡単に取り出せるインターフェースも提供します。 また、Cacti Users提供のTholdプラグインを使用することで、閾値の設定、ターゲットのダウンをメールにて通知を行うよう機能強化することができます。
RRDtool、Net-SNMPおよびMySQLをインストールします。
RRDtoolはfedoraのソースパッケージを再構築します。
[user]$ sudo yum install gcc-c++ openssl-devel freetype-devel libpng-devel zlib-devel libart_lgpl-devel python-devel php-devel tcl-devel [user]$ rpm -ivh http://ftp.riken.jp/Linux/fedora/extras/6/SRPMS/rrdtool-1.2.15-6.fc6.src.rpm [user]$ rpmbuild -ba rpm/SPECS/rrdtool.spec [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/rrdtool-*.rpm
[user]$ sudo yum install net-snmp*
Cactiは設定内容をMySQLに保管します。日本語を使用することを考慮し、文字コードはUTF-8に統一します。
[user]$ sudo yum install mysql mysql-server mysql-devel [user]$ sudo vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock bind-address=127.0.0.1 # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 init_connect='SET NAMES utf8' default-character-set=utf8 [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [user]$ sudo /etc/init.d/mysqld start [user]$ sudo /sbin/chkconfig mysqld on
SQLの実行結果が以下のようであることを確認して下さい。
[user]$ mysql mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------+ 6 rows in set (0.00 sec)
Cactiサイトからソースパッケージをダウンロードします。
[user]$ rpm -ivh http://www.cacti.net/downloads/packages/SRPMS/cacti-0.8.6i-1.src.rpm [user]$ rpmbuild -ba rpm/SPECS/cacti.spec [user]$ sudo yum install php-mysql php-snmp [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/cacti-0.8.6i-1.i386.rpm [user]$ cd /var/www/html/cacti [user]$ mysqladmin --user=root create cacti [user]$ mysql --user=root cacti < cacti.sql [user]$ mysql --user=root mysql mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'; mysql> flush privileges; mysql> \q
Cactiはデフォルトではcmd.phpというスクリプトを5分ごとに実行(/etc/cron.d/cacti)し、ターゲットからデータを収集します。 大量の機器からデータを収集する場合、cmd.phpでは5分以内にすべての収集を終えることができなくなります。 Cactidを使用すると収集が高速化され、大量機器のデータ収集も可能となります。 ターゲットが50を超えるような場合は、通常Cactidを使用します。
ただし、今回使用するTholdプラグインの不具合があり、Cactidを使用した場合Device監視におけるメール通知が正常に動きません。 Device監視を使用したい場合はcmd.phpを使用してください。 Tholdだけでは大量の機器をターゲットとし、かつDevice監視を行うことは現状できません。 Monitorプラグインを使うことで代用できるような記述をどこかでみました(未確認)。 Tholdの改修を期待しましょう。
CactiサイトからCactidのソースパッケージをダウンロードします。
/bin/sh ./config/mkinstalldirs /etc
/usr/bin/install -c -m 644 cactid.conf /etc/cactid.conf
/usr/bin/install: cannot create regular file `/etc/cactid.conf': Permission denied
make[1]: *** [install-configDATA] Error 1
make[1]: Leaving directory `/home/sabakan/rpm/BUILD/cacti-cactid-0.8.6i'
make: *** [install-am] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.40265 (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.40265 (%install)
ビルド時に/etc/cactid.confを参照しようとするのが原因のようです。 rootユーザ権限が必要となるのでsudoコマンドでrpmbuildを実行します。
[user]$ rpm -ivh http://www.cacti.net/downloads/cactid/packages/SRPMS/cacti-cactid-0.8.6i-1.src.rpm [user]$ sudo rpmbuild -ba rpm/SPECS/cactid.spec [user]$ sudo rpm -ivh /home/sabakan/rpm/RPMS/i386/cacti-cactid-0.8.6i-1.i386.rpm
Tholdプラグインを使用すると、取得したデータに対して閾値(Threshold)を設け、アラートメールを送信することができます。 Device(Host)ダウン、リカバリ時にもメールを送信します。 このプラグインを利用してCactiに監視機能を持たせます。
また、Cacti UsersではTholdプラグイン以外にもプラグインが用意されています。 またCentOSにCactiおよびプラグインを組み込んだCactiEZというインストールCDも配布しています。 手っ取り早く試してみたい方には良いかもしれません。
Cacti Usersのプラグインを使用するには、Cactiのプログラムを置き換えるもしくはパッチを適用する必要があります。 今回はより簡単な方法であるプラグラムの置き換えを行います。 Cacti UsersサイトからPlugin Architectureをダウンロードします。 解凍したディレクトリ内のfiles-バージョン(今回files-0.8.6i)は必ずCactiのバージョン(今回0.8.6i)にあわせてください。
[user]$ wget http://download.cactiusers.org/downloads/cacti-plugin-arch.gzip [user]$ tar -zvxf cacti-plugin-arch.tar.gz [user]$ cd cacti-plugin-arch [user]$ sudo cp -dR files-0.8.6i/* /var/www/html/cacti/
Cacti UsersサイトからTholdをダウンロードします。
[user]$ wget http://download.cactiusers.org/downloads/thold.gzip [user]$ tar -zvxf thold-0.3.0.tar.gz [user]$ sudo chown -R root:root thold [user]$ sudo mv thold /var/www/html/cacti/plugins/ [user]$ sudo vi /var/www/html/cacti/include/config.php $plugins = array(); $plugins[] = 'thold';
ウェブサーバ(apache)を起動します。ついでに自動起動設定も行います。
[user]$ sudo /etc/init.d/httpd start [user]$ sudo /sbin/chkconfig httpd on
http://監視サーバのIPアドレス/cacti/(今回http://192.168.10.11/cacti/)にアクセスします。
admin 、[Password:] admin を入力し、[Login]をクリック。
このまましばらくほうっておけば監視サーバ自身の統計情報が自然と保存されていきます。
[graphs]タブから確認できます。
Cactiを楽しんでください!
監視設計にもとづく環境の下準備と確認を行います。
設定後の実行結果確認のため、ログにポーリング時の実行結果を出力させます。
Medium - Statistics,Errors and Results を選択ログは下記手順にて参照できます。
なお、運用開始後はログの肥大化予防のため、再度 Low - Statistics and Errors に戻すことをお奨めします。
Cactiインストール時のSNMPタイムアウトは500msecに設定されています。 このままだと負荷が高めの環境では頻繁にタイムアウトが発生(Deviceダウンと認識)するので数値を大きく(500->3000)します。
3000 を入力統計情報の保存期間(RRA:Round Robin Archives)を400日に設定します。
RRD(Round Robin Database)は円周上にデータを格納する箱を配置(イメージ)します。 1日1個の箱を400日分用意したとすると、400日ではじめに用意した箱はすべて格納されます。 401日目はどうなるかというと、円周上を1週し1日目の箱を再利用(上書き)しデータを格納します。 以降再利用を繰り返し決められた期間(ここでは400日間)のデータを保存します。
Cactiのデフォルトの設定では797日分の箱が用意されています。 ただしこの箱は前述のように1日1個の箱しか用意されていません。 1つの箱はその期間の1つのデータ(平均値/最大値/最小値/最近値のうちどれか)しか格納できないため、取り出す際も用意した期間より短い期間のデータを取り出すことはできません。 つまり1日1箱では、1日のうちのある特定の時間帯のデータを取り出すことはできません。 1時間単位で取り出したい場合は1時間毎で箱を用意し、5分単位で取り出したい場合は5分毎で箱を用意する必要があります。
Cactiではこの箱をSteps、Rowsで管理します。 Stepsは参照単位を表し、最小単位は5分となり値を1とすると5分毎(5x1)、12とすると1時間毎(5x12)の箱を用意します。 Rowsは保存するデータ数(箱の個数)を指定します。
Cactiのデフォルトで用意されているDaily/Weekly/Monthly/Yearlyの4つのRRAをみてみましょう。
| RRAs | Steps | 参照単位 | Rows | 保存期間 | 解説 | Timespan |
|---|---|---|---|---|---|---|
| Daily | 1 | 5分毎 | 600 | 50時間 | 50時間(2日強)以内であれば5分毎のデータを取り出すことが可能 | 86400 |
| Weekly | 6 | 30分毎 | 700 | 350時間 | 350時間(2週間強)以内であれば30分後とのデータを取り出すことが可能 | 604800 |
| Monthly | 24 | 2時間毎 | 775 | 1550時間 | 1550時間(2ヶ月強)以内であれば2時間毎のデータを取り出すことが可能 | 2678400 |
| Yearly | 288 | 1日毎 | 797 | 797日 | 797日(2年強)以内であれば1日毎のデータを取り出すことが可能 | 33053184 |
計算式
参照単位=Steps×5(分)
保存期間=参照単位×Rows
※表の最後の列Timespanは日単位、週単位、月単位、年単位でグラフを表示した際に表示する期間を分単位で表しています。
上記のように取り出したいデータが期間に応じて参照単位が異なることは運用上煩雑となるので
となるようSteps、Rowsを調整します。
| RRAs | Steps | 参照単位 | Rows | 保存期間 | 計算式 |
|---|---|---|---|---|---|
| Daily | 1 | 5分毎 | 115200 | 400日 | 400x24x60/(5x1) |
| Weekly | 6 | 30分毎 | 19200 | 400日 | 400x24x60/(5x6) |
| Monthly | 24 | 2時間毎 | 4800 | 400日 | 400x24x60/(5x24) |
| Yearly | 288 | 1日毎 | 400 | 400日 | 400x24x60/(5x288) |
※保存期間を変更する場合は、計算式の400(日)を変更してください。
Daily/Weekly/Monthly/YearlyのRowsの値を変更します。
115200 を入力19200 を入力4800 を入力400 を入力50以上の機器からデータ収集を行う場合は、cmd.phpではなくcactidを使うことで高速にデータ収集が実行されます。 今回はDevice監視を行うためcactidは使用しませんが、事前に正常に稼動することを確認します。
/usr/bin/cactid を入力cactid を選択cactidのpathが異なる場合は下記コマンドにて確認してください。
[user]$ sudo find / -name cactid
Deviceダウン時や閾値を越えた際の通知メールの設定を行います。
通知先メールアドレス を入力送信元メールアドレス を入力送信元名 を入力
送信元メールアドレスを monitor@sabakan.info 、送信元を Cacti とした場合、下記のようなテストメールが届きます。
To: 通知先メールアドレス Subject: Cacti Test Message Date: Tue, 16 Jan 2007 16:41:14 +0900 From: Cacti <monitor@sabakan.info> This is a test message generated from Cacti. This message was sent to test the configuration of your Mail Settings. Your email settings are currently set as follows Method: PHP's Mailer Class
監視設計にあわせたテンプレート作成を行う前に、Cactiに用意されている ucd/net SNMP Host Template を使用してSNMP接続ができることを確認します。
[user]$ cd /etc/snmp [user]$ sudo cp -p snmpd.conf snmpd.conf.dist [user]$ sudo vi snmpd.conf # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1 view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 [user]$ sudo /etc/init.d/snmpd restart
Cactiのホスト登録の練習を兼ねて実際に作業を行ってみます。
説明 を入力ホストまたはIPアドレス を入力ucd/net SNMP Host を選択Cactiはホストの登録とともにグラフを登録する必要があります。 データ収集とグラフ表示の機能が独立しているため、柔軟にグラフを表示できます。 このあたりがMRTGとの大きな違い(メリット)だと思います。
グラフツリー名 を入力Host を選択登録したホスト を選択このまましばらくたてば、データ収集が行われグラフを表示することができるようになります。
登録したホストディスク使用量閾値に1を設定します。
1 を入力1を超えた場合(確実に超えるでしょう)、設定したTholdのデフォルト設定で登録した通知先にアラートメールが飛びます。
To: 通知先メールアドレス Subject: 192.168.10.10 - Partition - /dev/mapper/Vol went above threshold of 1 with 5967632.3733 Date: Tue, 16 Jan 2007 17:45:04 +0900 From: Cacti <monitor@sabakan.info> http://192.168.10.11/cacti//graph.php?local_graph_id=19&rra_id=1
ここまでの作業でもある程度の運用を行うことができます。 しかし各統計値について筆者には理解できない部分や別の値を取得したい部分があります。 運用時にグラフの見方、数値の示す状況が理解できるようテンプレートを修正・追加します。
筆者のオリジナルテンプレートをインポートします。
監視サーバの<path_cacti>/scripts(本環境では/var/www/html/cacti/scripts)にscp等を使用し下記ファイルをアップロードします。
CPANからNet::SNMPモジュールダウンロード、インストールします。
[user]$ wget http://search.cpan.org/CPAN/authors/id/D/DT/DTOWN/Net-SNMP-5.2.0.tar.gz [user]$ tar -xvzf Net-SNMP-5.2.0.tar.gz [user]$ cd Net-SNMP-5.2.0 [user]$ perl Makefile.PL [user]$ make test [user]$ sudo make install
同様に下記ファイルを<path_cacti>/resource/snmp_queries(本環境では/var/www/html/cacti/resource/snmp_queries)にアップロードします。
Host Templatesのインポートを行います。
テンプレートインポート時に一部正常にインポートされない箇所がありますので修正を行います。
正常にインポートされたか確認するためホスト登録を行います。 SNMP接続確認と同じホストを登録します。
説明 を入力ホストまたはIPアドレス を入力Sabakan Linux Host を選択Process Count以外のグラフが表示されることを確認して下さい。
トラフィックの収集は用意されているData Queriesの[SNMP - Interface Statistics] をそのまま使用します。
試しにHost Templateを作成してみます。
Test Host Template を入力SNMP - Interface Statistics を選択このようにHost TemplateにはData Queryを登録することができます。
ロードアベレージはGraph Templatesの[Sabakan - Load Average]を使用します。 Traffic同様Host Templateに追加します。
Sabakan - Load Average を選択先ほどTrafficではData Queryでしたが、今回はGraph Templateを登録しました。 したがってHost Templateには下記のいずれかを登録できます。
Sabakan - Load AverageはGraph Templatesで用意されているucd/net - Load Averageをもとに作成しています。 ucd/net - Load Averageは1分間、5分間、15分間の平均ロードアベレージを積み上げてグラフ表示します。 ここで1分間、5分間、15分間を積み上げてグラフ化することにどんな意味があるのでしょうか? サーバオペレーション(topコマンド等)を実行するさいLoad Averageを積み上げて状況を判断することは筆者の経験上ありません。 データ取得間隔が5分間であることから、5分間の平均Load Averageをグラフ化することが妥当と思われます。
CPUに関する統計情報はucd/net - CPU Usageをもとに作成します。 ucd/net - CPU Usage はCPUの使用時間をグラフ表示しますが、ここでは使用時間ではなく使用率(%)を取得します。 また取得する項目もトラブルシューティングで頻繁に使用するvmstatコマンドにもとづき、user(us)、system(sy)、idle(id)、wait(wa)とします。
JM Project Manpage of VMSTATから引用
これらは CPU の総時間に対するパーセンテージである。
us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。
sy: カーネルコードの実行に使用した時間 (システム時間)。
id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。
wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。
SNMPで取得するOIDを以下に示します。
上記OIDで取得できる値は、各項目がCPUを使用した時間となります。 時間の単位は100分の1単位(10ms)のデータとなりますので、パーセント表示するための係数100と相殺(1/100×100)され取得した値をそのまま使用することができます。
閾値の設定を簡易化するため使用率で表します。 また、グラフにはパーティションの容量をコメント表示します。
Disk Usageを正しく使うためにはまず監視ターゲットの/etc/snmp/snmpd.confに下記のような行を追加する必要があります。
disk / 10000 disk /boot 10000 disk /var 10000 disk /usr 10000 disk /home 10000
パーティションは環境に合わせて設定してください。
メモリ不足を判断するために物理メモリおよびスワップの使用率を取得します。 また、グラフには物理メモリおよびスワップの容量をコメント表示します。
SNMP経由でのメモリに関する情報は総容量、使用量といった数値が取得できますが、直接使用率を取得することができません。 そこでData Input Methodでperlスクリプト(sabakan_memory.pl)を使用しデータを計算します。 使用したOIDを以下に示します。
snmpwalkコマンドを使用する際は末尾の.0は必要ありませんが、snmpgetコマンド使用時は必須となります。 つけない場合下記エラーが発生します。
Error in packet Reason: (noSuchName) There is no such variable name in this MIB. Failed object: UCD-SNMP-MIB::memTotalSwap
プロセス数の統計情報は新規に作成しています。 Proc Countを正しく使うためにはまず監視ターゲットの/etc/snmp/snmpd.confに下記のような行を追加する必要があります。
proc atd proc crond proc klogd proc syslogd proc ntpd
起動数を調べたいプロセスや常に稼動している必要のあるプロセスを指定してください。 指定するプロセス名は下記コマンドにて調査できます。
[user]$ ps -e | awk {'print $4'} | sort -u | egrep -v "(ps|awk|sort|egrep|CMD)"
DeviceについてはAlerting/Tholdの設定がされていれば自動的に監視が行われます。 Disk UsageとProc Countにて閾値を設け監視を行う手順を記載します。
まず警告閾値を設定します。 パーティションの使用量が80%を超えた場合通知されます。
Sabakan - Disk Usage を選択hdd_warn を選択80 を入力メールアドレス を入力エラー閾値はデフォルトの通知先に設定します。 パーティションの使用量が90%を超えた場合通知されます。
Sabakan - Disk Usage を選択hdd_err を選択90 を入力プロセス監視はLISTENしないデーモンや常駐プロセスを監視するために行います。 監視対象プロセス数が1以下のときに通知を行います。
Sabakan - Process Count を選択proc_count を選択1 を入力ここまでの作業が完了したら、稼動確認をおこなったDeviceを一度削除しホストの再登録をしてください。
これまでと同様TholdでもTemplateを作成することができ監視対象追加時は容易に閾値を設定することができます。
当初本ガイドでテンプレートの作成方法を記載しようと考えていましたが、私の知識や労力が足らずその域までは踏み込むことができませんでしたので、筆者が統計情報を取得するときのポイントだけを示します。 実際の作成手順はThe Cacti HowTo Sectionが手助けになると思います。
本環境に関するお問い合わせやテンプレート作成方法について、なにかございましたらお気軽にお問い合わせ下さい。