「MRTG」の設定

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

「MRTG」のインストール
[root@Fedora ~]# yum -y install mrtg <= 「MRTG」のインストール
[root@Fedora ~]# yum clean packages <= ダウンロードしたパッケージの削除
「MRTG」の設定
[root@Fedora ~]# cfgmaker --ifref=descr --ifdesc=descr public@192.168.0.2 > /etc/mrtg/mrtg.cfg <= 設定ファイルの作成

[root@Fedora ~]# vi /etc/mrtg/mrtg.cfg <= 設定ファイルの編集
# WorkDir: /home/http/mrtg
↓
WorkDir: /var/www/mrtg <= MRTGによる編集結果HTML格納先ディレクトリ

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

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

[ ]内の部分を変更
Target[192.168.0.2_eth0]: \eth0:public@192.168.0.2:
SetEnv[192.168.0.2_eth0]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="eth0"
MaxBytes[192.168.0.2_eth0]: 12500000
Title[192.168.0.2_eth0]: eth0 -- Fedora.crimson-snow.net
PageTop[192.168.0.2_eth0]: <H1>eth0 -- Fedora.crimson-snow.net</H1>
↓
Target[eth0]: \eth0:public@192.168.0.2:
SetEnv[eth0]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="eth0"
MaxBytes[eth0]: 12500000
Title[eth0]: eth0 -- Fedora.crimson-snow.net
PageTop[eth0]: <H1>eth0 -- Fedora.crimson-snow.net</H1>

余計なものを表示させない為、以下の行を削除、またはコメントアウト
<div id="sysdetails">
  <table>
    <tr><td>System:</td>     <td>Fedora.crimson-snow.net in Home Server</td></tr>
    <tr><td>Maintainer:</td> <td>kaz <kaz@crimson-snow.net></td></tr>
    <tr><td>Description:</td><td>eth0  </td></tr>
    <tr><td>ifType:</td>     <td>ethernetCsmacd (6)</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 (crimson-snow.net)</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]: 385724 <= 物理メモリの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値の調べ方

[root@Fedora ~]# free
             total       used       free     shared    buffers     cached
Mem:        385724     374652      11072          0      99376     156820
                ↑ 物理メモリMAX値
-/+ buffers/cache:     118456     267268
Swap:      2097144        208    2096936
                ↑ スワップメモリMAX値

文字コードの変換

設定ファイルで日本語を用いているが、Fedora Coreは標準では文字コードがUTF-8に設定されている。
しかし、「MRTG」ではEUCを用いている為に日本語のページで表示した場合、 二つの文字コードが混在して文字化けしてしまう。
そこで、設定ファイルの編集が終わったら、文字コードをEUCにする。
ただし、文字コードをEUCに変更すると標準のviでは文字化けする為、設定が終了してから変換する。

[root@Fedora ~]# mv /etc/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg.utf-8 <= 設定ファイルのファイル名変更
[root@Fedora ~]# nkf -e /etc/mrtg/mrtg.cfg.utf-8 > /etc/mrtg/mrtg.cfg <= 設定ファイルの文字コード変換
アクセス権の設定
[root@Fedora ~]# vi /etc/httpd/conf.d/mrtg.conf <= 設定ファイルの編集
内部からのみ許可する場合
<Location /mrtg>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 192.168 <= 追加
    Allow from ::1
    # Allow from .example.com
</Location>

外部からも許可する場合
<Location /mrtg>
    Order deny,allow
    Deny from all
    Allow from all <= 追加
    #Allow from 127.0.0.1 <= コメントアウト
    Allow from ::1
    # Allow from .example.com
</Location>


[root@Fedora ~]# /etc/rc.d/init.d/httpd reload <= 設定の反映
「MRTG」の実行

「MRTG」は起動時に過去2回のログを使用する為、mrtg.cfgの修正後、2回目まで起動時にWARNINGが出る。
その為、mrtg.cfgの修正を行った場合、3回起動する。
また、Fedoraではデフォルトの文字コードがUTF-8の為、LANG=Cと指定して実行する。

