「MRTG」の設定

サーバの状態を確認する為に、ネットワークトラフィック監視ツールを導入する。
「Net-SNMP」を導入したら、次に「MRTG」を導入する。
なお、ここではサーバのIPアドレスが192.168.0.2であるものとする。
また、CPUやメモリ等の情報も監視しているが、HDDが「S.M.A.R.T.」に対応しており、温度を取得できる場合、 こちらの方法でHDDの温度も監視することが出来る。

「MRTG」のインストール
Solaris# mkdir /usr/local/src/mrtg <= 作業用ディレクトリの作成
Solaris# chmod 777 /usr/local/src/mrtg <= 作業用ディレクトリのパーミッション変更
Solaris# exit <= 一般ユーザになる
Solaris% cd /usr/local/src/mrtg <= 作業用ディレクトリへ移動
Solaris% wget http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/mrtg-2.12.2.tar.gz
 <= 「MRTG」のソースをダウンロード
Solaris% gunzip -c mrtg-2.12.2.tar.gz | tar xf - <= ダウンロードしたファイルの展開
Solaris% cd mrtg-2.12.2 <= 展開したディレクトリに移動

Solaris% ./configure \
--with-gd-lib=/opt/sfw/lib \
--with-gd-inc=/opt/sfw/include \
--with-z-lib=/usr/local/lib \
--with-z-inc=/usr/local/include \
--with-png-lib=/usr/local/lib \
--with-png-inc=/usr/local/include |& tee configure.log

Solaris% gmake |& tee make.log <= コンパイル
Solaris% su <= スーパーユーザになる
Password: <= パスワードの入力
Solaris# gmake install |& tee make-install.log <= インストール
「MRTG」の設定
Solaris# mkdir -p /usr/local/etc/mrtg <= 設定ファイル用のディレクトリを作成
Solaris# /usr/local/mrtg-2/bin/cfgmaker --ifref=descr --ifdesc=descr public@192.168.0.2 > /usr/local/etc/mrtg/mrtg.cfg
 <= 設定ファイルの作成
Solaris# vi /usr/local/etc/mrtg/mrtg.cfg <= 設定ファイルの編集
# WorkDir: /home/http/mrtg
↓
WorkDir: /var/apache2/mrtg <= MRTGによる編集結果HTML格納先ディレクトリ

# Options[_]: growright, bits
↓
Options[_]: growright, noinfo <= グラフの左側を過去にする

EnableIPv6: no
Refresh: 300 <= 追加(ブラウザで表示したままの時のリフレッシュ間隔)
Language: eucjp <= 追加(日本語化)

[ ]内の部分を変更
Target[192.168.0.2_rtls0]: \rtls0:public@192.168.0.2:
SetEnv[192.168.0.2_rtls0]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="rtls0"
MaxBytes[192.168.0.2_rtls0]: 12500000
Title[192.168.0.2_rtls0]: rtls0 -- Solaris
PageTop[192.168.0.2_rtls0]: <h1>rtls0 -- Solaris</h1>
↓
Target[rtls0]: \rtls0:public@192.168.0.2:
SetEnv[rtls0]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="rtls0"
MaxBytes[rtls0]: 12500000
Title[rtls0]: rtls0 -- Solaris
PageTop[rtls0]: <h1>rtls0 -- Solaris</h1>

余計なものを表示させない為、以下の行を削除、またはコメントアウト
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>Solaris in Solaris</td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td>kaz <kaz@crimson-snow.net></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>rtls0  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>Other (1)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td></td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>12.5 MBytes/s</td>
                                </tr>

                                <tr>
                                        <td>Ip:</td>
                                        <td>192.168.0.2 (Solaris)</td>
                                </tr>

                        </table>
                </div>
ここまで

CPU使用率表示の為に以下を追加
### CPU Load Average ###
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.0.2
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Title[cpu]: CPU使用率
PageTop[cpu]: <H1>CPU使用率</H1>

