2005年1月 3日

【MRTG でメモリ使用量を監視】


MRTG のコンフィグファイルに以下を追加する。

Target[--.--.--.--_mem]: `/path/to/meminfo.sh`
MaxBytes1[--.--.--.--_mem]: 393216
MaxBytes2[--.--.--.--_mem]: 786432
Title[--.--.--.--_mem]: Memory Usage
PageTop[--.--.--.--_mem]: <H1>Memory Usage</H1>
Options[--.--.--.--_mem]: gauge,absolute,growright
YLegend[--.--.--.--_mem]: Size in Use
ShortLegend[--.--.--.--_mem]: Bytes
Legend1[--.--.--.--_mem]: Real Memory
Legend2[--.--.--.--_mem]: Swap Memory
LegendI[--.--.--.--_mem]: Real
LegendO[--.--.--.--_mem]: Swap
kilo[--.--.--.--_mem]: 1024

赤字の部分は環境に合わせて変更してください。MaxBytes1 には搭載物理メモリのサイズを KBytes 単位で。MaxBytes2 にはスワップサイズを KBytes 単位で指定する(1 KBytes は 1024 Bytes 換算)。
で、次にここから呼び出される meminfo.sh です。

# snmpwalk localhost public enterprises.ucdavis.memory

してもらうと分かると思いますが、snmp では空きメモリサイズは教えてくれますが、使用中メモリサイズは教えてくれません。そこで、mrtg からスクリプトを呼び出し、そのスクリプト中で "総メモリサイズ - 空きメモリサイズ"を実行して使用中メモリサイズを算出してやります。以下がそれを行うスクリプトです。

#!/bin/sh

swaptotal=`/usr/local/bin/snmpget -O v localhost public .1.3.6.1.4.1.2021.4.3.0`
swapavail=`/usr/local/bin/snmpget -O v localhost public .1.3.6.1.4.1.2021.4.4.0`
memtotal=`/usr/local/bin/snmpget -O v localhost public .1.3.6.1.4.1.2021.4.5.0`
memavail=`/usr/local/bin/snmpget -O v localhost public .1.3.6.1.4.1.2021.4.6.0`
hostname=`/usr/local/bin/snmpget -O v localhost public .1.3.6.1.2.1.1.5.0`

/bin/expr $memtotal - $memavail
/bin/expr $swaptotal - $swapavail
echo
echo $hostname

exit 0

このスクリプトをどこかに配置し、実行権限を付与し、その場所を mrtg のコンフィグファイルに設定してやれば OK です。
で、以下は mrtg を 5 分置きに実行する crontab エントリです。

*/5 * * * * /usr/local/bin/mrtg /path/to/mrtg.cfg



トラックバック

このエントリーのトラックバックURL:
http://www.nomadic.jp/admin/MT/mt-tb.cgi/448

コメントを投稿

コメント: (スタイル用のHTMLタグが使えます)