MRTGを使ったネットワーク監視技法

第7回コンフィギュレーションファイルを作る(2)

前回に引き続き、mrtg.cfgの作成方法について解説します。

cfgmakerを活用する

コンフィギュレーションファイル(mrtg.cfg)を作成する場合にはcfgmakerを使うという説明を前回しました。このときは、WorkDirの指定がないため、mrtg.cfgを手で修正しています。しかし、できれば手での修正は避けたいものです。

実は、cfgmakerには引数を使ってWorkDirなどのグローバルキーワードを指定することができます。またテンプレート機能があり、これを使うと監視対象機器ごとのキーワードの指定なども効率良く行うことができます。

今回はcfgmakerを使って、手修正のいらないmrtg.cfgを作る方法をご紹介します。

cfgmakerを使い、手修正のいらないmrtg.cfgを作る

WorkDirなどのグローバルキーワードは、引数に--globalを与えることで指定できます。なお、cfgmakerを使ったmrtg.cfgの作成は試行錯誤を繰り返しますから、シェルスクリプトにして使うことにします。(vi cfg_mrtg.sh)

スクリプト(cfg_mrtg.sh)
/usr/local/mrtg-2/bin/cfgmaker ¥
    --global "WorkDir: /usr/local/apache2/htdocs/mrtg" ¥
    --global "IconDir: /mrtg/icons/" ¥
    --global "options[_]: growright,bits" ¥
    --global "Language: eucjp" ¥
    --output="mrtg.cfg" ¥
    HIMITSU@192.168.1.208

このスクリプトでは、--globalの他に、--outputの指定があります。--outputは出力するファイルを明示する場合に使います。--outputの指定がない場合には、標準出力に出力されます。

このスクリプトに実行権限を付けたあと、実行します。

# chmod 755 cfg_mrtg.sh
# ./cfg_mrtg.sh

テンプレートを使う

mrtg.cfgにLanguage: eucjp を指定することで、"日グラフ(5分間 平均)"のように日本語が表示されるようになりますが、SystemやMaintainerなどは英語のままです。

図1 見出しに英語が使われている例
図1 見出しに英語が使われている例

これらも日本語にするためには、テンプレートを使うことで解決できます。またテンプレートを使うと、MRTGが出力する項目を細かく指定することができます。

今、cfg_mrtg.tempというファイル名で、テンプレートを作るとします。cfg_mrtg.tempは、以下のようになります。なお、筆者は直接日本語を入力するために、viの代わりにvimを使っています。

cfg_mrtg.tempテンプレート
$head_lines="";
$problem_lines="";
$target_lines="";
$separator_lines="";

if ($if_ok) {

  my( $TN ) = $target_name;

  #                                  MaxBytes, Title
  if ($TN eq "192.168.1.208_1") {SL( 1250000,  "ルータ1" )};
}

#====================================================
#
#       SL   (Set Lines)
#

sub SL
{
    my ($MaxBytes, $Title ) = @_;
    my ($bps);
    my ($MK);

    $bps = $MaxBytes * 8.0 / 1000000.0;
    if ( $bps < 1.0 ) {
        $bps = $bps * 1000;
        $MK = "Kbps";
    } else {
        $MK = "Mbps";
    }

$target_lines .= <<HTMLTEXT;
Target[$target_name]: $if_index:$router_connect
MaxBytes[$target_name]: $MaxBytes
Title[$target_name]: $Title [ $bps $MK ] $sysname : $target_name
Directory[$target_name]: $router_name
PageTop[$target_name]: <H1>$Title : $sysname : $target_name</H1>
  <div>
  <TABLE>
    <TR><TD>システム名</TD><TD>$sysname</TD></TR>
    <TR><TD>場所</TD>      <TD>$html_syslocation</TD></TR>
    <TR><TD>担当者</TD>    <TD>$html_syscontact</TD></TR>
    <TR><TD>回線速度</TD>  <TD>$bps $MK</TD></TR>
  </TABLE>
  </div>

HTMLTEXT

}

次にテンプレートを使うことをスクリプトに明記します。

スクリプト2(cfg_mrtg.sh)
/usr/local/mrtg-2/bin/cfgmaker ¥
    --global "WorkDir: /usr/local/apache2/htdocs/mrtg" ¥
    --global "IconDir: /mrtg/icons/" ¥
    --global "options[_]: growright,bits" ¥
    --global "Language: eucjp" ¥
    --if-template cfg_mrtg.temp ¥
    --output="mrtg.cfg" ¥
    HIMITSU@192.168.1.208

このスクリプトを実行すると、次のファイル(mrtg.cfg)が作成されます。

mrtg.cfg
# Created by
# /usr/local/mrtg-2/bin/cfgmaker --global "WorkDir: /usr/local/apache2/htdocs/mrtg" --global "IconDir: /mrtg/icons/" --global "options[_]: growright" --global "Language: eucjp" --subdirs=HOSTNAME --if-template cfg_mrtg.temp --output=mrtg.cfg HIMITSU@192.168.1.208


### Global Config Options

#  for UNIX
# WorkDir: /home/http/mrtg

#  or for NT
# WorkDir: c:\mrtgdata

### Global Defaults

#  to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits

EnableIPv6: no
WorkDir: /usr/local/apache2/htdocs/mrtg
IconDir: /mrtg/icons/
options[_]: growright
Language: eucjp

######################################################################
# System: mrtg.sample.jp
# Description: FreeBSD mrtg.sample.jp 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 14:37:25 UTC 2009     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
# Contact: 田村 <tamura@wind.jp>
# Location: 群馬県
######################################################################


Target[192.168.1.208_1]: 1:HIMITSU@192.168.1.208:
MaxBytes[192.168.1.208_1]: 1250000
Title[192.168.1.208_1]: ルータ1 [ 10 Mbps ] mrtg.sample.jp : 192.168.1.208_1
Directory[192.168.1.208_1]: 192.168.1.208
PageTop[192.168.1.208_1]: <H1>ルータ1 : mrtg.sample.jp : 192.168.1.208_1</H1>
  <div>
  <TABLE>
    <TR><TD>システム名</TD><TD>mrtg.sample.jp</TD></TR>
    <TR><TD>場所</TD>      <TD>群馬県</TD></TR>
    <TR><TD>担当者</TD>    <TD>田村 <tamura@wind.jp></TD></TR>
    <TR><TD>回線速度</TD>  <TD>10 Mbps</TD></TR>
  </TABLE>
  </div>

このmrtg.cfgを使って出力されるHTMLは次のようになります。"システム名"、"場所"など、日本語が表示されていることがわかります。

図2 日本語表記になった見出し
図2 日本語表記になった見出し

次回は

監視対象機器が複数になった場合の効率的なmrtg.cfgの作り方を示します。今回使ったテンプレートをベースに説明する予定です。

おすすめ記事

記事・ニュース一覧