空きメモリ量を表示する為に以下を追加
なお、物理メモリとスワップメモリのMAX値の調べ方は後述
### Memory Free ####
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.0.2
MaxBytes1[mem]: 1572412 <= 物理メモリのMAX値
MaxBytes2[mem]: 2097144 <= スワップメモリのMAX値
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量
PageTop[mem]: <H1>空きメモリ量</H1>

ディスク使用率を表示する為に以下を追加
### Disk Used ####
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@192.168.0.2
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: / Disk used
Legend1[disk]: / Disk used
Legend2[disk]: / Disk used
Title[disk]: ディスク使用率
PageTop[disk]: <H1>ディスク使用率</H1>

/home を別パーティションにしている場合には「Net-SNMP」の設定に合わせ、
ディスク使用率を表示する為に以下を追加
### /home Disk Used ####
Target[home]: .1.3.6.1.4.1.2021.9.1.9.2&.1.3.6.1.4.1.2021.9.1.9.2:public@192.168.0.2
 <= 末尾の数字を上記の / より1増やす
MaxBytes[home]: 100
Unscaled[home]: dwmy
Options[home]: gauge, absolute, growright, nopercent, noinfo
YLegend[home]: Disk Used(%)
ShortLegend[home]: (%)
LegendI[home]: /home Disk used
LegendO[home]: /home Disk used
Legend1[home]: /home Disk used
Legend2[home]: /home Disk used
Title[home]: /home ディスク使用率
PageTop[home]: <H1>/home ディスク使用率</H1>

物理メモリとスワップメモリのMAX値の調べ方

物理メモリとスワップメモリはsnmpwalkコマンドでOIDを指定して調べる。
メモリに関する主なOIDは次の通り。

物理メモリの容量(Kb) .1.3.6.1.4.1.2021.4.5.0
物理メモリの空き容量(Kb) .1.3.6.1.4.1.2021.4.6.0
スワップメモリの容量(Kb) .1.3.6.1.4.1.2021.4.3.0
スワップメモリの空き容量(Kb) .1.3.6.1.4.1.2021.4.4.0

物理メモリとスワップメモリは次のコマンドで調べる。

Solaris# snmpwalk -v 2c -c public 192.168.0.2 .1.3.6.1.4.1.2021.4.5.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1572412
                                            ↑ 物理メモリMAX値
Solaris# snmpwalk -v 2c -c public 192.168.0.2 .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 2097144
                                            ↑ スワップメモリMAX値
編集結果HTML格納先ディレクトリの作成
Solaris# mkdir /var/apache2/mrtg

「Apache」の設定

編集結果HTML格納先ディレクトリにアクセスする為に「Apache」の設定ファイルを編集する。
また、このディレクトリのアクセス権も設定する。

Solaris# vi /etc/apache2/httpd.conf <= 設定ファイルの編集

Alias /mrtg "/var/apache2/mrtg/"

アクセス権の設定の為に以下のいずれかを追加
内部からのみ許可する場合
<Location /var/apache2/mrtg>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 192.168
    Allow from ::1
</Location>

外部からも許可する場合
<Location /var/apache2/mrtg>
    Order deny,allow
    Deny from all
    Allow from all
    Allow from ::1
</Location>


Solaris# svcadm restart svc:/network/http:apache2 <= 「Apache」の再起動
「MRTG」の実行

「MRTG」は起動時に過去2回のログを使用する為、mrtg.cfgの修正後、2回目まで起動時にWARNINGが出る。
その為、mrtg.cfgの修正を行った場合、3回起動する。

Solaris# /usr/local/mrtg-2/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
インデックスページの作成
Solaris# /usr/local/mrtg-2/bin/indexmaker --columns=1 --addhead='<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp">' \
/usr/local/etc/mrtg/mrtg.cfg > /var/apache2/mrtg/index.html

ネットワークトラフィック状況監視画面

http://サーバのIPアドレス/mrtg/rtls0.html

CPU使用率監視画面

http://サーバのIPアドレス/mrtg/cpu.html

空きメモリ量監視画面

http://サーバのIPアドレス/mrtg/mem.html

ディスク使用率監視画面確認

http://サーバのIPアドレス/mrtg/disk.html

