*MRTG [#ifb15a02]
RIGHT:更新日&lastmod();
MRTGを使用してGWになるVineLinuxマシンのトラフィックをモニタする。
**準備 [#o4b8bc17]
準備としてはApache2をインストールして、 snmpを[[ここ:https://wwwism.dyndns.org/hp/linux/snmp.htm]]でインストールしたように設定する
snmpはnet-snmpでもよい(Vine 5.xから)
-net-snmp-devel
-net-snmp
-net-snmp-utils
をrpmでインストール
MRTGで使用するsnmpdの設定ファイルは
localhostが全ての情報が読めればよいから
/etc/snmp/snmpd.confで
##com2sec notConfigUser default public
com2sec local localhost private
####
# Second, map the security name into a group name:
# groupName securityModel securityName
##group notConfigGroup v1 notConfigUser
##group notConfigGroup v2c notConfigUser
group local_group v1 local
group local_group v2c local
group local_group usm local
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
##view systemview included .1.3.6.1.2.1.1
##view systemview included .1.3.6.1.2.1.25.1.1
view view_all included .1
####
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
##access notConfigGroup "" any noauth exact systemview none none
access local_group "" any noauth exact view_all none none
とする。
監視対象の機器に対してSNMPリクエスト(iso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifInOctets(10).I/Fポート(1)
がMRTGでは送られる。
それ以外にもzlib,libpng,GDを使用するため
zlib-devel,libpng-devel,gd,gd-devel
をrpmインストールしておく
**Download/Install [#z33302cc]
[[ここ:http://oss.oetiker.ch/mrtg/]]から mrtg-2.12.2.tar.gzをDownload
$ tar zxvf mrtg-2.12.2.tar.gz
$ cd mrtg-2.12.2
$ ./configure
(略)
----------------------------------------------------------------
Config is DONE!
Type 'make' to compile the software
... that wishlist mentioned above does really exist. So if
you feel like showing your appreciation for MRTG, this is the
place to go. I just love CDs and DVDs
-- Tobi Oetiker <tobi@oetiker.ch>
----------------------------------------------------------------
$ make
$ su
# make install
***設定ファイルの作成 [#m2f90326]
cfgmaker --output=(出力ファイル) (コミュニティ)@(ホスト)
# /usr/local/mrtg-2/bin/cfgmaker --output=/usr/local/mrtg-2/lib/mrtg.cfg private@localhost
--base: Get Device Info on private@localhost:
--base: Vendor Id:
--base: Populating confcache
--coca: populate confcache private@localhost:
--coca: store in confcache private@localhost_ Descr lo --> 1
--coca: store in confcache private@localhost_ Descr eth0 --> 2
--coca: store in confcache private@localhost_ Descr eth1 --> 3
--coca: store in confcache private@localhost_ Type 24 --> 1
--coca: store in confcache private@localhost_ Type 6 --> 2
--coca: store in confcache private@localhost_ Type 6 --> 3 (duplicate)
--coca: store in confcache private@localhost_ Ip 10.99.99.143 --> 2
--coca: store in confcache private@localhost_ Ip 127.0.0.1 --> 1
--coca: store in confcache private@localhost_ Ip 192.168.100.1 --> 3
--coca: store in confcache private@localhost_ Eth --> 1
--coca: store in confcache private@localhost_ Eth 00-0c-29-03-44-1a --> 2
--coca: store in confcache private@localhost_ Eth 00-0c-29-03-44-24 --> 3
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Walking ifMtu
--base: Walking ifSpeed
--base: Writing /usr/local/mrtg-2/lib/mrtg.cfg
# cd /usr/local/mrtg-2/lib
***mrtg.cfgを編集 [#n8adc960]
# for UNIX
# WorkDir: /home/http/mrtg
WorkDir: /usr/local/apache2054/htdocs/mrtg <--変更(グローバル変数)
(略)
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
EnableIPv6: no
Language: eucjp <--追加(グローバル変数)
IconDir: /mrtg/icons/ <--追加(グローバル変数)
######################################################################
(IPアドレス,インターフェイスを変更した場合は以下を修正できるはず。iptableを
INPUTでsnmpをDROPさせてしまう設定をし確認とれず。snmpを再起動の必要があるかも)
### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '192.168.101.1' | Eth: '00- 03\-99-88-d4-27' ###
Target[localhost_2]: 2:private@localhost:
SetEnv[localhost_2]: MRTG_INT_IP="192.168.101.1" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_2]: 1250000 <--(注1)
[MaxBytes1[localhost_2]: 1250000 <--(注2)
[MaxBytes2[localhost_2]: 125000 <--(注2)
(省略)
<tr>
<td>Ip:</td>
<td>192.168.101.1 ()</td>
</tr>
(注1)
通常このインタフェースポートが通信できる最大値を1秒当たりのバイト数で記述する。
返された値がもしMaxBytesよりも大きい場合はその値は無視される
(注2)値が2つある場合はMaxBytes1,2のようにするとそれぞれのMaxBytesが設定できる。
転送スピードの場合は1が受信2が送信になり、表示グラフの%の値がこれをベースに
表示される。
***mrtgのフォルダ作成と画像のコピー [#i5346fe8]
# mkdir -p /usr/local/apache2054/htdocs/mrtg/icons
# cp /usr/local/mrtg-2/share/mrtg2/icons/*.png /usr/local/apache2054/htdocs/ mrtg/icons/
**起動/運用 [#ed2775d3]
1回,2回はlogがないためエラーするが、3回目にはうまく動作する。
[1回目]
# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg
[LANGの環境変数を変更しているときは(UTF-8にしている時等)
# env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg
で起動する]
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for localhost_2
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for localhost_2 was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_2.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename localhost_2.log to localhost_2.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for localhost_3
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for localhost_3 was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_3.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename localhost_3.log to localhost_3.old updating log file
[2回目]
# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_2.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove localhost_3.old updating log file
[3回目]
# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg
***アクセス [#vc878a57]
http://10.99.99.143/mrtg/localhost_2.html
***cronで5分ごとにデータを収集 [#ffe06baa]
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/mrtg.cfg
LAN側についてはhttp://(サーバ名)/mrtg/localhost_2.html
WAN側についてはhttp://(サーバ名)/mrtg/localhost_3.html
でアクセスする
snmpで実行されるごとに以下のようなsyslogをはきだす
Jan 12 18:04:18 minipc last message repeated 4 times
これを回避するには
/etc/rc.d/init.d/snmpd のファイルを開き、OPTIONSを次のように変更
&color(red){ucd-snmp};では
変更前:OPTIONS="-s -l /dev/null -P /var/run/snmpd -a"
変更後:OPTIONS="-l /dev/null -P /var/run/snmpd -a"
&color(red){net-snmp};では
変更前:OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd -a"
変更後:OPTIONS="-Le -Lf /dev/null -p /var/run/snmpd -a"
''オプション表示''
# /usr/sbin/snmpd --help
(略)
L <LOGOPTS> toggle options controlling where to log to
e: log to standard error
o: log to standard output
n: don't log at all
f file: log to the specified file
s facility: log to syslog (via the specified facility)
**トラフィック以外のモニタ [#ke10024b]
/usr/local/mrtg-2/lib/mrtg.cfgに以下のように追加
***CPUのロードアベレージ [#u21b1f0f]
#-----------------------------------------------------------------
# CPUのロードアベレージ
#-----------------------------------------------------------------
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:private@local
host:
##SetEnv[cpu]: URL="http://localhost/mrtg/cpu.html" <--表示するWebページを指 定??
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy <--データに合わせて拡大縮小しない
Options[cpu]: gauge, absolute, noinfo, nopercent <--パラメータについてを参照
YLegend[cpu]: CPU Load(%) <--Y軸の軸の名前(ラベル)を指定
ShortLegend[cpu]: (%) <--単位の表示
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%) <--ページの下の方のラベル
Legend2[cpu]: 5分間平均(%) <--ページの下の方のラベル
Title[cpu]: CPU使用率 SNMP + MRTG
PageTop[cpu]: <H1>CPU使用率 SNMP + MRTG</H1>
&color(red){Target[cpu]のような指定は 統計情報名が cpuとなりこの名前がhtmlファイルの名前になる cpu.html};
''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
15分 : .1.3.6.1.4.1.2021.10.1.5.3
***ディスク使用状況 [#h6d8e3cc]
HDDについては/etc/snmp/snmpd.confに以下用にパーティションを追加
disk / 10000 <---.1.3.6.1.4.1.2021.9.1.9.1
disk /boot 1000 <---.1.3.6.1.4.1.2021.9.1.9.2
#-----------------------------------------------------------------
# ディスク使用状況
#-----------------------------------------------------------------
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:private@localhost:
##SetEnv[disk]: URL="http://localhost/mrtg/disk.html"
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: /boot Disk Used
Title[disk]: ディスク使用率 NET-SNMP + MRTG
PageTop[disk]: <H1>ディスク使用率 NET-SNMP + MRTG</H1>
***メモリ使用状況 [#v8644e6a]
#-----------------------------------------------------------------
# メモリ使用状況(グラフ化するのは実メモリおよびスワップの空き領域)
# MaxByteには実験機の総スワップ量を指定
#-----------------------------------------------------------------
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@localhost:
##SetEnv[mem]: URL="http://localhost/mrtg/mem.html"
MaxBytes1[mem]: 384944 <-- 実メモリ(TOPコマンドで調べる)
MaxBytes2[mem]: 530136 <-- SWAPメモリ
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024 <-- kiloがデフォルトで1000
kMG[mem]: k,M,G,T,P <-- スケールの単位(K,M,G,T,P)を正しく表示させる
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量 NET-SNMP + MRTG
PageTop[mem]: <H1>空きメモリ量 SNMP + MRTG</H1>
''パラメータについて''
Options:
growright -> 現在の時間をグラフの右側に設定する。
gauge -> 取得したデータの値を前回の値との差分を計算せずそのまま使用する。
(ディスク容量やメモリ使用率のグラフに使用)
absolute -> 取得したデータの値を前回の値との差分を計算せずそのまま使用
する。gaugeとは異なり、データを計測時間間隔で割ったものを
使用したい場合に指定する。
noinfo -> 出力するページにデバイス名や時刻情報を出力しない
bits -> 縦軸の値をbitsとして扱う
dorelpercent-> 百分率にしたグラフ[(第1data/第2data)x100]を線として追加する
unknaszero -> データ取得できなかった値を0として扱う
withzeroes -> 通常0である値は無視されますが、このオプションを指定するこ
とでデータを無視しない
**外部プログラム(hddtemp)でHDDの温度のモニタ [#zbb41fa5]
以下のような温度モニタ起動シェルを作成
/usr/local/mrtg-2/bin/hddtemp.sh
#!/bin/sh
hddtemp=`/usr/local/sbin/hddtemp -n /dev/hda`
echo $hddtemp
echo $hddtemp
uptime | awk '{print $3 $4}'
echo uso5001
''温度用のMRTGの設定ファイルを作成''
/usr/local/mrtg-2/lib/hddtemp.cfg
Language: eucjp
IconDir: /mrtg/icons/
EnableIPv6: no
Refresh: 300
WorkDir: /home/okada/public_html/hddtemp <--データが格納されるディレクトリ
#-----------------------------------------------------------------
# HDD温度状況
#-----------------------------------------------------------------
Target[hddtemp]: `/usr/local/mrtg-2/bin/hddtemp.sh`
##SetEnv[hddtemp]: URL="http://localhost/mrtg/hddtemp.html"
MaxBytes[hddtemp]: 100
Unscaled[hddtemp]: dwmy
Options[hddtemp]: gauge
YLegend[hddtemp]: Temp (Celsius)
ShortLegend[hddtemp]:°
##kilo[hddtemp]: 1024
##kMG[hddtemp]: k,M,G,T,P
LegendI[hddtemp]: HDD温度
LegendO[hddtemp]: HDD温度
Legend1[hddtemp]: HDD温度[℃]
Legend2[hddtemp]: HDD温度[℃]
Title[hddtemp]: HDD温度 hddtemp + MRTG
PageTop[hddtemp]: <H1> HDD温度 hddtemp + MRTG</H1>
***cronで5分ごとにデータを収集 [#t2be9a00]
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/lib/hddtemp.cfg
***CPU Core温度 (i3) [#s6438155]
#-----------------------------------------------------------------
# CPU(Core 0,1)温度状況
#-----------------------------------------------------------------
Target[cputemp]: `/usr/bin/sensors | egrep "Core 0:|Core 1:" | awk '{print $3}' | sed -e 's/+//' -e 's/[^0-9+\.].*//'`
MaxBytes[cputemp]: 100
Title[cputemp]: Core 0, Core 1 温度状況
PageTop[cputemp]: <h1>CPU(Core0, Core1)の温度</h1>
Options[cputemp]: absolute,gauge,nopercent,noinfo
#WithPeak[cputemp]: ymw
unscaled[cputemp]: dwmy
YLegend[cputemp]: Temperature
ShortLegend[cputemp]: C
LegendI[cputemp]: Core 0
LegendO[cputemp]: Core 1
Legend1[cputemp]: Core 0
Legend2[cputemp]: Core 1
**インターフェイスの様子 [#l1118984]
# snmpwalk localhost private interface
interfaces.ifNumber.0 = 3 <--ポートは全部で3つ
interfaces.ifTable.ifEntry.ifIndex.1 = 1
interfaces.ifTable.ifEntry.ifIndex.2 = 2
interfaces.ifTable.ifEntry.ifIndex.3 = 3
interfaces.ifTable.ifEntry.ifDescr.1 = lo
interfaces.ifTable.ifEntry.ifDescr.2 = eth0 <--インデックス番号2がイーサポート
interfaces.ifTable.ifEntry.ifDescr.3 = eth1
interfaces.ifTable.ifEntry.ifType.1 = softwareLoopback(24)
interfaces.ifTable.ifEntry.ifType.2 = ethernetCsmacd(6) <--これがMRTGのTYPEに表示される。
interfaces.ifTable.ifEntry.ifType.3 = ethernetCsmacd(6)
interfaces.ifTable.ifEntry.ifMtu.1 = 16436
interfaces.ifTable.ifEntry.ifMtu.2 = 1500 <--MTU
interfaces.ifTable.ifEntry.ifMtu.3 = 1500
interfaces.ifTable.ifEntry.ifSpeed.1 = Gauge32: 10000000
interfaces.ifTable.ifEntry.ifSpeed.2 = Gauge32: 10000000 <--速度は10Mbps
interfaces.ifTable.ifEntry.ifSpeed.3 = Gauge32: 10000000
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
interfaces.ifTable.ifEntry.ifPhysAddress.2 = 0:c:29:3:44:1a <--MACアドレス
interfaces.ifTable.ifEntry.ifPhysAddress.3 = 0:c:29:3:44:24
(略)
***メモリの状態情報 [#j8d08c8c]
# snmpget localhost private .1.3.6.1.4.1.2021.4.4.0
enterprises.ucdavis.memory.memAvailSwap.0 = 530136 <--SWAPが530136kフリー
# snmpget localhost private .1.3.6.1.4.1.2021.4.6.0
enterprises.ucdavis.memory.memAvailReal.0 = 130968 <--物理メモリが130968kフリー
**net-snmpの場合は以下のようなコマンドで情報を得る。 [#zb38031e]
$ rpm -qa | grep snmp
net-snmp-5.2.1.2-0vl1
net-snmp-devel-5.2.1.2-0vl1
net-snmp-utils-5.2.1.2-0vl1
$ snmpget -v 2c -c private localhost .1.3.6.1.4.1.2021.4.6.0
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 31136
**参考 [#t91dc20c]
MRTGマニュアル
--------------------------------------------------------------------------------
RIGHT:[[元ページ:https://wwwism.dyndns.org/hp/linux/mrtg.htm]]