mrtg インストールメモ
#---------------------------------------------------------------------------------------------
# 概要
#---------------------------------------------------------------------------------------------
snmp プロトコルにて管理エージェントのMIB 情報を取得し、解析する処理は管理マネージャーが行います。linux サーバーでのsnmp 実装は、net-snmp が有名ですが、net-snmp には簡易管理マネージャしかついていません。そこで、サーバーの情報を視覚的に監視することが可能な、mrtg を利用します。
#---------------------------------------------------------------------------------------------
# インストール方法
#---------------------------------------------------------------------------------------------
yum パッケージ管理ツールを使ってmrtg をインストールします。
# yum -y install mrtg
#---------------------------------------------------------------------------------------------
# mrtg の設定
#---------------------------------------------------------------------------------------------
mrtg の設定は/etc/mrtg/mrtg.cfg ファイル(以降設定ファイル) に記載します。 設定ファイルで使用できるパラメータには、グローバルパラメータとターゲットパラメータの2 種類あります。グローバルパラメータは、mrtg の処理や動作全体を制御するもので、ターゲットパラメータは個々のレポート、グラフを制御します。
● グローバルパラメータを設定する
Htmldir | 生成したHTML を置くディレクトリ
Imagedir | 生成したPNG 画像を置くディレクトリ
IconDir | mrtg がディフォルトで用いるアイコンを置くディレクトリ
Logdir | mrtg の実行ログを記憶するディレクトリ(ファイル名はtanalysis.log)
Language | 使用する言語の設定(日本語であればeucjp)
Refresh | レポートを更新する時間(HTML を再読み込みする時間)
● ターゲットパラメータを設定する
SetEnv[識別子] | 外部プログラムに渡す環境変数
MaxBytes[識別子] | 監視対象データの最大値
Options[識別子]: growright | グラフ横軸を 過去 → 未来 の方向に表示する
Options[識別子]: gauge | 取得したデータを前回取得したデータの差分よりグラフを生成しない
Options[識別子]: nopercent | グラフをパーセント表示しない
Options[識別子]: noo | Target で指定した2 OID をグラフでは1 つとして扱う場合
LegendI[識別子]: | グラフ下部の第1 パラメータの説明
LegendO[識別子]: | グラフ下部の第2 パラメータの説明
Legend1[識別子]: | グラフ最下部の第1 パラメータの説明
Legend2[識別子]: | グラフ最下部の第2 パラメータの説明
YLegend[識別子]: | Y 軸のラベル
ShortLegend[識別子]: | 最大値、平均値、現在値の単位
多くの設定項目が「設定項目名[識別子]」のように表記され、「識別子」で表される情報ごとにmrtg の設定項目を定義する必要があります。この識別子は、mrtg によって作成される一連のファイル群(識別子「.html」「.log」など) のファイル名に利用されます。識別子に、「_」を用いた場合、全ての識別子を指定したことになり、各識別子のディフォルト値を設定する際に利用します。
なお、監視するデータは当然snmp 経由で管理エージェントから取得することになるので、あらかじめ取得するMIB 情報にアクセスするコミュニティーを管理エージェントで作成する必要があります。
● CPU 稼動率をグラフ化する
フラグを[cpu_analysis] とし、次の記述を設定ファイルに記載します。CPU 稼動率に関するMIB 情報は
・ 1 分間平均 .1.3.6.1.4.1.2021.10.1.5.1
・ 5 分間平均 .1.3.6.1.4.1.2021.10.1.5.2
で取得できます。
Target[cpu_analysis]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:localcom@localhost
MaxBytes[cpu_analysis]: 100
Unscaled[cpu_analysis]: dwmy
Options[cpu_analysis]: gauge,absolute,nopercent,noinfo
YLegend[cpu_analysis]: CPU Load(%)
ShortLegend[cpu_analysis]: (%)
LegendI[cpu_analysis]: 1分間平均
LegendO[cpu_analysis]: 5分間平均
Legend1[cpu_analysis]: 1分間平均(%)
Legend2[cpu_analysis]: 5分間平均(%)
Title[cpu_analysis]: CPU Load
PageTop[cpu_analysis]:
CPU Load
● メモリ空き容量をグラフ化する
フラグを[mem_analysis] とし、次の記述を設定ファイルに記載します。メモリ空き容量に関するMIB 情報は
・ 実メモリ .1.3.6.1.4.1.2021.4.6.0
・ スワップメモリ .1.3.6.1.4.1.2021.4.4.0
で取得できます。
Target[mem_analysis]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:localcom@localhost
MaxBytes1[mem_analysis]: 254336
MaxBytes2[mem_analysis]: 257032
Unscaled[mem_analysis]: dwmy
Options[mem_analysis]: gauge,absolute,noinfo
YLegend[mem_analysis]: Mem Free(Bytes)
ShortLegend[mem_analysis]: Bytes
kilo[mem_analysis]: 1024
kMG[mem_analysis]: k,M,G,T,P
LegendI[mem_analysis]: Real
LegendO[mem_analysis]: Swap
Legend1[mem_analysis]: 空き物理メモリ[MBytes]
Legend2[mem_analysis]: 空きスワップメモリ[MBytes]
Title[mem_analysis]: Memory Free
PageTop[mem_analysis]: Memory Free
● ディスク使用率をグラフ化する
ディスク使用率はデフォルトのMIB 情報では/ のみが定義されています。
任意のパーティションを監視したいのであれば、snmpd.conf に監視したいパーティションを追加する必要があります。
例 ) /var、/home パーティションを監視する
disk /home [ 下限 または、% ]
disk /var [ 下限 または、% ]
上記記述を設定した場合、ディスク使用率に関するMIB 情報は
・ /home .1.3.6.1.4.1.2021.9.1.9.1
・ /var .1.3.6.1.4.1.2021.9.1.9.2
で取得できます。
Target[disk_analysis]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:localcom@localhost
MaxBytes[disk_analysis]: 100
Unscaled[disk_analysis]: dwmy
Options[disk_analysis]: gauge,absolute,nopercent,noinfo
YLegend[disk_analysis]: Disk Used (%)
ShortLegend[disk_analysis]: (%)
LegendI[disk_analysis]: /home Disk used
LegendO[disk_analysis]: /var Disk Used
Legend1[disk_analysis]: /home Disk used
Legend2[disk_analysis]: /var Disk used
Title[disk_analysis]: Disk Used
PageTop[disk_analysis]: Disk Used
#---------------------------------------------------------------------------------------------
# 閾値設定による自動監視
#---------------------------------------------------------------------------------------------
mrtg では、MIB 情報をグラフ表示するだけでなく、管理マネージャーで設定された監視対象の閾値を越えた際に、管理者にメールする機能があります。このような閾値設定による自動監視の仕組みを実装するにあたり、下記設定を設定ファイルに記述します。
● ThreshDir
mrtg の実行ユーザーが書き込み可能なディレクトリを指定します。後述するキーワード群で設定した閾値を超えた場合は、このディレクトリにmrtg.cfg.識別子.maxI のようなファイルが作成されます。
● ThreshMaxI、または ThreshMaxO
Target の第1 パラメータ、および第2 パラメータの値として認められる最大値を指定します。パラメータがこの値を上回ったときは、それぞれThreshProgI、またはThreshProgO で指定したプログラムが実行されます。
● ThreshMinI、または ThreshMinO
Target の第1 パラメータ、および第2 パラメータの値として認められる最小値を指定します。パラメータがこの値を下回ると、それぞれThreshProgI、またはThreshProgO で指定したプログラムが実行されます。
● ThreshProgI、またはThreshProgO
ThreshProgI には、ThreshMinI、またはThreshMaxI が破られたとき、ThreshProgO にはThreshMinO、またはThreshMaxO が破られたときに実行されるプログラムを指定します。そのプログラムが実行される際は、「識別子」「閾値」「現在のパラメータ値」の3 つが引数として渡されます。プログラムがPERL で作られている場合は各値は次のように取得可能です。
識別子 | $ARGV[0]
閾値 | $ARGV[1]
現在のパラメータ値 | $ARGV[2]
それ以外の要素をプログラム内で利用したければ、設定ファイル中でSetEnvに環境変数を設定し、「$ENV{'変数名'}」で参照できます。
#---------------------------------------------------------------------------------------------
# mrtg の実行
#---------------------------------------------------------------------------------------------
mrtg を実行し、設定ファイルに定義された管理エージェントのMIB 情報を集計するには、次のコマンドを実行します。
# /usr/bin/mrtg /etc/mrtg/mrtg.cfg
※ 注意 )
mrtg のレポートはDaily, Weekly, Monthly, Yearly ごとに集計されますが、そのうち、Daily グラフでは、ディフォルトで5 分間の平均転送バイト/秒 が36 時間に渡って表示されるので、mrtg レポートを更新(実行) する間隔は5 分になります。
通常、5 分おきにmrtg を実行するため、mrtg をCRON に登録します。
設定ファイルにて複数の監視を行う場合、普通にmrtg を実行しただけではHtmldir に各監視ごとのHTML ファイルを作成するのみで、インデックスファイルは作成されません。mrtg では、インデックスファイルを作成するためのツールがディフォルトで付属されています。
# indexmaker /etc/mrtg/mrtg.cfg > /home/httpd/web-root/public_html/mrtg/index.html
上記コマンドで指定されたインデックスファイルが作成されます。