MRTGインデックス画面

http://サーバのIPアドレス/mrtg/

「MRTG」の自動実行

「MRTG」を定期的に実行する場合、cronによる実行とデーモンモードで起動して実行する方法がある。

cronによる自動実行

cronに登録して定期的に実行する。

Solaris# crontab -e <= 設定ファイルの編集
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg <= 追加(5分毎に実行)

デーモンモードで起動しての実行

デーモンモードで起動する場合、設定ファイルの編集等を行う。

「MRTG」の設定

Solaris# vi /usr/local/etc/mrtg/mrtg.cfg <= 設定ファイルの編集
RunAsDaemon:Yes <= 追加
Interval:5 <= 5分毎にデータを収集する

実行ユーザ・グループの作成

root権限で「MRTG」を実行する必要は無いので、専用のユーザ・グループを作成する。

Solaris# groupadd -g 10005 mrtg
Solaris# useradd -u 10005 -g mrtg -d /usr/local/etc/mrtg -s /bin/false mrtg

「MRTG」の実行ユーザで出力先ディレクトリに書き込めるよう、権限を変更する。

Solaris# chown -R mrtg:mrtg /var/apache2/mrtg <= 編集結果HTML格納先ディレクトリのオーナを変更
Solaris# chown -R mrtg:mrtg /usr/local/etc/mrtg <= ロックファイル作成ディレクトリのオーナを変更

起動スクリプトの作成

Solaris# vi /etc/init.d/mrtg <= 起動スクリプトの作成
#!/sbin/sh

MRTG='/usr/local/mrtg-2/bin/mrtg'
MRTG_CONF='/usr/local/etc/mrtg/mrtg.cfg'
MRTG_USER='mrtg'
MRTG_GROUP='mrtg'
MRTG_LOG='/var/apache2/mrtg/mrtg.log' 
MRTG_OPTIONS= 

PID=`/usr/bin/ps -aef | /usr/bin/grep mrtg | /usr/bin/grep -v $$ | /usr/bin/grep -v grep | /usr/bin/awk '{print $2}'`

case "$1" in
'start')
        if [ -f $MRTG ]; then
            if [ $PID ]; then
                echo "MRTG has started"
            else
                if [ -f $MRTG_CONF ]; then
                    if [ -n $MRTG_USER ]; then
                        MRTG_OPTIONS="${MRTG_OPTIONS} --user=${MRTG_USER}"
                    fi
                    if [ -n $MRTG_GROUP ]; then
                        MRTG_OPTIONS="${MRTG_OPTIONS} --group=${MRTG_GROUP}"
                    fi
                    if [ -n $MRTG_LOG ]; then
                        MRTG_OPTIONS="${MRTG_OPTIONS} --logging ${MRTG_LOG}"
                    fi
                    LANG=C $MRTG $MRTG_OPTIONS $MRTG_CONF
                    echo "Running: MRTG"
                fi
            fi
        fi
        ;;

'stop')
        if [ $PID ]; then
            kill -KILL $PID
            echo "Stopping: MRTG"
        else
            echo "MRTG has stopped"
        fi
        ;;

'restart')
        $0 stop
        sleep 3
        $0 start
        ;;

'status')
        if [ $PID ]; then
                echo "MRTG starts"
        else
                echo "MRTG stopped"
        fi
        ;;

*)
        echo "Usage: $0 { start | stop | restart | status }"
        exit 1
        ;;
esac

exit 0


Solaris# chmod 755 /etc/init.d/mrtg <= 起動スクリプトに実行権限付加
Solaris# ln /etc/init.d/mrtg /etc/rc2.d/S95mrtg <= ランレベル2で起動する
Solaris# ln /etc/init.d/mrtg /etc/rc3.d/S95mrtg <= ランレベル3で起動する
Solaris# ln /etc/init.d/mrtg /etc/rc0.d/K05mrtg <= ランレベル0で停止する

「MRTG」の起動

Solaris# /etc/init.d/mrtg start

「Net-SNMP」の設定


▲ページのトップへ