[root@Fedora ~]# LANG=C mrtg /etc/mrtg/mrtg.cfg
インデックスページの作成
[root@Fedora ~]# indexmaker --columns=1 --addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" \
/etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

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

http://サーバのIPアドレス/mrtg/eth0.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による自動実行

Fedoraでは、デフォルトで5分毎にmrtgコマンドが実行されるように設定されているので、特に何もしない。

[root@Fedora ~]# cat /etc/cron.d/mrtg <= 設定の確認
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
 <= 上記の内容があれば問題無し

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

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

cronの設定

デフォルトで実行されるcronの設定を変更する。

[root@Fedora ~]# vi /etc/cron.d/mrtg <= 設定ファイルの編集
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
↓
#*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
 <= コメントアウト

「MRTG」の設定

[root@Fedora ~]# vi /etc/mrtg/mrtg.cfg <= 設定ファイルの編集
RunAsDaemon:Yes <= 追加
Interval:5 <= 5分毎にデータを収集する

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

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

[root@Fedora ~]# useradd mrtg <= 「MRTG」の実行ユーザを作成

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

[root@Fedora ~]# chown -R mrtg.mrtg /var/www/mrtg <= 編集結果HTML格納先ディレクトリのオーナを変更
[root@Fedora ~]# chown -R mrtg.mrtg /etc/mrtg <= ロックファイル作成ディレクトリのオーナを変更

起動スクリプト等の作成

まず/etc/sysconfig/mrtgを作成する。

[root@Fedora ~]# vi /etc/sysconfig/mrtg <= 設定ファイルの作成
以下の内容で作成
MRTG_CONFIGFILE=/etc/mrtg/mrtg.cfg
MRTG_USER=mrtg
MRTG_GROUP=mrtg
MRTG_OPTIONS=

次に/etc/rc.d/init.d/mrtgを作成する。

[root@Fedora ~]# vi /etc/rc.d/init.d/mrtg <= 起動スクリプトの作成
#!/bin/bash
#
# chkconfig: - 95 5
# description: MRTG
# processname: mrtg
# config: /etc/mrtg/mrtg.conf
# config: /etc/sysconfig/mrtg
#

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/mrtg ]; then
        . /etc/sysconfig/mrtg
fi

LANG=C

# Path to the mrtg script.
mrtg=/usr/bin/mrtg
prog=mrtg
pidfile=${PIDFILE-/etc/mrtg/mrtg.pid}
lockfile=${TEMPLOCK-/var/lock/mrtg/mrtg.lock}
RETVAL=0

start() {
        [ -f "${MRTG_CONFIGFILE}" ] || exit 6
        [[ -n "${MRTG_USER}" ]] && \
                MRTG_OPTIONS="${MRTG_OPTIONS} --user=${MRTG_USER}"
        [[ -n "${MRTG_GROUP}" ]] && \
                MRTG_OPTIONS="${MRTG_OPTIONS} --group=${MRTG_GROUP}"
        echo -n $"Starting $prog: "
        daemon --pidfile=${pidfile} $mrtg $MRTG_OPTIONS $MRTG_CONFIGFILE
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc -p ${pidfile} $mrtg
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $mrtg
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart)
        if [ -f ${pidfile} ] ; then
                stop
                start
        fi
        ;;
  *)
        echo $"Usage: $prog {start|stop|status|restart|condrestart}"
        RETVAL=3
esac

exit $RETVAL


[root@Fedora ~]# chmod 755 /etc/rc.d/init.d/mrtg <= 起動スクリプトに実行権限付加

「MRTG」の起動

[root@Fedora ~]# /etc/rc.d/init.d/mrtg start

「MRTG」の自動起動

サービスに登録して、Fedora起動時に自動的に起動するようにする。

[root@Fedora ~]# chkconfig --add mrtg
[root@Fedora ~]# chkconfig mrtg on

「Net-SNMP」の設定へ


▲ページのトップへ